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 function getNfe($busca)
 {
     $sql = "SELECT * FROM tbl_nota_fiscal ";
     if (is_array($busca) && count($busca) > 0) {
         $where = prepareWhere($busca);
         $sql .= " WHERE " . $where;
     }
     $select = $this->conn->prepare($sql);
     if ($select->execute()) {
         if ($select->rowCount() > 0) {
             $nota = $select->fetch(PDO::FETCH_OBJ);
             $CidadeDao = new CidadeDao();
             $EstadoDao = new EstadoDao();
             $NotaFiscalItemDao = new NotaFiscalItemDao();
             $itens = $NotaFiscalItemDao->getItems($nota->cod_nota_fiscal);
             $saida = (object) array("dados_emissao" => (object) array(), "emitente" => (object) array(), "destinatario" => (object) array(), "itens" => array(), "ICMSTot" => (object) array(), "transportadora" => (object) array());
             $saida->dados_emissao->dsc_operacao = $nota->natureza_operacao;
             $saida->dados_emissao->serie_documento_fiscal = $nota->serie;
             $saida->dados_emissao->num_documento_fiscal = $nota->numero;
             $saida->dados_emissao->cod_nota_fiscal = $nota->cod_nota_fiscal;
             $saida->dados_emissao->cod_venda = $nota->cod_venda;
             $saida->dados_emissao->cod_empreendimento = $nota->cod_empreendimento;
             $saida->dados_emissao->nme_modelo_documento = $nota->modelo_documento;
             $saida->dados_emissao->cod_nota_fiscal = $nota->cod_nota_fiscal;
             $saida->dados_emissao->status = $nota->status;
             $saida->dados_emissao->status_sefaz = $nota->status_sefaz;
             $saida->dados_emissao->local_destino = $nota->local_destino;
             $saida->dados_emissao->finalidade_emissao = $nota->finalidade_emissao;
             $saida->dados_emissao->consumidor_final = $nota->consumidor_final;
             $saida->dados_emissao->forma_pagamento = $nota->forma_pagamento;
             $saida->dados_emissao->data_emissao = $nota->data_emissao;
             $saida->dados_emissao->data_entrada_saida = $nota->data_entrada_saida;
             $saida->dados_emissao->presenca_comprador = $nota->presenca_comprador;
             $saida->dados_emissao->tipo_documento = $nota->tipo_documento;
             $saida->dados_emissao->caminho_danfe = $nota->caminho_danfe;
             $saida->dados_emissao->caminho_xml_nota_fiscal = $nota->caminho_xml_nota_fiscal;
             $saida->transportadora->modalidade_frete = $nota->modalidade_frete;
             $saida->emitente->identificador = $nota->cod_empreendimento;
             $saida->emitente->CNPJ = $nota->cnpj_emitente;
             $saida->emitente->CPF = null;
             // não tem na focus
             $saida->emitente->xNome = $nota->nome_emitente;
             $saida->emitente->xFant = $nota->nome_fantasia_emitente;
             $saida->emitente->IE = $nota->inscricao_estadual_emitente;
             $saida->emitente->IEST = $nota->inscricao_estadual_st_emitente;
             $saida->emitente->CRT = $nota->regime_tributario_emitente;
             $saida->emitente->CEP = $nota->cep_emitente;
             $saida->emitente->nme_logradouro = $nota->logradouro_emitente;
             $saida->emitente->num_logradouro = $nota->numero_emitente;
             $saida->emitente->nme_bairro_logradouro = $nota->bairro_emitente;
             $saida->emitente->cidade = $CidadeDao->getCidade($nota->cod_cidade_emitente);
             $saida->emitente->estado = $EstadoDao->getEstado($nota->cod_estado_emitente);
             $saida->destinatario->identificador = $nota->cod_cliente;
             $saida->destinatario->CNPJ = $nota->cnpj_destinatario;
             $saida->destinatario->CPF = $nota->cpf_destinatario;
             $saida->destinatario->idEstrangeiro = $nota->id_estrangeiro_destinatario;
             $saida->destinatario->xNome = $nota->nome_destinatario;
             $saida->destinatario->xFant = $nota->nome_destinatario;
             $saida->destinatario->indIEDest = $nota->indicador_inscricao_estadual_destinatario;
             $saida->destinatario->IE = $nota->inscricao_estadual_destinatario;
             $saida->destinatario->IEST = null;
             // Não tem na focus
             $saida->destinatario->IM = $nota->inscricao_estadual_st_destinatario;
             // *
             $saida->destinatario->email = $nota->email_destinatario;
             $saida->destinatario->tipo_cadastro = $nota->tipo_cadastro_destinatario;
             $saida->destinatario->CEP = $nota->cep_destinatario;
             $saida->destinatario->nme_logradouro = $nota->logradouro_destinatario;
             $saida->destinatario->num_logradouro = $nota->numero_destinatario;
             $saida->destinatario->nme_bairro_logradouro = $nota->bairro_destinatario;
             $saida->destinatario->cidade = (object) $CidadeDao->getCidade($nota->cod_cidade_destinatario);
             $saida->destinatario->estado = (object) $EstadoDao->getEstado($nota->cod_estado_destinatario);
             foreach ($itens as $key => $prd) {
                 $item = (object) array("imposto" => (object) array("vTotTrib" => null, "ICMS" => (object) array(), "IPI" => (object) array(), "PIS" => (object) array(), "COFINS" => (object) array()), "prod" => (object) array());
                 $item->nItem = $prd->numero_item;
                 $item->ICMSTot = null;
                 // onde esta essa cara?
                 $item->imposto->ICMS->orig = $prd->icms_origem;
                 $item->imposto->ICMS->CST = $prd->icms_situacao_tributaria;
                 $item->imposto->ICMS->CSOSN = null;
                 /* gravar, mas não vai */
                 $item->imposto->ICMS->modBC = $prd->icms_modalidade_base_calculo;
                 $item->imposto->ICMS->pRedBC = $prd->icms_reducao_base_calculo;
                 $item->imposto->ICMS->vBC = $prd->icms_base_calculo;
                 $item->imposto->ICMS->vBC_Desonerado = null;
                 /* gravar, mas não vai */
                 $item->imposto->ICMS->pICMS = $prd->icms_aliquota;
                 $item->imposto->ICMS->pICMS_Desonerado = null;
                 /* gravar, mas não vai */
                 $item->imposto->ICMS->vICMSOp = $prd->icms_valor_operacao;
                 $item->imposto->ICMS->pDif = $prd->icms_percentual_diferimento;
                 $item->imposto->ICMS->vICMSDif = $prd->icms_valor_diferido;
                 $item->imposto->ICMS->vICMS = $prd->icms_valor;
                 $item->imposto->ICMS->vICMS_Desonerado = $prd->icms_valor_desonerado;
                 $item->imposto->ICMS->modBCST = $prd->icms_modalidade_base_calculo_st;
                 $item->imposto->ICMS->pMVAST = $prd->icms_margem_valor_adicionado_st;
                 $item->imposto->ICMS->pRedBCST = $prd->icms_reducao_base_calculo_st;
                 $item->imposto->ICMS->vBCST = $prd->icms_base_calculo_st;
                 $item->imposto->ICMS->vBCST_NaoDestacado = null;
                 /* gravar, mas não vai */
                 $item->imposto->ICMS->pICMSST = $prd->icms_aliquota_st;
                 $item->imposto->ICMS->vICMSST = $prd->icms_valor_st;
                 $item->imposto->ICMS->vICMSST_NaoDestacado = null;
                 /* gravar, mas não vai */
                 $item->imposto->ICMS->UFST = $prd->icms_base_calculo_uf_destino;
                 $item->imposto->ICMS->pBCOp = null;
                 /* gravar, mas não vai */
                 $item->imposto->ICMS->vBCSTRet = $prd->icms_base_calculo_retido_st;
                 $item->imposto->ICMS->vICMSSTRet = $prd->icms_valor_retido_st;
                 $item->imposto->ICMS->vICMSDeson = null;
                 /*icms_valor_desonerado*/
                 $item->imposto->ICMS->motDesICMS = $prd->icms_motivo_desoneracao;
                 $item->imposto->ICMS->pCredSN = null;
                 $item->imposto->ICMS->vCredICMSSN = null;
                 $item->imposto->ICMS->vBCSTDest = null;
                 /* gravar, mas não vai */
                 $item->imposto->ICMS->vICMSSTDest = $prd->icms_valor_uf_destino;
                 $item->imposto->PIS->CST = $prd->pis_situacao_tributaria;
                 $item->imposto->PIS->vBC = $prd->pis_base_calculo;
                 $item->imposto->PIS->pPIS = $prd->pis_aliquota_porcentual;
                 $item->imposto->PIS->vPIS = $prd->pis_valor;
                 $item->imposto->PIS->qBCProd = $prd->pis_quantidade_vendida;
                 $item->imposto->PIS->vAliqProd = null;
                 // não é usado, tem que gravar
                 $item->imposto->IPI->clEnq = $prd->ipi_classe_enquadramento;
                 $item->imposto->IPI->CNPJProd = $prd->ipi_cnpj_produtor;
                 $item->imposto->IPI->cSelo = $prd->ipi_codigo_selo_controle;
                 $item->imposto->IPI->qSelo = $prd->ipi_quantidade_selo_controle;
                 $item->imposto->IPI->cEnq = $prd->ipi_codigo_enquadramento_legal;
                 $item->imposto->IPI->CST = $prd->ipi_situacao_tributaria;
                 $item->imposto->IPI->vBC = $prd->ipi_base_calculo;
                 $item->imposto->IPI->qUnid = $prd->ipi_quantidade_total;
                 $item->imposto->IPI->vUnid = $prd->ipi_valor_por_unidade_tributavel;
                 $item->imposto->IPI->pIPI = $prd->ipi_aliquota;
                 $item->imposto->IPI->vIPI = $prd->ipi_valor;
                 $item->imposto->COFINS->CST = $prd->cofins_situacao_tributaria;
                 $item->imposto->COFINS->vBC = $prd->cofins_base_calculo;
                 $item->imposto->COFINS->pCOFINS = $prd->cofins_aliquota_porcentual;
                 $item->imposto->COFINS->qBCProd = $prd->cofins_quantidade_vendida;
                 $item->imposto->COFINS->vAliqProd = null;
                 // não é usado, tem que gravar
                 $item->imposto->COFINS->vCOFINS = $prd->cofins_valor;
                 $item->prod->identificador = $prd->codigo_produto;
                 $item->prod->TipoTributacaoIPI = null;
                 // não é usado, tem que gravar
                 $item->prod->OrigemMercadoria = null;
                 // não é usado, tem que gravar
                 $item->prod->FormaAquisicao = null;
                 // não é usado, tem que gravar
                 $item->prod->cProd = $prd->codigo_produto;
                 $item->prod->cEAN = null;
                 //  (é o codigo de barras , colocar para enviar para a focus)
                 $item->prod->xProd = $prd->descricao;
                 $item->prod->NCM = $prd->codigo_ncm;
                 $item->prod->NVE = null;
                 // não é usado, tem que gravar
                 $item->prod->EXTIPI = null;
                 // codigo_ex_tipi
                 $item->prod->CFOP = $prd->cfop;
                 $item->prod->uCom = $prd->unidade_comercial;
                 $item->prod->qCom = $prd->quantidade_comercial;
                 $item->prod->vUnCom = $prd->valor_unitario_comercial;
                 $item->prod->vProd = $prd->valor_bruto;
                 $item->prod->cEANTrib = null;
                 // (é o codigo de barras tributario , colocar para enviar para a focus)
                 $item->prod->uTrib = $prd->unidade_tributavel;
                 $item->prod->qTrib = $prd->quantidade_tributavel;
                 $item->prod->vUnTrib = $prd->valor_unitario_tributavel;
                 $item->prod->vFrete = $prd->valor_frete;
                 $item->prod->vSeg = $prd->valor_seguro;
                 $item->prod->vDesc = $prd->valor_desconto;
                 $item->prod->vOutro = $prd->valor_outras_despesas;
                 $item->prod->indTot = $prd->inclui_no_total;
                 $saida->itens[] = $item;
             }
             $saida->ICMSTot->vBC = $nota->icms_base_calculo;
             $saida->ICMSTot->vICMS = $nota->icms_base_calculo;
             $saida->ICMSTot->vICMSDeson = $nota->icms_valor_total_desonerado;
             $saida->ICMSTot->vBCST = $nota->icms_base_calculo_st;
             $saida->ICMSTot->vST = $nota->icms_valor_total_st;
             $saida->ICMSTot->vProd = $nota->valor_produtos;
             $saida->ICMSTot->vFrete = $nota->valor_frete;
             $saida->ICMSTot->vSeg = $nota->valor_seguro;
             $saida->ICMSTot->vDesc = $nota->valor_desconto;
             $saida->ICMSTot->vII = $nota->valor_total_ii;
             $saida->ICMSTot->vIPI = $nota->valor_ipi;
             $saida->ICMSTot->vPIS = $nota->valor_pis;
             $saida->ICMSTot->vCOFINS = $nota->valor_cofins;
             $saida->ICMSTot->vOutro = $nota->valor_outras_despesas;
             $saida->ICMSTot->vNF = $nota->valor_total;
             $saida->ICMSTot->vTotTrib = null;
             // não é usado, tem que gravar
             return $saida;
         } else {
             return false;
         }
     } else {
         $e = $select->errorInfo();
         throw new Exception($e[2], 1);
     }
 }