public static function gravarDadosSat() { try { $dadosNf = $_POST; $cod_nota_fiscal = isset($dadosNf['dados_emissao']['cod_nota_fiscal']) ? $dadosNf['dados_emissao']['cod_nota_fiscal'] : false; $ConfiguracaoDao = new ConfiguracaoDao(); $id_empreendimento = $_POST['id_empreendimento']; $conf = $ConfiguracaoDao->getConfiguracoes($id_empreendimento); $tokens['token_focus_producao'] = isset($conf['token_focus_producao']) ? $conf['token_focus_producao'] : ''; $tokens['token_focus_homologacao'] = isset($conf['token_focus_homologacao']) ? $conf['token_focus_homologacao'] : ''; $NF = new stdClass(); /** * Informações Gerais **/ $NF->natureza_operacao = isset($dadosNf['dados_emissao']['dsc_operacao']) ? $dadosNf['dados_emissao']['dsc_operacao'] : ""; $NF->forma_pagamento = isset($dadosNf['dados_emissao']['forma_pagamento']) ? $dadosNf['dados_emissao']['forma_pagamento'] : ""; //$NF->data_emissao = isset($dadosNf['dados_emissao']['data_emissao']) ? $dadosNf['dados_emissao']['data_emissao'] : "" ; //$NF->data_entrada_saida = isset($dadosNf['dados_emissao']['data_entrada_saida']) ? $dadosNf['dados_emissao']['data_entrada_saida'] : "" ; $NF->tipo_documento = isset($dadosNf['dados_emissao']['tipo_documento']) ? $dadosNf['dados_emissao']['tipo_documento'] : ""; $NF->local_destino = isset($dadosNf['dados_emissao']['local_destino']) ? $dadosNf['dados_emissao']['local_destino'] : ""; $NF->finalidade_emissao = isset($dadosNf['dados_emissao']['finalidade_emissao']) ? $dadosNf['dados_emissao']['finalidade_emissao'] : ""; $NF->consumidor_final = isset($dadosNf['dados_emissao']['consumidor_final']) ? $dadosNf['dados_emissao']['consumidor_final'] : ""; $NF->presenca_comprador = isset($dadosNf['dados_emissao']['presenca_comprador']) ? $dadosNf['dados_emissao']['presenca_comprador'] : ""; $NF->serie = isset($dadosNf['dados_emissao']['serie_documento_fiscal']) ? $dadosNf['dados_emissao']['serie_documento_fiscal'] : ""; //$NF->numero = isset($dadosNf['dados_emissao']['num_documento_fiscal']) ? $dadosNf['dados_emissao']['num_documento_fiscal'] : "" ; /** * Dados do Emitente **/ $NF->cnpj_emitente = isset($dadosNf['emitente']['CNPJ']) ? $dadosNf['emitente']['CNPJ'] : ""; $NF->nome_emitente = isset($dadosNf['emitente']['xNome']) ? $dadosNf['emitente']['xNome'] : ""; $NF->nome_fantasia_emitente = isset($dadosNf['emitente']['xFant']) ? $dadosNf['emitente']['xFant'] : ""; $NF->logradouro_emitente = isset($dadosNf['emitente']['nme_logradouro']) ? $dadosNf['emitente']['nme_logradouro'] : ""; $NF->numero_emitente = isset($dadosNf['emitente']['num_logradouro']) ? $dadosNf['emitente']['num_logradouro'] : ""; $NF->bairro_emitente = isset($dadosNf['emitente']['nme_bairro_logradouro']) ? $dadosNf['emitente']['nme_bairro_logradouro'] : ""; $NF->municipio_emitente = isset($dadosNf['emitente']['cidade']['nome']) ? $dadosNf['emitente']['cidade']['nome'] : ""; $NF->uf_emitente = isset($dadosNf['emitente']['estado']['uf']) ? $dadosNf['emitente']['estado']['uf'] : ""; $NF->cep_emitente = isset($dadosNf['emitente']['CEP']) ? $dadosNf['emitente']['CEP'] : ""; $NF->telefone_emitente = ""; // opcional, tem que colocar na tela $NF->inscricao_estadual_emitente = isset($dadosNf['emitente']['IE']) ? $dadosNf['emitente']['IE'] : ""; $NF->inscricao_municipal_emitente = ""; // opcional, tem que colocar na tela $NF->cnae_fiscal_emitente = ""; // opcional, tem que colocar na tela $NF->regime_tributario_emitente = isset($dadosNf['emitente']['CRT']) ? $dadosNf['emitente']['CRT'] : ""; /** * Dados do Destinatário **/ if ($dadosNf['destinatario']['tipo_cadastro'] == 'pj') { $NF->cnpj_destinatario = isset($dadosNf['destinatario']['CNPJ']) ? $dadosNf['destinatario']['CNPJ'] : ""; $NF->nome_destinatario = isset($dadosNf['destinatario']['xFant']) ? $dadosNf['destinatario']['xFant'] : ""; $NF->indicador_inscricao_estadual_destinatario = isset($dadosNf['destinatario']['indIEDest']) ? $dadosNf['destinatario']['indIEDest'] : ""; $NF->inscricao_estadual_destinatario = isset($dadosNf['destinatario']['IE']) ? $dadosNf['destinatario']['IE'] : ""; } else { if ($dadosNf['destinatario']['tipo_cadastro'] == 'pf') { $NF->cpf_destinatario = isset($dadosNf['destinatario']['CPF']) ? $dadosNf['destinatario']['CPF'] : ""; $NF->nome_destinatario = isset($dadosNf['destinatario']['xNome']) ? $dadosNf['destinatario']['xNome'] : ""; $NF->indicador_inscricao_estadual_destinatario = 9; } } $NF->logradouro_destinatario = isset($dadosNf['destinatario']['nme_logradouro']) ? $dadosNf['destinatario']['nme_logradouro'] : ""; $NF->numero_destinatario = isset($dadosNf['destinatario']['num_logradouro']) ? $dadosNf['destinatario']['num_logradouro'] : ""; $NF->complemento_destinatario = ""; // opcional, tem que colocar na tela $NF->bairro_destinatario = isset($dadosNf['destinatario']['nme_bairro_logradouro']) ? $dadosNf['destinatario']['nme_bairro_logradouro'] : ""; $NF->municipio_destinatario = isset($dadosNf['destinatario']['cidade']['nome']) ? $dadosNf['destinatario']['cidade']['nome'] : ""; $NF->uf_destinatario = isset($dadosNf['destinatario']['estado']['uf']) ? $dadosNf['destinatario']['estado']['uf'] : ""; $NF->cep_destinatario = isset($dadosNf['destinatario']['CEP']) ? $dadosNf['destinatario']['CEP'] : ""; $NF->email_destinatario = isset($dadosNf['destinatario']['email']) ? $dadosNf['destinatario']['email'] : ""; /** * Dados de Transporte **/ $NF->modalidade_frete = isset($dadosNf['transportadora']['modalidade_frete']) ? $dadosNf['transportadora']['modalidade_frete'] : ""; $NF->cnpj_transportador = isset($dadosNf['transportadora']['CNPJ']) ? $dadosNf['transportadora']['CNPJ'] : ""; $NF->nome_transportador = isset($dadosNf['transportadora']['xFant']) ? $dadosNf['transportadora']['xFant'] : ""; $NF->inscricao_estadual_transportador = isset($dadosNf['transportadora']['IE']) ? $dadosNf['transportadora']['IE'] : ""; $NF->endereco_transportador = isset($dadosNf['transportadora']['nme_logradouro']) ? $dadosNf['transportadora']['nme_logradouro'] : ""; $NF->municipio_transportador = isset($dadosNf['transportadora']['cidade']['nome']) ? $dadosNf['transportadora']['cidade']['nome'] : ""; $NF->uf_transportador = isset($dadosNf['transportadora']['estado']['uf']) ? $dadosNf['transportadora']['estado']['uf'] : ""; /** * Totais **/ $NF->icms_base_calculo = isset($dadosNf['ICMSTot']['vBC']) ? $dadosNf['ICMSTot']['vBC'] : ""; $NF->icms_valor_total = isset($dadosNf['ICMSTot']['vICMS']) ? $dadosNf['ICMSTot']['vICMS'] : ""; $NF->icms_valor_total_desonerado = isset($dadosNf['ICMSTot']['vICMSDeson']) ? $dadosNf['ICMSTot']['vICMSDeson'] : ""; $NF->icms_base_calculo_st = isset($dadosNf['ICMSTot']['vBCST']) ? $dadosNf['ICMSTot']['vBCST'] : ""; $NF->icms_valor_total_st = isset($dadosNf['ICMSTot']['vST']) ? $dadosNf['ICMSTot']['vST'] : ""; $NF->valor_produtos = isset($dadosNf['ICMSTot']['vProd']) ? $dadosNf['ICMSTot']['vProd'] : ""; $NF->valor_frete = isset($dadosNf['ICMSTot']['vFrete']) ? $dadosNf['ICMSTot']['vFrete'] : ""; $NF->valor_seguro = isset($dadosNf['ICMSTot']['vSeg']) ? $dadosNf['ICMSTot']['vSeg'] : ""; $NF->valor_desconto = isset($dadosNf['ICMSTot']['vDesc']) ? $dadosNf['ICMSTot']['vDesc'] : ""; $NF->valor_total_ii = isset($dadosNf['ICMSTot']['vII']) ? $dadosNf['ICMSTot']['vII'] : ""; $NF->valor_ipi = isset($dadosNf['ICMSTot']['vIPI']) ? $dadosNf['ICMSTot']['vIPI'] : ""; $NF->valor_pis = isset($dadosNf['ICMSTot']['vPIS']) ? $dadosNf['ICMSTot']['vPIS'] : ""; $NF->valor_cofins = isset($dadosNf['ICMSTot']['vCOFINS']) ? $dadosNf['ICMSTot']['vCOFINS'] : ""; $NF->valor_outras_despesas = isset($dadosNf['ICMSTot']['vOutro']) ? $dadosNf['ICMSTot']['vOutro'] : ""; $NF->valor_total = isset($dadosNf['ICMSTot']['vNF']) ? $dadosNf['ICMSTot']['vNF'] : ""; $NF->items = array(); foreach ($dadosNf['itens'] as $key => $value) { $item = new stdClass(); $item->numero_item = $key + 1; $item->codigo_produto = isset($value['prod']['cProd']) ? $value['prod']['cProd'] : ""; $item->descricao = isset($value['prod']['xProd']) ? $value['prod']['xProd'] : ""; $item->codigo_ncm = isset($value['prod']['NCM']) ? $value['prod']['NCM'] : ""; $item->cfop = isset($value['prod']['CFOP']) ? $value['prod']['CFOP'] : ""; $item->unidade_comercial = isset($value['prod']['uCom']) ? $value['prod']['uCom'] : ""; $item->quantidade_comercial = isset($value['prod']['qCom']) ? $value['prod']['qCom'] : ""; $item->valor_unitario_comercial = isset($value['prod']['vUnCom']) ? $value['prod']['vUnCom'] : ""; $item->valor_bruto = isset($value['prod']['vProd']) ? $value['prod']['vProd'] : ""; $item->valor_desconto = isset($value['prod']['vDesc']) ? $value['prod']['vDesc'] : ""; $item->unidade_tributavel = isset($value['prod']['uTrib']) ? $value['prod']['uTrib'] : ""; $item->quantidade_tributavel = isset($value['prod']['qTrib']) ? $value['prod']['qTrib'] : ""; $item->valor_unitario_tributavel = isset($value['prod']['vUnTrib']) ? $value['prod']['vUnTrib'] : "0"; $item->inclui_no_total = isset($value['prod']['indTot']) ? $value['prod']['indTot'] : "1"; $item->codigo_cest = isset($value['prod']['CEST']) ? $value['prod']['CEST'] : ""; /** * IPI * clEnq * CNPJProd * cSelo * qSelo * cEnq * CST * vBC * qUnid * vUnid * pIPI * vIPI **/ $item->ipi_classe_enquadramento = isset($value['imposto']['IPI']['clEnq']) ? $value['imposto']['IPI']['clEnq'] : ""; $item->ipi_cnpj_produtor = isset($value['imposto']['IPI']['CNPJProd']) ? $value['imposto']['IPI']['CNPJProd'] : ""; $item->ipi_codigo_selo_controle = isset($value['imposto']['IPI']['cSelo']) ? $value['imposto']['IPI']['cSelo'] : ""; $item->ipi_quantidade_selo_controle = isset($value['imposto']['IPI']['qSelo']) ? $value['imposto']['IPI']['qSelo'] : ""; $item->ipi_codigo_enquadramento_legal = isset($value['imposto']['IPI']['cEnq']) ? $value['imposto']['IPI']['cEnq'] : ""; $item->ipi_situacao_tributaria = isset($value['imposto']['IPI']['CST']) ? $value['imposto']['IPI']['CST'] : ""; $item->ipi_base_calculo = isset($value['imposto']['IPI']['vBC']) ? $value['imposto']['IPI']['vBC'] : ""; $item->ipi_quantidade_total = isset($value['imposto']['IPI']['qUnid']) ? $value['imposto']['IPI']['qUnid'] : ""; $item->ipi_valor_por_unidade_tributavel = isset($value['imposto']['IPI']['vUnid']) ? $value['imposto']['IPI']['vUnid'] : ""; $item->ipi_aliquota = isset($value['imposto']['IPI']['pIPI']) ? $value['imposto']['IPI']['pIPI'] : ""; $item->ipi_valor = isset($value['imposto']['IPI']['vIPI']) ? $value['imposto']['IPI']['vIPI'] : ""; /** * CAMPOS ICMS * orig * CST - CSOSN * modBC * pRedBC * vBC * vBC_Desonerado * * pICMS * pICMS_Desonerado * * vICMSOp * pDif * vICMSDif * vICMS * vICMS_Desonerado * modBCST * pMVAST * pRedBCST * vBCST * vBCST_NaoDestacado * * pICMSST * vICMSST * vICMSST_NaoDestacado * * UFST ** * pBCOp * * vBCSTRet * vICMSSTRet * vICMSDeson --> igual a vICMS_Desonerado? * motDesICMS * pCredSN * * vCredICMSSN * * vBCSTDest --> igual a UFST? * vICMSSTDest **/ $item->icms_origem = isset($value['imposto']['ICMS']['orig']) ? $value['imposto']['ICMS']['orig'] : ""; $item->icms_situacao_tributaria = isset($value['imposto']['ICMS']['CST']) ? $value['imposto']['ICMS']['CST'] : (isset($value['imposto']['ICMS']['CSOSN']) ? $value['imposto']['ICMS']['CSOSN'] : ""); $item->icms_modalidade_base_calculo = isset($value['imposto']['ICMS']['modBC']) ? $value['imposto']['ICMS']['modBC'] : ""; $item->icms_reducao_base_calculo = isset($value['imposto']['ICMS']['pRedBC']) ? $value['imposto']['ICMS']['pRedBC'] : ""; $item->icms_base_calculo = isset($value['imposto']['ICMS']['vBC']) ? $value['imposto']['ICMS']['vBC'] : ""; // $item->vBC_Desonerado = isset($value['imposto']['ICMS']['vBC_Desonerado']) ? $value['imposto']['ICMS']['vBC_Desonerado'] : "" ; $item->icms_aliquota = isset($value['imposto']['ICMS']['pICMS']) ? $value['imposto']['ICMS']['pICMS'] : ""; // $item->pICMS_Desonerado = isset($value['imposto']['ICMS']['pICMS_Desonerado']) ? $value['imposto']['ICMS']['pICMS_Desonerado'] : "" ; $item->icms_valor_operacao = isset($value['imposto']['ICMS']['vICMSOp']) ? $value['imposto']['ICMS']['vICMSOp'] : ""; $item->icms_percentual_diferimento = isset($value['imposto']['ICMS']['pDif']) ? $value['imposto']['ICMS']['pDif'] : ""; $item->icms_valor_diferido = isset($value['imposto']['ICMS']['vICMSDif']) ? $value['imposto']['ICMS']['vICMSDif'] : ""; $item->icms_valor = isset($value['imposto']['ICMS']['vICMS']) ? $value['imposto']['ICMS']['vICMS'] : ""; $item->icms_valor_desonerado = isset($value['imposto']['ICMS']['vICMS_Desonerado']) ? $value['imposto']['ICMS']['vICMS_Desonerado'] : ""; $item->icms_modalidade_base_calculo_st = isset($value['imposto']['ICMS']['modBCST']) ? $value['imposto']['ICMS']['modBCST'] : ""; $item->icms_margem_valor_adicionado_st = isset($value['imposto']['ICMS']['pMVAST']) ? $value['imposto']['ICMS']['pMVAST'] : ""; $item->icms_reducao_base_calculo_st = isset($value['imposto']['ICMS']['pRedBCST']) ? $value['imposto']['ICMS']['pRedBCST'] : ""; $item->icms_base_calculo_st = isset($value['imposto']['ICMS']['vBCST']) ? $value['imposto']['ICMS']['vBCST'] : ""; // $item->vBCST_NaoDestacado = isset($value['imposto']['ICMS']['vBCST_NaoDestacado']) ? $value['imposto']['ICMS']['vBCST_NaoDestacado'] : "" ; $item->icms_aliquota_st = isset($value['imposto']['ICMS']['pICMSST']) ? $value['imposto']['ICMS']['pICMSST'] : ""; $item->icms_valor_st = isset($value['imposto']['ICMS']['vICMSST']) ? $value['imposto']['ICMS']['vICMSST'] : ""; // $item->vICMSST_NaoDestacado = isset($value['imposto']['ICMS']['vICMSST_NaoDestacado']) ? $value['imposto']['ICMS']['vICMSST_NaoDestacado'] : "" ; $item->icms_base_calculo_uf_destino = isset($value['imposto']['ICMS']['UFST']) ? $value['imposto']['ICMS']['UFST'] : ""; // $item->pBCOp = isset($value['imposto']['ICMS']['pBCOp']) ? $value['imposto']['ICMS']['pBCOp'] : "" ; $item->icms_base_calculo_retido_st = isset($value['imposto']['ICMS']['vBCSTRet']) ? $value['imposto']['ICMS']['vBCSTRet'] : ""; $item->icms_valor_retido_st = isset($value['imposto']['ICMS']['vICMSSTRet']) ? $value['imposto']['ICMS']['vICMSSTRet'] : ""; // $item->vICMSDeson = isset($value['imposto']['ICMS']['vICMSDeson']) ? $value['imposto']['ICMS']['vICMSDeson'] : "" ; $item->icms_motivo_desoneracao = isset($value['imposto']['ICMS']['motDesICMS']) ? $value['imposto']['ICMS']['motDesICMS'] : ""; $item->icms_aliquota_credito_simples = isset($value['imposto']['ICMS']['pCredSN']) ? $value['imposto']['ICMS']['pCredSN'] : "0"; // Esse campo não existe na API da focus $item->icms_valor_credito_simples = isset($value['imposto']['ICMS']['vCredICMSSN']) ? $value['imposto']['ICMS']['vCredICMSSN'] : "0"; // $item->vBCSTDest = isset($value['imposto']['ICMS']['vBCSTDest']) ? $value['imposto']['ICMS']['vBCSTDest'] : "" ; $item->icms_valor_uf_destino = isset($value['imposto']['ICMS']['vICMSSTDest']) ? $value['imposto']['ICMS']['vICMSSTDest'] : ""; /** * CAMPOS PIS * CST * vBC * pPIS * vPIS * qBCProd * vAliqProd **/ $item->pis_situacao_tributaria = isset($value['imposto']['PIS']['CST']) ? $value['imposto']['PIS']['CST'] : ""; $item->pis_base_calculo = isset($value['imposto']['PIS']['vBC']) ? $value['imposto']['PIS']['vBC'] : "0"; $item->pis_aliquota_porcentual = isset($value['imposto']['PIS']['pPIS']) ? $value['imposto']['PIS']['pPIS'] : "0"; $item->pis_valor = isset($value['imposto']['PIS']['vPIS']) ? $value['imposto']['PIS']['vPIS'] : "0"; $item->pis_quantidade_vendida = isset($value['imposto']['PIS']['qBCProd']) ? $value['imposto']['PIS']['qBCProd'] : "0"; // $item->vAliqProd = isset($value['imposto']['PIS']['vAliqProd']) ? $value['imposto']['PIS']['vAliqProd'] : "0" ; /** * CAMPOS COFINS * CST * vBC * pCOFINS * qBCProd * vAliqProd * vCOFINS **/ $item->cofins_situacao_tributaria = isset($value['imposto']['COFINS']['CST']) ? $value['imposto']['COFINS']['CST'] : "0"; $item->cofins_base_calculo = isset($value['imposto']['COFINS']['vBC']) ? $value['imposto']['COFINS']['vBC'] : "0"; $item->cofins_aliquota_porcentual = isset($value['imposto']['COFINS']['pCOFINS']) ? $value['imposto']['COFINS']['pCOFINS'] : "0"; $item->cofins_quantidade_vendida = isset($value['imposto']['COFINS']['qBCProd']) ? $value['imposto']['COFINS']['qBCProd'] : "0"; // $item->vAliqProd = isset($value['imposto']['COFINS']['vAliqProd']) ? $value['imposto']['COFINS']['vAliqProd'] : "0" ; $item->cofins_valor = isset($value['imposto']['COFINS']['vCOFINS']) ? $value['imposto']['COFINS']['vCOFINS'] : "0"; $NF->items[] = $item; } //self::validaCamposObrigatoriosFocusNFe($NF); //$nfTO = clone $NF; $NF = self::removeCampoVazios($NF); $conn = Conexao::getInstance(); $NotaFiscalDao = new NotaFiscalDao(); $NotaFiscalItemDao = new NotaFiscalItemDao(); $NotaFiscalItemTO = new NotaFiscalItemTO(); $NotaFiscalTO = new NotaFiscalTO(); // Complementando dados para gravar nota $NotaFiscalTO->__setAll($NF); $NotaFiscalTO->cod_venda = $dadosNf['dados_emissao']['cod_venda']; $NotaFiscalTO->cod_empreendimento = $dadosNf['emitente']['identificador']; $NotaFiscalTO->cod_cliente = $dadosNf['destinatario']['identificador']; $NotaFiscalTO->modelo_documento = $dadosNf['dados_emissao']['nme_modelo_documento']; $NotaFiscalTO->perc_credito_simples = isset($dadosNf['emitente']['PercCreditoSimples']) ? $dadosNf['emitente']['PercCreditoSimples'] : NULL; $NotaFiscalTO->status = $dadosNf['dados_emissao']['status']; $NotaFiscalTO->cep_transportadora = isset($dadosNf['transportadora']['CEP']) ? $dadosNf['transportadora']['CEP'] : NULL; $NotaFiscalTO->bairro_transportadora = isset($dadosNf['transportadora']['nme_bairro_logradouro']) ? $dadosNf['transportadora']['nme_bairro_logradouro'] : NULL; $NotaFiscalTO->valor_total_tributos = NULL; $NotaFiscalTO->tipo_cadastro_destinatario = $dadosNf['destinatario']['tipo_cadastro']; $NotaFiscalTO->cod_cidade_emitente = $dadosNf['emitente']['cidade']['id']; $NotaFiscalTO->cod_estado_emitente = $dadosNf['emitente']['estado']['id']; $NotaFiscalTO->cod_cidade_destinatario = $dadosNf['emitente']['cidade']['id']; $NotaFiscalTO->cod_estado_destinatario = $dadosNf['emitente']['estado']['id']; $NotaFiscalTO->chave_sat = isset($dadosNf['chave_sat']) ? $dadosNf['chave_sat'] : NULL; $NotaFiscalTO->codigo_sefaz_sat = isset($dadosNf['codigo_sefaz_sat']) ? $dadosNf['codigo_sefaz_sat'] : NULL; $NotaFiscalTO->data_processado_sat = isset($dadosNf['data_processado_sat']) ? $dadosNf['data_processado_sat'] : NULL; $NotaFiscalTO->id_pdv_sat = isset($dadosNf['id_pdv_sat']) ? $dadosNf['id_pdv_sat'] : NULL; $NotaFiscalTO->id_qr_code_sat = isset($dadosNf['id_qr_code_sat']) ? $dadosNf['id_qr_code_sat'] : NULL; $NotaFiscalTO->msg_sefaz_sat = isset($dadosNf['msg_sefaz_sat']) ? $dadosNf['msg_sefaz_sat'] : NULL; $NotaFiscalTO->n_serie_sat = isset($dadosNf['n_serie_sat']) ? $dadosNf['n_serie_sat'] : NULL; $NotaFiscalTO->sessao_sat = isset($dadosNf['sessao_sat']) ? $dadosNf['sessao_sat'] : NULL; $NotaFiscalTO->tipo_documento_sat = isset($dadosNf['tipo_documento_sat']) ? $dadosNf['tipo_documento_sat'] : NULL; $NotaFiscalTO->uuid_sat = isset($dadosNf['uuid_sat']) ? $dadosNf['uuid_sat'] : NULL; $NotaFiscalTO->xml_envio_base64 = isset($dadosNf['xml_envio_base64']) ? base64_encode($dadosNf['xml_envio_base64']) : NULL; $NotaFiscalTO->codigo_erro_sat = isset($dadosNf['codigo_erro_sat']) ? $dadosNf['codigo_erro_sat'] : NULL; $NotaFiscalTO->msg_erro_sat = isset($dadosNf['msg_erro_sat']) ? $dadosNf['msg_erro_sat'] : NULL; $NotaFiscalTO->json_erros_base64_sat = isset($dadosNf['json_erros_base64_sat']) ? base64_encode($dadosNf['json_erros_base64_sat']) : NULL; $NotaFiscalTO->flg_sat = 1; if (is_numeric($cod_nota_fiscal)) { $NotaFiscalTO->cod_nota_fiscal = $cod_nota_fiscal; $NotaFiscalDao->updateNota($NotaFiscalTO); } else { $cod_nota_fiscal = $NotaFiscalDao->saveNota($NotaFiscalTO); } $NotaFiscalItemDao->deleteItems($cod_nota_fiscal); foreach ($NF->items as $itemNf) { $NotaFiscalItemTO->__setAll($itemNf); $NotaFiscalItemTO->cod_nota_fiscal = $cod_nota_fiscal; $NotaFiscalItemDao->saveItem($NotaFiscalItemTO); } /*$NfeDao = new NfeDao($flg_ambiente_nfe) ; $NfeDao->arr_nfe = $NF ; $NfeDao->id_ref = $cod_nota_fiscal; $retorno = $NfeDao->sendNfe();*/ /*if($retorno->statusCode == 202){ $NotaFiscalDao->changeStatusNota('processando_autorizacao', $cod_nota_fiscal); }*/ } catch (Exception $e) { jsonException($e, 500); } }
public static function transmitirNFSe() { $nfsData = (object) $_POST; $nfsData->emitente = (object) $nfsData->emitente; $nfsData->tomador = (object) $nfsData->tomador; $nfsData->ordem_servico = (object) parse_arr_values($nfsData->ordem_servico, 'all'); $nfsData->regra_tributacao = (object) parse_arr_values($nfsData->regra_tributacao, 'all'); $nfsData->total = (object) parse_arr_values($nfsData->total, 'all'); $nfsData->outros = (object) parse_arr_values($nfsData->outros, 'all'); // Preparando o objeto de dados para gravar a nota fiscal no banco de dados $nfseTO = new NotaFiscalTO(); // servico $nfseTO->valor_total_servicos = $nfsData->ordem_servico->vlr_servicos; $nfseTO->issqn_valor_total_deducao = $nfsData->total->vlr_deducoes; $nfseTO->valor_pis_servicos = $nfsData->regra_tributacao->flg_retem_pis == 1 ? $nfsData->total->vlr_pis : 0; $nfseTO->valor_cofins_servicos = $nfsData->regra_tributacao->flg_retem_cofins == 1 ? $nfsData->total->vlr_cofins : 0; $nfseTO->valor_inss_servicos = $nfsData->regra_tributacao->flg_retem_inss == 1 ? $nfsData->total->vlr_inss : 0; $nfseTO->valor_ir_servicos = $nfsData->regra_tributacao->flg_retem_ir == 1 ? $nfsData->total->vlr_ir : 0; $nfseTO->valor_csll_servicos = $nfsData->regra_tributacao->flg_retem_csll == 1 ? $nfsData->total->vlr_csll : 0; $nfseTO->issqn_retido = $nfsData->total->flg_iss_retido == 'true' ? 1 : 0; if ($nfseTO->issqn_retido == 1) { $nfseTO->issqn_valor_retido = $nfsData->total->vlr_iss_retido; } if ($nfsData->regra_tributacao->flg_retem_iss_pj == 1 && isset($nfsData->total->vlr_iss_pj)) { $nfseTO->issqn_valor_total = $nfsData->total->vlr_iss_pj; } else { if ($nfsData->regra_tributacao->flg_retem_iss_pf == 1 && isset($nfsData->total->vlr_iss_pf)) { $nfseTO->issqn_valor_total = $nfsData->total->vlr_iss_pf; } else { $nfseTO->issqn_valor_total = 0; } } $nfseTO->issqn_valor_total_outras_retencoes = $nfsData->total->vlr_outras_retencoes; $nfseTO->issqn_base_calculo = $nfsData->ordem_servico->vlr_servicos; $nfseTO->issqn_aliquota = $nfsData->regra_tributacao->prc_retencao_iss; $nfseTO->issqn_tipo_pessoa = $nfsData->regra_tributacao->flg_retem_iss_pf == 1 ? 'pf' : 'pj'; $nfseTO->issqn_valor_total_desconto_incondicionado = $nfsData->total->vlr_desconto_incondicionado; $nfseTO->issqn_valor_total_desconto_condicionado = $nfsData->total->vlr_desconto_condicionado; $nfseTO->issqn_item_lista_servico = $nfsData->regra_tributacao->cod_servico_municipio; $nfseTO->issqn_descricao_servico_municipio = $nfsData->regra_tributacao->dsc_servico_municipio; $nfseTO->issqn_codigo_cnae = isset($nfsData->outros->codigo_cnae) ? $nfsData->outros->codigo_cnae : null; $nfseTO->issqn_codigo_tributario_municipio = isset($nfsData->outros->codigo_tributario_municipio) ? $nfsData->outros->codigo_tributario_municipio : null; $nfseTO->discriminacao_servico = $nfsData->outros->discriminacao_servico; $nfseTO->cod_regra_servico = $nfsData->regra_tributacao->id; $nfseTO->nme_regra_servico = $nfsData->regra_tributacao->nme_regra_servico; $nfseTO->cod_ibge_municipio_destinatario = $nfsData->tomador->id_ibge_municipio; $nfseTO->percentual_total_tributos = $nfsData->regra_tributacao->prc_tributos; // prestador $nfseTO->cnpj_emitente = $nfsData->emitente->num_cnpj; $nfseTO->inscricao_municipal_emitente = $nfsData->emitente->num_inscricao_municipal; $nfseTO->nome_emitente = $nfsData->emitente->nme_razao_social; $nfseTO->nome_fantasia_emitente = $nfsData->emitente->nme_fantasia; $nfseTO->cep_emitente = $nfsData->emitente->num_cep; $nfseTO->logradouro_emitente = $nfsData->emitente->nme_logradouro; $nfseTO->numero_emitente = $nfsData->emitente->num_logradouro; $nfseTO->bairro_emitente = $nfsData->emitente->nme_bairro_logradouro; $nfseTO->uf_emitente = $nfsData->emitente->uf; $nfseTO->estado_emitente = $nfsData->emitente->nme_estado; $nfseTO->municipio_emitente = $nfsData->emitente->nme_municipio; $nfseTO->cod_ibge_municipio_emitente = $nfsData->emitente->id_ibge_municipio; // tomador $nfseTO->tipo_cadastro_destinatario = $nfsData->tomador->tipo_cadastro; if ($nfseTO->tipo_cadastro_destinatario == 'pf') { $nfseTO->cpf_destinatario = $nfsData->tomador->cpf; } else { if ($nfseTO->tipo_cadastro_destinatario == 'pj') { $nfseTO->cnpj_destinatario = $nfsData->tomador->cnpj; $nfseTO->inscricao_municipal_destinatario = $nfsData->tomador->num_inscricao_municipal; } } $nfseTO->nome_destinatario = $nfseTO->tipo_cadastro_destinatario == 'pf' ? $nfsData->tomador->nome : $nfsData->tomador->razao_social; $nfseTO->logradouro_destinatario = $nfsData->tomador->endereco; $nfseTO->numero_destinatario = $nfsData->tomador->numero; $nfseTO->complemento_destinatario = $nfsData->tomador->end_complemento; $nfseTO->bairro_destinatario = $nfsData->tomador->bairro; $nfseTO->codigo_municipio_destinatario = $nfsData->tomador->id_ibge_municipio; $nfseTO->municipio_destinatario = $nfsData->tomador->nme_municipio; $nfseTO->uf_destinatario = $nfsData->tomador->uf; $nfseTO->estado_destinatario = $nfsData->tomador->nme_estado; $nfseTO->cep_destinatario = $nfsData->tomador->cep; $nfseTO->telefone_destinatario = $nfsData->tomador->tel_fixo; $nfseTO->email_destinatario = $nfsData->tomador->email; // outras informações $nfseTO->cod_empreendimento = $nfsData->emitente->id; $nfseTO->cod_cliente = $nfsData->tomador->id; $nfseTO->cod_ordem_servico = $nfsData->ordem_servico->cod_ordem_servico; $nfseTO->data_emissao = $nfsData->outros->data_emissao; $nfseTO->codigo_obra = isset($nfsData->outros->codigo_obra) ? $nfsData->outros->codigo_obra : null; $nfseTO->art = isset($nfsData->outros->art) ? $nfsData->outros->art : null; // Gravando os dados da NFS-e no banco de dados if (!isset($nfsData->outros->cod_nota_fiscal)) { $nfDao = new NotaFiscalDao(); $nf = $nfDao->getNotaByIdOrdemServico($nfseTO->cod_ordem_servico); if ($nf) { $cod_nota_fiscal = $nf['cod_nota_fiscal']; } else { $cod_nota_fiscal = $nfDao->saveNota($nfseTO); } } else { $cod_nota_fiscal = $nfsData->outros->cod_nota_fiscal; } if (!$cod_nota_fiscal) { Flight::halt(500, 'Erro ao gravar os dados da Nota Fiscal!'); } else { // Preparando o objeto de dados para transmissão da NFS-e $nfseFocusTO = new StdClass(); $nfseFocusTO->data_emissao = $nfseTO->data_emissao; $nfseFocusTO->status = 1; $nfseFocusTO->natureza_operacao = 1; $nfseFocusTO->tributacao_rps = "T"; $nfseFocusTO->optante_simples_nacional = $nfsData->emitente->cod_regime_tributario == 21 ? true : false; $nfseFocusTO->codigo_obra = $nfseTO->codigo_obra; $nfseFocusTO->art = $nfseTO->art; $nfseFocusTO->servico = new StdClass(); $nfseFocusTO->servico->valor_servicos = $nfseTO->valor_total_servicos; $nfseFocusTO->servico->valor_deducoes = $nfseTO->issqn_valor_total_deducao; $nfseFocusTO->servico->valor_pis = $nfseTO->valor_pis_servicos; $nfseFocusTO->servico->valor_cofins = $nfseTO->valor_cofins_servicos; $nfseFocusTO->servico->valor_inss = $nfseTO->valor_inss_servicos; $nfseFocusTO->servico->valor_ir = $nfseTO->valor_ir_servicos; $nfseFocusTO->servico->valor_csll = $nfseTO->valor_csll_servicos; $nfseFocusTO->servico->iss_retido = $nfseTO->issqn_retido; $nfseFocusTO->servico->valor_iss = $nfseTO->issqn_valor_total; $nfseFocusTO->servico->valor_iss_retido = $nfseTO->issqn_valor_retido; $nfseFocusTO->servico->outras_retencoes = $nfseTO->issqn_valor_total_outras_retencoes; $nfseFocusTO->servico->base_calculo = $nfseTO->issqn_base_calculo; $nfseFocusTO->servico->aliquota = $nfseTO->issqn_aliquota; $nfseFocusTO->servico->desconto_incondicionado = $nfseTO->issqn_valor_total_desconto_incondicionado; $nfseFocusTO->servico->desconto_condicionado = $nfseTO->issqn_valor_total_desconto_condicionado; $nfseFocusTO->servico->item_lista_servico = $nfseTO->issqn_item_lista_servico; $nfseFocusTO->servico->codigo_cnae = $nfseTO->issqn_codigo_cnae; $nfseFocusTO->servico->codigo_tributario_municipio = $nfseTO->issqn_codigo_tributario_municipio; $nfseFocusTO->servico->discriminacao = $nfseTO->discriminacao_servico; $nfseFocusTO->servico->codigo_municipio = $nfseTO->cod_ibge_municipio_destinatario; $nfseFocusTO->servico->percentual_total_tributos = $nfseTO->percentual_total_tributos; $nfseFocusTO->prestador = new StdClass(); $nfseFocusTO->prestador->cnpj = $nfseTO->cnpj_emitente; $nfseFocusTO->prestador->codigo_municipio = $nfseTO->cod_ibge_municipio_emitente; $nfseFocusTO->prestador->inscricao_municipal = $nfseTO->inscricao_municipal_emitente; $nfseFocusTO->tomador = new StdClass(); $nfseFocusTO->tomador->cpf = $nfseTO->cpf_destinatario; $nfseFocusTO->tomador->cnpj = $nfseTO->cnpj_destinatario; $nfseFocusTO->tomador->inscricao_municipal = $nfseTO->inscricao_municipal_destinatario; $nfseFocusTO->tomador->razao_social = $nfseTO->nome_destinatario; $nfseFocusTO->tomador->endereco = new StdClass(); $nfseFocusTO->tomador->endereco->logradouro = $nfseTO->logradouro_destinatario; $nfseFocusTO->tomador->endereco->numero = $nfseTO->numero_destinatario; $nfseFocusTO->tomador->endereco->complemento = $nfseTO->complemento_destinatario; $nfseFocusTO->tomador->endereco->bairro = $nfseTO->bairro_destinatario; $nfseFocusTO->tomador->endereco->codigo_municipio = $nfseTO->codigo_municipio_destinatario; $nfseFocusTO->tomador->endereco->uf = $nfseTO->uf_destinatario; $nfseFocusTO->tomador->endereco->cep = $nfseTO->cep_destinatario; $nfseFocusTO->tomador->telefone = $nfseTO->telefone_destinatario; $nfseFocusTO->tomador->email = $nfseTO->email_destinatario; // Obtendo configurações da API de emissão de NFS-e $confDao = new ConfiguracaoDao(); $conf = $confDao->getConfiguracoes($nfsData->emitente->id); $flg_ambiente_nfe = isset($conf['flg_ambiente_nfe']) && ((int) $conf['flg_ambiente_nfe'] == 1 || (int) $conf['flg_ambiente_nfe'] == 0) ? (int) $conf['flg_ambiente_nfe'] : 0; $apiTokens = array(); $apiTokens['token_focus_producao'] = isset($conf['token_focus_producao']) ? $conf['token_focus_producao'] : ''; $apiTokens['token_focus_homologacao'] = isset($conf['token_focus_homologacao']) ? $conf['token_focus_homologacao'] : ''; // Transmitindo a NFS-e $nfseDao = new NFSeDao($flg_ambiente_nfe, $apiTokens); $nfseDao->arr_nfse = $nfseFocusTO; $nfseDao->id_ref = $cod_nota_fiscal; $retorno = $nfseDao->sendNFSe(); // Tratando retorno da API de emissão de NFS-e switch ($retorno->statusCode) { case 202: $nfDao->changeStatusNota('processando_autorizacao', $cod_nota_fiscal); break; default: $nfDao->changeStatusNota('erro_autorizacao', $cod_nota_fiscal); Flight::halt($retorno->statusCode, $retorno->body); break; } } }