/*public function geraNFe(Request $request, $id){ $this->id = $id; $acumulador = 0.00; $verificar_agrupamento = 0; $valor_desconto = 0.00; $atualizar_numero_nfe_usuario = DB::table('reman709_argon_matriz.model_endereco_usuarios') ->where('id', '=', auth()->user()->id_endereco_fk) ->first(); $corrigir = new Caracteres; $dir = "../vendor/nfephp-org/"; $dir2 = "NFE/" . auth()->user()->empresa . '/vendas'; $dir4 = "NFE/" . auth()->user()->empresa . '/processamento'; $dir5 = "NFE/" . auth()->user()->empresa . '/inutilizada'; $dir6 = "NFE/" . auth()->user()->empresa . '/rejeicao'; //Buscando os pedidos para o laço For separado das formas de pagamento $buscar_credenciadora = DB::table('reman709_argon_matriz.model_usuario_model_credenciadora') ->join('reman709_argon_matriz.model_credenciadora', 'model_credenciadora.id', '=', 'model_usuario_model_credenciadora.id_credenciadora_fk') ->join('reman709_argon_matriz.model_endereco_usuarios', 'model_endereco_usuarios.id', '=', 'model_usuario_model_credenciadora.id_endereco_usuario_fk') ->select('cnpj_credenciadora') ->first(); $produto_pedido = DB::table('model_pedidos') ->join('model_pedido_produtos', 'model_pedidos.id', '=', 'model_pedido_produtos.model_pedido_id') ->join('reman709_argon_matriz.model_produtos', 'model_pedido_produtos.produto_id_fk', '=', 'model_produtos.id') ->join('reman709_argon_matriz.model_produto_fiscais', 'model_pedido_produtos.produto_id_fk', '=', 'model_produto_fiscais.id') ->join('reman709_argon_matriz.model_marca_produtos', 'model_produtos.id_marca_produto_fk', '=', 'model_marca_produtos.id_marca_produto') ->whereIn('model_pedido_id', explode(',', $this->id)) ->where('model_pedido_produtos.status_pedido_produto', '=', 'PA') ->select( 'produto_id_fk', 'nome_produto', 'ncm', 'csosn', 'cest', 'cnpj_fabricante', 'cfop', 'unidade_produto', 'quantidade_produto', 'valor_unitario_produto', 'valor_pedido_produto', 'valor_dinheiro_pedido', 'desconto_pedido_produto', 'nome_marca_produto' )->get(); $somar_cfop = DB::table('model_pedidos') ->join('model_pedido_produtos', 'model_pedidos.id', '=', 'model_pedido_produtos.model_pedido_id') ->join('reman709_argon_matriz.model_produtos', 'model_pedido_produtos.produto_id_fk', '=', 'model_produtos.id') ->join('reman709_argon_matriz.model_produto_fiscais', 'model_pedido_produtos.produto_id_fk', '=', 'model_produto_fiscais.id') ->whereIn('model_pedido_id', explode(',', $this->id)) ->where('model_produto_fiscais.cfop', '=', '5102') ->where('model_pedido_produtos.status_pedido_produto', '=', 'PA') ->select( DB::raw('SUM(valor_unitario_produto * quantidade_produto) * 0.0343 as taxa_obs'), DB::raw('COUNT(quantidade_produto) as quantidade_cfop') )->first(); $usuario_pedido = DB::table('model_pedidos') ->join('reman709_argon_matriz.users', 'model_pedidos.user_id_fk', '=', 'users.id') ->join('reman709_argon_matriz.model_endereco_usuarios', 'users.id_endereco_fk', '=', 'model_endereco_usuarios.id') ->whereIn('model_pedidos.id', explode(',', $this->id)) ->select( 'nome_empresa_usuario', 'inscricao_estadual_usuario', 'nome_fantasia_usuario', 'inscricao_municipal_usuario', 'cnpj_usuario', 'logradouro_usuario', 'numero_logradouro_usuario', 'bairro_usuario', 'codigo_municipio_usuario', 'nome_municipio_usuario', 'uf_usuario', 'cUF_usuario', 'cep_usuario', 'fone_usuario', 'certificado_digital_usuario', 'certificado_senha_usuario', 'numero_nfe_usuario' )->first(); $cliente_pedido = DB::table('model_pedidos') ->join('model_contas_receber', 'model_pedidos.id', '=', 'model_contas_receber.id_pedido_fk') ->join('reman709_argon_matriz.model_reman_clientes', 'model_reman_clientes.id', '=', 'model_contas_receber.id_cliente_fk') ->where('model_contas_receber.id_pedido_fk', '=', $this->id) ->select( 'pessoa_cliente', 'cnpj_cpf_cliente', 'ie_cliente', 'razao_cliente', 'cep_cliente', 'rua_cliente', 'casa_cliente', 'bairro_cliente', 'cidade_cliente', 'codigo_municipio_cliente', 'uf_cliente', 'cUF_cliente', 'telefone_cliente' )->first(); $pagamento_pedido = DB::table('model_contas_receber') ->where('model_contas_receber.id_pedido_fk', '=', $this->id) ->where('model_contas_receber.id_tipo_pagamento_fk', '!=', 12) ->select( 'model_contas_receber.id_tipo_pagamento_fk', 'model_contas_receber.bandeira_cartao_credito', 'model_contas_receber.bandeira_cartao_debito', 'valor_receber' )->get(); $x = 0; $tipo_pagamento = 0; $nfe = new Make(); $stdInNFe = new stdClass(); $stdInNFe->versao = "4.00"; $stdInNFe->pk_nItem = ""; $infNFe = $nfe->taginfNFe($stdInNFe); $stdIde = new stdClass(); $stdIde->cUF = intVal($usuario_pedido->cUF_usuario); $stdIde->cNF = null; $stdIde->natOp = "VENDA DE MERCADORIAS SIMPLES NACIONAL"; $stdIde->mod = 55; $stdIde->serie = 1; $stdIde->nNF = intVal($usuario_pedido->numero_nfe_usuario) + 1; $stdIde->dhEmi = date("Y-m-d\TH:i:sP"); $stdIde->dhSaiEnt = date("Y-m-d\TH:i:sP"); $stdIde->tpNF = 1; if($cliente_pedido->uf_cliente == "SP"){ $stdIde->idDest = 1; }else{ $stdIde->idDest = 2; } $stdIde->cMunFG = $corrigir->retiraCaracteres($usuario_pedido->codigo_municipio_usuario); //Será gerada de acordo com o n° do municipio $stdIde->tpImp = 1; $stdIde->tpEmis = 1; $stdIde->cDV = null; $stdIde->tpAmb = 1; //homologação = 2 e produção = 1 $stdIde->finNFe = 1; $stdIde->indFinal = 1; $stdIde->indPres = 0; $stdIde->procEmi = 0; $stdIde->verProc = "1"; $stdIde->dhCont = null; $stdIde->xJust = null; $tagide = $nfe->tagide($stdIde); $stdEmit = new stdClass(); $stdEmit->xNome = $usuario_pedido->nome_empresa_usuario; $stdEmit->IE = $corrigir->retiraCaracteres($usuario_pedido->inscricao_estadual_usuario); $stdEmit->xFant = $usuario_pedido->nome_fantasia_usuario; $stdEmit->CRT = "1"; $stdEmit->CNPJ = $corrigir->retiraCaracteres($usuario_pedido->cnpj_usuario); $emit = $nfe->tagemit($stdEmit); $stdEnderEmit = new stdClass(); $stdEnderEmit->xLgr = $usuario_pedido->logradouro_usuario; $stdEnderEmit->nro = $usuario_pedido->numero_logradouro_usuario; $stdEnderEmit->xBairro = $usuario_pedido->bairro_usuario; $stdEnderEmit->cMun = $corrigir->retiraCaracteres($usuario_pedido->codigo_municipio_usuario); $stdEnderEmit->xMun = $usuario_pedido->nome_municipio_usuario; $stdEnderEmit->UF = $usuario_pedido->uf_usuario; $stdEnderEmit->CEP = $corrigir->retiraCaracteres($usuario_pedido->cep_usuario); $stdEnderEmit->cPais = "1058"; $stdEnderEmit->xPais = "BRASIL"; $stdEnderEmit->fone = $corrigir->retiraCaracteres($usuario_pedido->fone_usuario); $EnderEmit = $nfe->tagenderEmit($stdEnderEmit); $stdDest = new stdClass(); $stdDest->xNome = str_replace('&', '&', $cliente_pedido->razao_cliente); if ($cliente_pedido->ie_cliente != 'ISENTO' && $cliente_pedido->ie_cliente != NULL) { $stdDest->indIEDest = "1"; $stdDest->IE = $corrigir->retiraCaracteres($cliente_pedido->ie_cliente); } else if ($cliente_pedido->ie_cliente == 'ISENTO') { $stdDest->indIEDest = "2"; } else if ($cliente_pedido->ie_cliente == NULL) { $stdDest->indIEDest = "9"; } /*Verificando se o clinete possuí CPF ou CNPJ*/ strlen($corrigir->retiraCaracteres($cliente_pedido->cnpj_cpf_cliente)) > 11 ? $stdDest->CNPJ = $cliente_pedido->cnpj_cpf_cliente : $stdDest->CPF = $cliente_pedido->cnpj_cpf_cliente; $dest = $nfe->tagdest($stdDest); $stdEnderDest = new stdClass(); $stdEnderDest->xLgr = $cliente_pedido->rua_cliente; if(!empty($cliente_pedido->casa_cliente) || $cliente_pedido->casa_cliente != 0){ $stdEnderDest->nro = $cliente_pedido->casa_cliente; }else{ $stdEnderDest->nro = 's/n'; } $stdEnderDest->xBairro = $cliente_pedido->bairro_cliente; $stdEnderDest->cMun = $corrigir->retiraCaracteres($cliente_pedido->codigo_municipio_cliente); $stdEnderDest->xMun = $cliente_pedido->cidade_cliente; $stdEnderDest->UF = $cliente_pedido->uf_cliente; $stdEnderDest->CEP = $corrigir->retiraCaracteres($cliente_pedido->cep_cliente); $stdEnderDest->cPais = "1058"; $stdEnderDest->xPais = "BRASIL"; $stdEnderDest->fone = strlen($corrigir->retiraCaracteres($cliente_pedido->telefone_cliente)) >= 8 ? $corrigir->retiraCaracteres($cliente_pedido->telefone_cliente) : null; $enderDest = $nfe->tagenderDest($stdEnderDest); foreach ($produto_pedido as $produto) { $x++; $stdProd = new stdClass(); $stdProd->item = $x; $stdProd->cEAN = "SEM GTIN"; $stdProd->cEANTrib = "SEM GTIN"; $stdProd->cProd = $produto->produto_id_fk; $stdProd->xProd = $produto->nome_produto; $stdProd->cBenef = ''; $stdProd->NCM = $produto->ncm; //Verificando o tipo de CFOP if ($cliente_pedido->uf_cliente == 'SP' && $produto->cfop == 5102) { $stdProd->CFOP = 5102; } else if ($cliente_pedido->uf_cliente != 'SP' && $produto->cfop == 5102) { $stdProd->CFOP = 6102; } else if ($cliente_pedido->uf_cliente == 'SP' && $produto->cfop == 5405) { $stdProd->CFOP = 5405; } else if ($cliente_pedido->uf_cliente != 'SP' && $produto->cfop == 5405) { $stdProd->CFOP = 6405; } $stdProd->uCom = $produto->unidade_produto; $stdProd->qCom = $produto->quantidade_produto; $stdProd->vUnCom = $produto->valor_unitario_produto; $stdProd->uTrib = $produto->unidade_produto; $stdProd->qTrib = $produto->quantidade_produto; $stdProd->vUnTrib = $produto->valor_unitario_produto; $stdProd->vProd = $this->format($stdProd->qTrib * $stdProd->vUnTrib); /*Os valores abaixo foram passados com "0.00" no vídeo do youtube*/ if ($x === 1 && $request->get('frete_transportadora') > 0.00) { $stdProd->vFrete = floatVal($request->get('frete_transportadora')); } else { $stdProd->vFrete = ""; } //Verificando o CSOSN if ($produto->csosn == "500") { $stdCest = new stdClass(); $stdCest->item = $x; $stdCest->CEST = $produto->cest; $stdCest->indEscala = 'N'; $stdCest->CNPJFab = $corrigir->retiraCaracteres($produto->cnpj_fabricante); $cest = $nfe->tagCEST($stdCest); } $stdProd->vSeg = ""; $stdProd->vDesc = $produto->desconto_pedido_produto > 0.00 ? $produto->desconto_pedido_produto : null; $stdProd->vOutro = ""; $stdProd->indTot = 1; $prod = $nfe->tagprod($stdProd); //somando o valor dos descontos $valor_desconto += $produto->desconto_pedido_produto; $stdAdicional = new stdClass(); $stdAdicional->item = $x; $stdAdicional->infAdProd = "-"; $indAdProd = $nfe->taginfAdProd($stdAdicional); $stdImposto = new stdClass(); $stdImposto->item = $x; $stdImposto->vTotTrib = 0; $imposto = $nfe->tagimposto($stdImposto); $stdICMSSN = new stdClass(); $stdICMSSN->item = $x; $stdICMSSN->orig = 0; if ($cliente_pedido->ie_cliente != NULL) { $stdICMSSN->CSOSN = $produto->csosn; } else { $stdICMSSN->CSOSN = 300; } $stdICMSSN->pCredSN = 0.00; $stdICMSSN->vCredICMSSN = 0.00; $stdICMSSN->modBCST = null; $stdICMSSN->pMVAST = null; $stdICMSSN->pRedBCST = "0"; $stdICMSSN->vBCST = $this->format(0.01); $stdICMSSN->pICMSST = null; $stdICMSSN->vICMSST = null; $stdICMSSN->vBCFCPST = null; $stdICMSSN->pFCPST = null; $stdICMSSN->vFCPST = null; $stdICMSSN->vBCSTRet = null; $stdICMSSN->pST = null; $stdICMSSN->vICMSSTRet = null; $stdICMSSN->vBCFCPSTRet = null; $stdICMSSN->pFCPSTRet = null; $stdICMSSN->vFCPSTRet = null; $stdICMSSN->modBC = "0"; $stdICMSSN->vBC = $this->format($stdProd->vProd); $stdICMSSN->pRedBC = null; $stdICMSSN->pICMS = null; $stdICMSSN->vICMS = $this->format($stdICMSSN->vBC * ($stdICMSSN->pICMS / 100)); $stdICMSSN->pRedBCEfet = null; $stdICMSSN->vBCEfet = null; $stdICMSSN->pICMSEfet = null; $stdICMSSN->vICMSEfet = null; $stdICMSSN->vICMSSubstituto = null; $ICMSSN = $nfe->tagICMSSN($stdICMSSN); $stdPIS = new stdClass(); $stdPIS->item = $x; $stdPIS->CST = "50"; $stdPIS->vBC = $this->format($stdProd->vProd); $stdPIS->pPIS = 0.00; $stdPIS->vPIS = $this->format($stdPIS->vBC * ($stdPIS->pPIS / 100)); $PIS = $nfe->tagPIS($stdPIS); $stdCOFINS = new stdClass(); $stdCOFINS->item = $x; $stdCOFINS->CST = "50"; $stdCOFINS->vBC = $stdProd->vProd; $stdCOFINS->pCOFINS = 0.00; $stdCOFINS->vCOFINS = $this->format($stdCOFINS->vBC * ($stdCOFINS->pCOFINS / 100)); $COFINS = $nfe->tagCOFINS($stdCOFINS); /*$stdICMS=new stdClass(); $stdICMS->item=1; $stdICMS->orig=0; $stdICMS->CST="00"; $stdICMS->modBC="0"; $stdICMS->vBC=$this->format($stdProd->vProd); $stdICMS->pICMS=0.00; $stdICMS->vICMS=$this->format($stdICMS->vBC * ($stdICMS->pICMS / 100)); $ICMS=$nfe->tagICMS($stdICMS);*/ } $stdTransp = new stdClass(); if($request->get('radio_utilizar_transportadora') == 'sim'){ if ($request->get('select_transportadora_sim') == 0) { $stdTransp->modFrete = 0; } else if ($request->get('select_transportadora_sim') == 1) { $stdTransp->modFrete = 1; } else if ($request->get('select_transportadora_sim') == 2) { $stdTransp->modFrete = 2; } }else if($request->get('radio_utilizar_transportadora') == 'nao'){ if ($request->get('select_transportadora_nao') == 3) { $stdTransp->modFrete = 3; } else if ($request->get('select_transportadora_nao') == 4) { $stdTransp->modFrete = 4; } else if ($request->get('select_transportadora_nao') == 9) { $stdTransp->modFrete = 9; } } $transp = $nfe->tagtransp($stdTransp); if($request->get('radio_utilizar_transportadora') == 'sim'){ $stdVol = new stdClass(); $stdVol->item = $x; $stdVol->qVol = intVal($request->get('quantidade_transportadora')); $stdVol->esp = $request->get('especie_transportadora'); $stdVol->marca = null; $stdVol->nVol = intVal($request->get('quantidade_transportadora')); $stdVol->pesoL = floatVal($request->get('peso_liquido_transportadora')); $stdVol->pesoB = floatVal($request->get('peso_bruto_transportadora')); $vol = $nfe->tagvol($stdVol); $stdTransp = new stdClass(); $stdTransp->xNome = $request->get('nome_transportadora'); $stdTransp->IE = $request->get('ie_transportadora'); $stdTransp->xEnder = $request->get('endereco_transportadora'); $stdTransp->xMun = $request->get('municipio_transportadora'); $stdTransp->UF = $request->get('estado_transportadora'); $stdTransp->CNPJ = $request->get('cnpj_transportadora'); $stdTransp->CPF = null; $transportadora = $nfe->tagtransporta($stdTransp); } /* if ($valor_desconto != 0.00) { $stdPag = new stdClass(); $stdPag->vTroco = $valor_desconto; $pag = $nfe->tagpag($stdPag); } else {*/ $stdPag = new stdClass(); $stdPag->vTroco = ""; $pag = $nfe->tagpag($stdPag); /*}*/ foreach($pagamento_pedido as $pagamento){ if ($pagamento->id_tipo_pagamento_fk == 1 || $pagamento->id_tipo_pagamento_fk == 9) { $tipo_pagamento = '01'; } else if ($pagamento->id_tipo_pagamento_fk == 2 || $pagamento->id_tipo_pagamento_fk == 3) { $tipo_pagamento = '02'; } else if ($pagamento->id_tipo_pagamento_fk == 5) { $tipo_pagamento = '03'; } else if ($pagamento->id_tipo_pagamento_fk == 6) { $tipo_pagamento = '04'; } else if ($pagamento->id_tipo_pagamento_fk == 11) { $tipo_pagamento = '15'; } else { $tipo_pagamento = '99'; } //Determinando se a forma de pagamento foi em cartão $stdDetPag = new stdClass(); $stdDetPag->tPag = $tipo_pagamento; $stdDetPag->vPag = $pagamento->valor_receber; if ($tipo_pagamento == '03') { $stdDetPag->CNPJ = $buscar_credenciadora->cnpj_credenciadora; $stdDetPag->tBand = $pagamento->bandeira_cartao_credito; $stdDetPag->cAut = $request->get('codigo_autorizadora_credito'); $stdDetPag->tpIntegra = 1; $detPag = $nfe->tagdetPag($stdDetPag); } else if ($tipo_pagamento == '04') { $stdDetPag->CNPJ = $buscar_credenciadora->cnpj_credenciadora; $stdDetPag->tBand = $pagamento->bandeira_cartao_debito; $stdDetPag->cAut = $request->get('codigo_autorizadora_debito'); $stdDetPag->tpIntegra = 1; } if ($tipo_pagamento == '01' || $tipo_pagamento == '04') { $stdDetPag->indPag = 0; } else { $stdDetPag->indPag = 1; } //Usado somente para contas parceladas if ($tipo_pagamento == '15') { $pesquisar_conta_receber = DB::table('model_contas_receber') ->join('model_contas_receber_parcelado', 'model_contas_receber.id', '=', 'model_contas_receber_parcelado.id_contas_receber_fk') ->where('model_contas_receber.id_pedido_fk', $this->id) ->where('model_contas_receber.id_tipo_pagamento_fk', '=', 11) ->select('model_contas_receber.id') ->first(); $conta_receber_cliente = DB::table('model_contas_receber') ->join('model_contas_receber_parcelado', 'model_contas_receber.id', '=', 'model_contas_receber_parcelado.id_contas_receber_fk') ->where('model_contas_receber.id', '=', $pesquisar_conta_receber->id) ->get(); $valor_total_conta = DB::table('model_contas_receber') ->join('model_contas_receber_parcelado', 'model_contas_receber.id', '=', 'model_contas_receber_parcelado.id_contas_receber_fk') ->where('model_contas_receber.id', '=', $pesquisar_conta_receber->id) ->sum('valor_contas_receber_parcelado'); $j = 0; foreach ($conta_receber_cliente as $indice_conta_cliente) { $j++; } //Gerando duplicatas $stdFat = new stdClass(); $stdFat->nFat = intVal($usuario_pedido->numero_nfe_usuario) + 1; $stdFat->vOrig = $conta_receber_cliente[0]->valor_receber; $stdFat->vDesc = 0.00; $stdFat->vLiq = $valor_total_conta; $tagFat = $nfe->tagfat($stdFat); if ($j == 1) { $stdDuplicata = new stdClass(); $stdDuplicata->nDup = "001"; $stdDuplicata->dVenc = $conta_receber_cliente[0]->data_parcelamento; $stdDuplicata->vDup = floatVal($conta_receber_cliente[0]->valor_contas_receber_parcelado); $tagDup = $nfe->tagdup($stdDuplicata); } else { for ($y = 0; $y < intVal($j); $y++) { $stdDuplicata = new stdClass(); $y > 8 ? $stdDuplicata->nDup = "0" . intVal($y + 1) : $stdDuplicata->nDup = "00" . intVal($y + 1); $stdDuplicata->dVenc = $conta_receber_cliente[$y]->data_parcelamento; $stdDuplicata->vDup = floatVal($conta_receber_cliente[$y]->valor_contas_receber_parcelado); $tagDup = $nfe->tagdup($stdDuplicata); } } } else if ($tipo_pagamento == '02' && $pagamento->id_tipo_pagamento_fk == 2) { $pesquisar_conta_receber = DB::table('model_contas_receber') ->join('model_contas_receber_parcelado', 'model_contas_receber.id', '=', 'model_contas_receber_parcelado.id_contas_receber_fk') ->where('model_contas_receber.id_pedido_fk', $this->id) ->where('model_contas_receber.id_tipo_pagamento_fk', '=', 2) ->select('model_contas_receber.id') ->first(); $conta_receber_cliente = DB::table('model_contas_receber') ->join('model_contas_receber_parcelado', 'model_contas_receber.id', '=', 'model_contas_receber_parcelado.id_contas_receber_fk') ->where('model_contas_receber.id', '=', $pesquisar_conta_receber->id) ->get(); $valor_total_conta = DB::table('model_contas_receber') ->join('model_contas_receber_parcelado', 'model_contas_receber.id', '=', 'model_contas_receber_parcelado.id_contas_receber_fk') ->where('model_contas_receber.id', '=', $pesquisar_conta_receber->id) ->sum('valor_contas_receber_parcelado'); $j = 0; foreach ($conta_receber_cliente as $indice_conta_cliente) { $j++; } //Gerando duplicatas $stdFat = new stdClass(); $stdFat->nFat = intVal($usuario_pedido->numero_nfe_usuario) + 1; $stdFat->vOrig = $conta_receber_cliente[0]->valor_receber; $stdFat->vDesc = 0.00; $stdFat->vLiq = $valor_total_conta; $tagFat = $nfe->tagfat($stdFat); if ($j == 1) { $stdDuplicata = new stdClass(); $stdDuplicata->nDup = "001"; $stdDuplicata->dVenc = $conta_receber_cliente[0]->data_parcelamento; $stdDuplicata->vDup = floatVal($conta_receber_cliente[0]->valor_contas_receber_parcelado); $tagDup = $nfe->tagdup($stdDuplicata); } else { for ($y = 0; $y < intVal($j); $y++) { $stdDuplicata = new stdClass(); $y > 8 ? $stdDuplicata->nDup = "0" . intVal($y + 1) : $stdDuplicata->nDup = "00" . intVal($y + 1); $stdDuplicata->dVenc = $conta_receber_cliente[$y]->data_parcelamento; $stdDuplicata->vDup = floatVal($conta_receber_cliente[$y]->valor_contas_receber_parcelado); $tagDup = $nfe->tagdup($stdDuplicata); } } } else if ($tipo_pagamento == '02' && $pagamento->id_tipo_pagamento_fk == 3) { $pesquisar_conta_receber = DB::table('model_contas_receber') ->join('model_contas_receber_parcelado', 'model_contas_receber.id', '=', 'model_contas_receber_parcelado.id_contas_receber_fk') ->where('model_contas_receber.id_pedido_fk', $this->id) ->where('model_contas_receber.id_tipo_pagamento_fk', '=', 3) ->select('model_contas_receber.id') ->first(); $conta_receber_cliente = DB::table('model_contas_receber') ->join('model_contas_receber_parcelado', 'model_contas_receber.id', '=', 'model_contas_receber_parcelado.id_contas_receber_fk') ->where('model_contas_receber.id', '=', $pesquisar_conta_receber->id) ->get(); $valor_total_conta = DB::table('model_contas_receber') ->join('model_contas_receber_parcelado', 'model_contas_receber.id', '=', 'model_contas_receber_parcelado.id_contas_receber_fk') ->where('model_contas_receber.id', '=', $pesquisar_conta_receber->id) ->sum('valor_contas_receber_parcelado'); $j = 0; foreach ($conta_receber_cliente as $indice_conta_cliente) { $j++; } //Gerando duplicatas $stdFat = new stdClass(); $stdFat->nFat = intVal($usuario_pedido->numero_nfe_usuario) + 1; $stdFat->vOrig = $conta_receber_cliente[0]->valor_receber; $stdFat->vDesc = 0.00; $stdFat->vLiq = $valor_total_conta; $tagFat = $nfe->tagfat($stdFat); if ($j == 1) { $stdDuplicata = new stdClass(); $stdDuplicata->nDup = "001"; $stdDuplicata->dVenc = $conta_receber_cliente[0]->data_parcelamento; $stdDuplicata->vDup = floatVal($conta_receber_cliente[0]->valor_contas_receber_parcelado); $tagDup = $nfe->tagdup($stdDuplicata); } else { for ($y = 0; $y < intVal($j); $y++) { $stdDuplicata = new stdClass(); $y > 8 ? $stdDuplicata->nDup = "0" . intVal($y + 1) : $stdDuplicata->nDup = "00" . intVal($y + 1); $stdDuplicata->dVenc = $conta_receber_cliente[$y]->data_parcelamento; $stdDuplicata->vDup = floatVal($conta_receber_cliente[$y]->valor_contas_receber_parcelado); $tagDup = $nfe->tagdup($stdDuplicata); } } } $detPag = $nfe->tagdetPag($stdDetPag); } $stdICMSTot = new stdClass(); $stdICMSTot->vBC = null; $stdICMSTot->vICMS = null; $stdICMSTot->vICMSDeson = null; $stdICMSTot->vFCP = null; $stdICMSTot->vBCST = null; $stdICMSTot->vST = null; $stdICMSTot->vFCPST = null; $stdICMSTot->vFCPSTRet = null; $stdICMSTot->vProd = null; $stdICMSTot->vFrete = null; $stdICMSTot->vSeg = null; $stdICMSTot->vDesc = null; $stdICMSTot->vII = null; $stdICMSTot->vIPI = null; $stdICMSTot->vIPIDevol = null; $stdICMSTot->vPIS = null; $stdICMSTot->vCOFINS = null; $stdICMSTot->vOutro = null; $stdICMSTot->vNF = null; $stdICMSTot->vTotTrib = null; $ICMSTot = $nfe->tagICMSTot($stdICMSTot); $stdInfAdic = new stdClass(); $stdInfAdic->infAdFisco = $request->get('informacao_fisco_nfe'); if(!empty($request->get('informacao_contribuinte_nfe'))){ $stdInfAdic->infCpl = $request->get('informacao_contribuinte_nfe')." DEPENDE DE MAO DE OBRA ESPECIALIZADA PARA CORRETO FUNCIONAMENTO PERMITE APROVEITAMENTO DO CREDITO DE ICMS NO VALOR DE R$ " . str_replace('.', ',', self::format($somar_cfop->taxa_obs)) . " CORRESPONDENTE A ALIQUOTA DE 3,43% NOS TERMOS DO ARTIGO 23/06 DA LC 123/06 PELA LC 128/08."; }else if(auth()->user()->empresa == 'lrn'){ $stdInfAdic->infCpl = "DEPENDE DE MAO DE OBRA ESPECIALIZADA PARA CORRETO FUNCIONAMENTO PERMITE APROVEITAMENTO DO CREDITO DE ICMS NO VALOR DE R$ ".str_replace('.', ',', self::format($somar_cfop->taxa_obs))." CORRESPONDENTE A ALIQUOTA DE 3,43% NOS TERMOS DO ARTIGO 23/06 DA LC 123/06 PELA LC 128/08. Não gera direito a crédito fiscal de IPI. Documento emitido por ME ou EPP optante pelo Simples Nacional"; }else{ $stdInfAdic->infCpl = "DEPENDE DE MAO DE OBRA ESPECIALIZADA PARA CORRETO FUNCIONAMENTO PERMITE APROVEITAMENTO DO CREDITO DE ICMS NO VALOR DE R$ " . str_replace('.', ',', self::format($somar_cfop->taxa_obs)) . " CORRESPONDENTE A ALIQUOTA DE 3,43% NOS TERMOS DO ARTIGO 23/06 DA LC 123/06 PELA LC 128/08."; } $infAdic = $nfe->taginfAdic($stdInfAdic); /*Etapa feita manualmente*/ if($nfe->montaNFe()) { /*Gerando o arquivo XML*/ $xml = $nfe->getXML(); $this->chave = $nfe->getChave(); /*Retirando o configJson do construtor do Controller, agora está parte está sendo feita diretamente no código e não mais no construtor*/ $config = [ "atualizacao" => date("Y-m-d\TH:i:sP"), "tpAmb" => 1, "razaosocial" => $usuario_pedido->nome_empresa_usuario, "cnpj" => $usuario_pedido->cnpj_usuario, "ie" => $usuario_pedido->inscricao_estadual_usuario, "siglaUF" => $usuario_pedido->uf_usuario, "schemes" => "PL_009_V4", "versao" => "4.00", "tokenIBPT" => "AAAAAAA", "CSC" => "GPB0JBWLUR6HWFTVEAS6RJ69GPCROFPBBB8G", "CSCid" => "000002" ]; $configJson = json_encode($config); /////////////////////////*Gerando a assinatura*/////////////////////////////////////// try{ $certificadoDigital = file_get_contents($dir . "$usuario_pedido->certificado_digital_usuario"); $this->tools = new Tools($configJson, Certificate::readPfx($certificadoDigital, "$usuario_pedido->certificado_senha_usuario")); }catch(Exception $e){ exit($e->getMessage()); } try{ $xml_assinado = $this->tools->signNFe($xml); }catch(Exception $e){ /*Salvando o arquivo*/ header('Content-Type: application/xml; charset=utf-8'); file_put_contents($dir6 . '/nfe' . $this->chave . '.xml', $this->chave . $xml); return back()->with('errors',$e->getMessage()); } /////////////////////////*Gerando o envio do lote*///////////////////////// try{ $idLote = str_pad($stdInNFe->Id, 15, '0', STR_PAD_LEFT); /*Nesta etapa o lote está sendo enviado com sucesso, se retornar 103 é porque está tudo ok*/ $resp = $this->tools->sefazEnviaLote([$xml_assinado], $idLote); $st = new Standardize(); $std = $st->toStd($resp); if($std->cStat == "103"){ $recibo = $std->infRec->nRec; try{ $protocolo = $this->tools->sefazConsultaRecibo($recibo); $standardize = new Standardize(); $status_protocolo = $standardize->toStd($protocolo); }catch(Exception $e){ return $e->getMessage(); } if($status_protocolo->cStat == '104'){ if($status_protocolo->protNFe->infProt->cStat == '100'){ /////////////////////////*Protocolando a nota*///////////////////////// $request = $xml_assinado; $response = $protocolo; $protocol = new Complements(); $xmlProtocolado = $protocol->toAuthorize($request, $response); /*Salvando o arquivo*/ header('Content-Type: application/xml; charset=utf-8'); file_put_contents($dir2 . '/nfe' . $this->chave . '.xml', $xmlProtocolado); /////////////////////////*Etapa de impressão da nota*///////////////////////// $xml_impresso = $dir2 . '/nfe' . $this->chave . '.xml'; $docxml = FilesFolders::readFile($xml_impresso); $img = auth()->user()->logo; $logo = 'data://text/plain;base64,' . base64_encode(file_get_contents("argon/img/brand/$img")); $danfe = new Danfe($docxml, 'P', 'A4', $logo, 'I', ''); $id = $danfe->montaDANFE(); $pdf = $danfe->render(); header('Content-Type: application/pdf'); if($pdf){ file_put_contents($dir2 . '/nfe' . $this->chave . '.pdf', $pdf); $caminho = $dir2 . "/nfe" . $this->chave . ".pdf"; /*o comando fopn é responsável por abrir o diretório*/ if (fopen($caminho, "r")) { $arquivo_xml = simplexml_load_file($dir2 . '/nfe' . $this->chave . '.xml'); $pesquisar_pedido = DB::table('model_pedidos') ->whereIn('model_pedidos.id', explode(",", $this->id)) ->update([ 'chave_acesso_nfe' => $this->chave, 'protocolo_nfe' => $arquivo_xml->protNFe->infProt->nProt, 'numero_nfe' => $arquivo_xml->NFe->infNFe->ide->nNF, 'forma_pagamento_pedido' => $pagamento_pedido[0]->id_tipo_pagamento_fk, 'status_nfe' => 'Emitida' ]); $atualizar_numero_nfe_usuario = DB::table('reman709_argon_matriz.model_endereco_usuarios') ->where('id', '=', auth()->user()->id_endereco_fk) ->increment('numero_nfe_usuario', 1); try { $nota_fiscal = new ModelNotaFiscal(); $nota_fiscal->numero_protocolo = $arquivo_xml->protNFe->infProt->nProt; $nota_fiscal->numero_nfe = $arquivo_xml->NFe->infNFe->ide->nNF; $nota_fiscal->chave_acesso = $this->chave; $nota_fiscal->valor = $pagamento_pedido[0]->valor_receber; $nota_fiscal->status_atual = 1; $nota_fiscal->CFOP = $stdProd->CFOP; $nota_fiscal->id_pedido_fk = $this->id; $nota_fiscal->nome_cliente = $cliente_pedido->razao_cliente; $nota_fiscal->situacao = 'Emitida'; $nota_fiscal->save(); } catch (Exception $e) { return $e->getMessage(); } /*O comando readFile é responsável por ler e exibir o arquivo caso ele exista*/ /*readFile($caminho);*/ header("Content-type:application/pdf"); return response()->download($caminho); } else { return 'Arquivo não gerado, tente novamente mais tarde'; } } }else if(in_array($status_protocolo->protNFe->infProt->cStat,["110", "301", "302"])){ file_put_contents($dir6 . '/nfe' . $this->chave . '.xml',$status_protocolo); $atualizar_numero_nfe_usuario = DB::table('reman709_argon_matriz.model_endereco_usuarios') ->where('id', '=', auth()->user()->id_endereco_fk) ->increment('numero_nfe_usuario', 1); return back()->with('errors','Motivo da '.$status_protocolo->protNFe->infProt->xMotivo); }else{ file_put_contents($dir6 . '/nfe' . $this->chave . '.xml', $status_protocolo->protNFe->infProt->xMotivo."\n\nStatus: ".$status_protocolo->protNFe->infProt->cStat); return back()->with('errors','Motivo da '.$status_protocolo->protNFe->infProt->xMotivo); } }else if($status_protocolo->cStat == '103' || $status_protocolo->cStat == '105'){ /*Salvando o arquivo em processamento ou divergência*/ file_put_contents($dir4 . '/nfe' . $this->chave . '.xml', $status_protocolo->protNFe->infProt->xMotivo."\n\nNúmero da chave para download: ".$status_protocolo->protNFe->infProt->chNFe); return back()->with('errors', 'Motivo da '. $status_protocolo->protNFe->infProt->xMotivo. "\n\nNúmero da chave para download: ". $status_protocolo->protNFe->infProt->chNFe ); }else{ /*Salvando o arquivo na pasta de rejeição*/ file_put_contents($dir6 . '/nfe' . $this->chave . '.xml', $status_protocolo->protNFe->infProt->xMotivo); return back()->with('errors','Motivo da '.$status_protocolo->protNFe->infProt->xMotivo); } }else{ /*Salvando o arquivo na pasta de rejeição*/ file_put_contents($dir6 . '/nfe' . $this->chave . '.xml', $std->cStat); //erro registrar e voltar return back()->with('errors',$std->cStat); } }catch(Exception $e){ return $e->getMessage(); } }else{ $errors = $nfe->getErrors(); return $errors; } }*/