Se quiserem disponibilizo a rotina de emissao de NFC-e usando a SEFAZCLASS , com pequenas adaptações a coisa fica pronta
STATIC FUNCTION ENVIAR_NFCE( tEMISSAO, nPEDIDO, nCPFCNPJ )
Local bREGERA := .F., minfNFe, Mn_nNF, Mn_serie, Mb_indPag , cPrefixo
ThisNFE:oLabel5:SetText("Verificando Dados.... ")
ThisNFE:oProgressbar1:Set(,30)
SELE NOTAFCE
SET ORDER TO 1
IF DBSEEK(STRZERO(mNUMNOT,6,0))
ThisNFE:oLabel5:SetText("Consultando se NFC-e Existe ")
SELE CERTIFICADO
IF !DBSEEK(rtrim(hwg_GetComputerName()))
hwg_MsgInfo("Computador sem o CERTIFICADO DIGITAL instalado"+ HB_EOL()+"A Operação não poderá ser efetuada")
SELE NOTAFCE
RETURN NIL
endif
SELE NOTAFCE
oSefaz := SefazClass():New()
oSefaz:cCertificado := TRIM(CERTIFICADO->NOMCERT)
oSefaz:cNFCE := "S"
cXmlRetorno := oSefaz:NFeConsultaProtocolo( substr(NOTAFCE->a_Id,4,44), ALLTRIM(oSefaz:cCertificado) , FLAG->n_tpAmb )
IF oSefaz:cStatus $ "100,101,150,301,302"
ThisNFE:oLabel5:SetText("Não pode Enviar pois NFC-e já existe na base da SEFAZ")
ThisNFE:oOwnerbutton4:DISABLE( )
hwg_MsgInfo("MOTIVO: " + XmlNode(cXmlRetorno, "xMotivo")+ HB_EOL() +HB_EOL() + ;
"STATUS: " + XmlNode(cXmlRetorno, "cStat")+ HB_EOL() + ;
"DATA: " + XmlNode(cXmlRetorno, "dhRecbto")+ HB_EOL()+ ;
"CHAVE: " + XmlNode(cXmlRetorno, "chNFe")+ HB_EOL()+ ;
"PROTOCOLO: " + XmlNode(cXmlRetorno, "nProt")+ HB_EOL() )
SELE NOTAFCE
RETURN NIL
ENDIF
ThisNFE:oLabel5:SetText("Re-gerando dados da NFC-e ")
Mn_nNF :=NOTAFCE->b_nNF
Mn_serie :=NOTAFCE->b_serie
minfNFe :=SUBSTR(NOTAFCE->a_Id,4,44)
Mb_indPag :="1"
cPrefixo := hb_Dirbase()+"\xml\retorno\NFCe" + NOTAFCE->b_serie + NOTAFCE->b_nNF
ELSE
ThisNFE:oLabel5:SetText("Gerando dados para Nova NFC-e ")
SELE NOTAFCE
DBAPPEND()
Mn_nNF :=STRZERO(VAL(FLAG->n_nNFC),9,0)
Mn_serie :=STRZERO(VAL(FLAG->n_serieNFC),3,0 )
Mb_indPag :="1"
minfNFe :=MONTA_CHAVE( )
NOTAFCE->a_versao := "3.10"
NOTAFCE->a_Id := 'NFe'+minfNFe
NOTAFCE->b_cUF := FLAG->n_cUF
NOTAFCE->b_cNF := FLAG->n_cNF
NOTAFCE->b_natOp := FLAG->n_natOp
NOTAFCE->b_indPag := PEDIDO->b_indPag
NOTAFCE->b_mod := FLAG->n_modNFC
NOTAFCE->b_serie := FLAG->n_serieNFC
NOTAFCE->b_nNF := FLAG->n_nNFC
DBCOMMIT()
SELE FLAG
DO WHILE ! RLOCK()
hwg_MsgInfo("Registro em uso por outro Operador"+ HB_EOL()+"Solicite ao Outro Operador a Liberacao")
END
FLAG->n_cNF := strzero(HB_RandomInt(1, 99999999),8,0)
FLAG->n_nNFC := strzero(val(FLAG->n_nNFC)+1,9,0)
DBUNLOCK()
DBCOMMIT()
SELE NOTAFCE
cPrefixo := hb_Dirbase()+"\xml\retorno\NFCe" + NOTAFCE->b_serie + NOTAFCE->b_nNF
ENDIF
// ThisNFE:oLabel4:setText("65/"+Mn_serie+"/"+Mn_nNF)
SELE PEDIDO
DO WHILE ! RLOCK()
hwg_MsgInfo("Registro em uso por outro Operador"+ HB_EOL()+"Solicite ao Outro Operador a Liberacao")
END
SELE NOTAFCE
DO WHILE ! RLOCK()
hwg_MsgInfo("Registro em uso por outro Operador"+ HB_EOL()+"Solicite ao Outro Operador a Liberacao")
END
NOTAFCE->b_dhSaiEnt := SPACE(25)
NOTAFCE->b_tpNF := "1" && tipo de operacao 0-entrada 1-saida
NOTAFCE->b_idDest := "1" && operacao local
NOTAFCE->b_cMunFG := FLAG->n_cMun
NOTAFCE->b_tpImp := "4" && 4 = CUPOM FISCAL
NOTAFCE->b_tpEmis := "1"
NOTAFCE->b_cDV := SUBSTR(minfNFe,44,1)
NOTAFCE->b_tpAmb := FLAG->n_tpAmb && tipo de ambiente 1-producao 2-homologacao
NOTAFCE->b_finNFe := "1" && FINALIDADE 1=NFe normal
NOTAFCE->b_indFinal := "1" && 0=normal 1=consumidor final
NOTAFCE->b_indPres := "1"
// NOTAFCE->b_procEmi := "3" && 3=emissao NFe app do fisco
// NOTAFCE->b_verProc := FLAG->b_verProc && versao do app do fisco
NOTAFCE->b_procEmi := "0" && 0=emissao NFCe app do CLIENTE
NOTAFCE->b_verProc := "1.0" && FLAG->b_verProc versao do app do cliente
NOTAFCE->b_dhCont := SPACE(25)
NOTAFCE->b_xJust := SPACE(256)
NOTAFCE->c_CNPJ := FLAG->n_CNPJ
NOTAFCE->c_xNome := FLAG->n_xNome
NOTAFCE->c_xFant := FLAG->n_xFant
NOTAFCE->c_xLgr := FLAG->n_xLgr
NOTAFCE->c_nro := FLAG->n_nro
NOTAFCE->c_xCpl := FLAG->n_xCpl
NOTAFCE->c_xBairro := FLAG->n_xBairro
NOTAFCE->c_cMun := FLAG->n_cMun
NOTAFCE->c_xMun := FLAG->n_xMun
NOTAFCE->c_UF := FLAG->n_xUF
NOTAFCE->c_CEP := FLAG->n_CEP
NOTAFCE->c_cPais := FLAG->n_cPais
NOTAFCE->c_xPais := FLAG->n_xPais
NOTAFCE->c_fone := FLAG->n_fone
NOTAFCE->c_IE := FLAG->n_IE
NOTAFCE->c_IEST := space(14) && IE do substituto tributario
NOTAFCE->c_IM := FLAG->n_IM
NOTAFCE->c_CNAE := FLAG->n_CNAE
NOTAFCE->c_CRT := FLAG->n_CRT
NOTAFCE->e_CNPJ := PEDIDO->e_CNPJ
NOTAFCE->e_IdEstr := PEDIDO->e_IdEstr
NOTAFCE->e_xNome := PEDIDO->e_xNome
// if FLAG->n_tpAmb = "2"
// NOTAFCE->e_xNome := "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"
// endif
NOTAFCE->e_xLgr := PEDIDO->e_xLgr
NOTAFCE->e_nro := PEDIDO->e_nro
NOTAFCE->e_xCpl := PEDIDO->e_xCpl
NOTAFCE->e_xBairr := PEDIDO->e_xBairr
NOTAFCE->e_cMun := PEDIDO->e_cMun
NOTAFCE->e_xMun := PEDIDO->e_xMun
NOTAFCE->e_UF := PEDIDO->e_UF
NOTAFCE->e_CEP := TIRAPONTO(PEDIDO->e_CEP)
NOTAFCE->e_cPais := PEDIDO->e_cPais
NOTAFCE->e_xPais := PEDIDO->e_xPais
NOTAFCE->e_fone := PEDIDO->e_fone
NOTAFCE->e_IE := PEDIDO->e_IE
NOTAFCE->e_indIE := PEDIDO->e_indIE
NOTAFCE->e_ISUF := PEDIDO->e_ISUF
NOTAFCE->e_eMAIL := PEDIDO->e_eMAIL
NOTAFCE->NUMNOT := STRZERO(mNUMNOT,6,0)
mINFCPL := cMemo1
IF FILE("C:\TEMP\NFCEITENS.DBF")
FILEDELETE("C:\TEMP\NFCEITENS.DBF")
FILEDELETE("C:\TEMP\NFCEITENS.001")
ENDIF
IF ! ABRE_NFCEITEM()
DBCLOSEALL()
RETURN (NIL)
END
IF ! ABRE_ITENS(SUBSTR(DTOS(PEDIDO->DATVEN),3,6))
DBCLOSEALL()
RETURN (NIL)
END
IF ! DBSEEK(PEDIDO->NUMNOT, .T.)
hwg_MsgInfo("ERRO DE POSICIONAMENTO - SGC4800"+ HB_EOL()+"GERANDO ITENS DA NF-e" )
DBUNLOCKALL()
DBCOMMITALL()
DBCLOSEALL()
hwg_Enddialog()
QUIT
END
M->i_nItem :=0
M->m_vTotFed :=0
M->m_vTotEst :=0
M->m_vTotTrib :=0
************************************************************************************************************************************
DO WHILE ITENS->NUMNOT = PEDIDO->NUMNOT
SELE PRODUTOS
IF ! DBSEEK(STRZERO(VAL(ITENS->CODPRO),7,0))
hwg_MsgInfo( "ERRO DE POSICIONAMENTO - SGC4800"+ HB_EOL()+"GERANDO ITENS DA NF-e"+ HB_EOL()+"PRODUTOS NAO EXISTE NO CADASTRO - "+STRZERO(VAL(ITENS->CODPRO),7,0) )
DBUNLOCKALL()
DBCOMMITALL()
DBCLOSEALL()
return nil
END
IF PRODUTOS->PROSER = "2"
SELE ITENS
DBSKIP()
LOOP
ENDIF
SELE NCMBASE
IF PRODUTOS->NCM =0
hwg_MsgInfo( "PRODUTO SEM NCM - FAVOR CADASTRAR "+ HB_EOL()+PRODUTOS->DESPRO+ HB_EOL()+"NFe - Nao Pode Ser Emitida" )
DBUNLOCKALL()
DBCOMMITALL()
DBCLOSEALL()
return nil
END
IF .NOT. DBSEEK(STRZERO(produtos->NCM,8,0))
hwg_MsgInfo( "PRODUTO COM NCM INVALIDO - FAVOR CADASTRAR CORRETAMENTE "+ HB_EOL()+PRODUTOS->DESPRO+ HB_EOL()+"NFe - Nao Pode Ser Emitida" )
DBUNLOCKALL()
DBCOMMITALL()
DBCLOSEALL()
return nil
END
SELE NFCEITENS
DBAPPEND()
NFCEITENS->NUMNOT := ITENS->NUMNOT && numero da nota de pedido
NFCEITENS->i_versao := NOTAFCE->a_versao
NFCEITENS->i_Id := NOTAFCE->a_Id
NFCEITENS->i_nItem := STR(++M->i_nItem,3,0) && numero do item varia entre 001-990
NFCEITENS->i_cProd := substr(STRZERO(VAL(ITENS->CODPRO),7,0),1,6)+"-"+substr(STRZERO(VAL(ITENS->CODPRO),7,0),7,1)
NFCEITENS->i_cEAN := if(PRODUTOS->EAN13 = 0,SPACE(14),STR(PRODUTOS->EAN13))
if FLAG->n_tpAmb = "2" .AND. VAL(NFCEITENS->i_nItem) = 1
NFCEITENS->i_xProd := "NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"
ELSE
NFCEITENS->i_xProd := ITENS->DESPRO
endif
NFCEITENS->i_NCM := STRZERO(PRODUTOS->NCM,8,0)
** NFCEITENS->i_NVE := STRZERO(PRODUTOS->NVE,6,0) && nao existe no cadastro
NFCEITENS->i_EXTIPI := STRZERO(PRODUTOS->EXTIPI,3,0)
if flag->n_xUF = mUF
NFCEITENS->i_CFOP := PRODUTOS->ICMS_CFOP
else
NFCEITENS->i_CFOP := PRODUTOS->ICMS_CFOPI
endif
NFCEITENS->i_uCom := PRODUTOS->TIPUNI
NFCEITENS->i_qCom := ITENS->QTDPRO
NFCEITENS->i_vUnCom := ITENS->VLRUNI
NFCEITENS->i_vProd := ROUND((ITENS->QTDPRO * ITENS->VLRUNI),2)
NFCEITENS->i_cEANTrib := if(PRODUTOS->EAN13 = 0,SPACE(14),STR(PRODUTOS->EAN13))
NFCEITENS->i_uTrib := PRODUTOS->TIPUNI
NFCEITENS->i_qTrib := ITENS->QTDPRO
NFCEITENS->i_vUnTrib := ITENS->VLRUNI
NFCEITENS->i_vFrete := 0.00 && valor do frete implementacao futura
NFCEITENS->i_vSeg := 0.00 && valor do seguro implementacao futura
NFCEITENS->i_vDesc := round((PEDIDO->TOTDES*((ITENS->QTDPRO * ITENS->VLRUNI)/(PEDIDO->TOT_PROD+PEDIDO->TOTDES))),2) && valor do desconto implementacao futura
NFCEITENS->i_vOutro := 0.00
NFCEITENS->i_indTot := 1
IF PRODUTOS->ICMS_ORIGE$"0345"
NFCEITENS->m_vTotFed := ((ITENS->QTDPRO * ITENS->VLRUNI)*NCMBASE->NACFED)/100
NFCEITENS->m_vTotEst := ((ITENS->QTDPRO * ITENS->VLRUNI)*NCMBASE->ESTADUAL)/100
NFCEITENS->m_vTotTrib:= NFCEITENS->m_vTotFed + NFCEITENS->m_vTotEst
ELSE
NFCEITENS->m_vTotFed := ((ITENS->QTDPRO * ITENS->VLRUNI)*NCMBASE->IMPFED)/100
NFCEITENS->m_vTotEst := ((ITENS->QTDPRO * ITENS->VLRUNI)*NCMBASE->ESTADUAL)/100
NFCEITENS->m_vTotTrib:= NFCEITENS->m_vTotFed + NFCEITENS->m_vTotEst
ENDIF
NFCEITENS->CEST := PRODUTOS->CEST
NFCEITENS->i_xPed := PEDIDO->NUMNOT
******************************************
***GRUPO DE TRIBUTAçAO SIMPLES NACIONAL
******************************************
IF PRODUTOS->ICMS_REGIM = "1"
NFCEITENS->ICMS_REGIM :=PRODUTOS->ICMS_REGIM
NFCEITENS->ICMS_ST :=PRODUTOS->ICMS_ST
NFCEITENS->ICMS_ORIGE :=PRODUTOS->ICMS_ORIGE
NFCEITENS->q_CST :=PRODUTOS->q_PISst && PIS 99 outras operacoes
NFCEITENS->q_vBC :=0.00 && valor da base de calculo
NFCEITENS->q_pPIS :=0.0000 && aliquota em percentual
NFCEITENS->q_vAlqProd :=0.00 && aliquota em reais
NFCEITENS->q_PISQtde :=0.00 && quantidade vendida
NFCEITENS->q_vPIS :=0.00
NFCEITENS->s_CST :=PRODUTOS->s_COFst && COFINS 99 outras operacoes
NFCEITENS->s_vBC :=0.00 && valor da base de calculo
NFCEITENS->s_pCOFINS :=0.0000 && aliquota em percentual
NFCEITENS->s_vAlqProd :=0.00 && aliquota em reais
NFCEITENS->s_COFSQtde :=0.00 && quantidade vendida
NFCEITENS->s_vCOFINS :=0.00
NFCEITENS->i_nItemPed := LTRIM(STR(M->i_nItem,3,0))
endif
******************************************
***GRUPO DE TRIBUTAçAO SIMPLES NACIONAL - excesso de sublimite de receita bruta
******************************************
IF PRODUTOS->ICMS_REGIM = "2"
NFCEITENS->ICMS_REGIM :=PRODUTOS->ICMS_REGIM
NFCEITENS->ICMS_ST :=PRODUTOS->ICMS_ST
NFCEITENS->ICMS_ORIGE :=PRODUTOS->ICMS_ORIGE
NFCEITENS->q_CST :=PRODUTOS->q_PISst && PIS 99 outras operacoes
NFCEITENS->q_vBC :=0.00 && valor da base de calculo
NFCEITENS->q_pPIS :=0.0000 && aliquota em percentual
NFCEITENS->q_vAlqProd :=0.00 && aliquota em reais
NFCEITENS->q_PISQtde :=0.00 && quantidade vendida
NFCEITENS->q_vPIS :=0.00
NFCEITENS->s_CST :=PRODUTOS->s_COFst && COFINS 99 outras operacoes
NFCEITENS->s_vBC :=0.00 && valor da base de calculo
NFCEITENS->s_pCOFINS :=0.0000 && aliquota em percentual
NFCEITENS->s_vAlqProd :=0.00 && aliquota em reais
NFCEITENS->s_COFSQtde :=0.00 && quantidade vendida
NFCEITENS->s_vCOFINS :=0.00
endif
**************************************************************************
***GRUPO DE TRIBUTAçAO NORMAL ICMS=00/10/20/30/40/41/50/51/60/70/90
**************************************************************************
IF PRODUTOS->ICMS_REGIM = "3"
NFCEITENS->ICMS_REGIM :=PRODUTOS->ICMS_REGIM
NFCEITENS->ICMS_ST :=PRODUTOS->ICMS_ST
NFCEITENS->ICMS_ORIGE :=PRODUTOS->ICMS_ORIGE
NFCEITENS->o_cEnc :=PRODUTOS->o_cEnc
NFCEITENS->o_CST :=PRODUTOS->o_CST
NFCEITENS->o_vBC :=0.00 && valor da base de calculo
NFCEITENS->o_pIPI :=0.0000 && aliquota em percentual
NFCEITENS->o_vIPI :=0.00
NFCEITENS->q_CST :=PRODUTOS->q_PISst && PIS 99 outras operacoes
NFCEITENS->q_vBC :=0.00 && valor da base de calculo
NFCEITENS->q_pPIS :=0.0000 && aliquota em percentual
NFCEITENS->q_vAlqProd :=0.00 && aliquota em reais
NFCEITENS->q_PISQtde :=0.00 && quantidade vendida
NFCEITENS->q_vPIS :=0.00
NFCEITENS->s_CST :=PRODUTOS->s_COFst && COFINS 99 outras operacoes
NFCEITENS->s_vBC :=0.00 && valor da base de calculo
NFCEITENS->s_pCOFINS :=0.0000 && aliquota em percentual
NFCEITENS->s_vAlqProd :=0.00 && aliquota em reais
NFCEITENS->s_COFSQtde :=0.00 && quantidade vendida
NFCEITENS->s_vCOFINS :=0.00
ENDIF
SELE ITENS
mTOTNOTA += round((ITENS->QTDPRO * ITENS->VLRUNI),2)
mTOTDESC += round((PEDIDO->TOTDES*((ITENS->QTDPRO * ITENS->VLRUNI)/(PEDIDO->TOT_PROD+PEDIDO->TOTDES))),2)
mm_vTotFed += NFCEITENS->m_vTotFed
mm_vTotEst += NFCEITENS->m_vTotEst
mm_vTotTrib += NFCEITENS->m_vTotTrib
DBSKIP()
ENDD
********************************************************************************************************************************************
NOTAFCE->w_vPROD:=mTOTNOTA
NOTAFCE->w_vDesc:=mTOTDESC
NOTAFCE->w_vNF :=(mTOTNOTA - mTOTDESC)
mINFCPL :=STRTRAN(mINFCPL,"<TRIBFED>",ALLTRIM(str(mm_vTotFed)))
mINFCPL :=STRTRAN(mINFCPL,"<TRIBEST>",ALLTRIM(str(mm_vTotEst)))
NOTAFCE->z_infCpl := mINFCPL
*
* -------> arredondando o centavo perdido no ultimo item do pedido
*
IF (PEDIDO->TOTDES - mTOTDESC) > 0.00
NOTAFCE->w_vDesc +=(PEDIDO->TOTDES - mTOTDESC)
NOTAFCE->w_vNF -=(PEDIDO->TOTDES - mTOTDESC)
NFCEITENS->i_vDesc +=(PEDIDO->TOTDES - mTOTDESC)
ENDIF
nEdit12:= NOTAFCE->w_vNF
nEdit13:= NOTAFCE->w_vDesc
sele NFCEITENS
DBGOTOP()
mTOTITENS:=0.00
mTOTDESC:=0.00
do while .not. eof()
mTOTITENS += (NFCEITENS->i_vProd - NFCEITENS->i_vDesc)
mTOTDESC += NFCEITENS->i_vDesc
DBSKIP()
ENDDO
NFCEITENS->i_vDesc +=(PEDIDO->TOTDES - mTOTDESC)
NOTAFCE->w_vNF := mTOTITENS
NOTAFCE->w_vDesc := mTOTDESC
*************************************************************************************************************************
ThisNFE:oLabel5:SetText("Gerando arquivo de Transmissao XML ")
ThisNFE:oProgressbar1:Set(,50)
M->cXml := '<NFe xmlns="http://www.portalfiscal.inf.br/nfe">'
M->cXml += '<infNFe Id="'+ NOTAFCE->a_Id + '" versao="'+NOTAFCE->a_versao+'">'
M->cXml += '<ide>'
M->cXml += '<cUF>' +NOTAFCE->b_cUF +'</cUF>'
M->cXml += '<cNF>' +NOTAFCE->b_cNF +'</cNF>'
M->cXml += '<natOp>' +RTRIM(NOTAFCE->b_natOp) +'</natOp>'
M->cXml += '<indPag>' +Mb_indPag +'</indPag>' && 0-A VISTA 1-A PRAZO 2-OUTROS
M->cXml += '<mod>' +NOTAFCE->b_mod +'</mod>'
M->cXml += '<serie>' +ALLTRIM(STR(VAL(NOTAFCE->b_serie))) +'</serie>'
M->cXml += '<nNF>' +ALLTRIM(STR(VAL(NOTAFCE->b_nNF))) +'</nNF>'
M->cXml += '<dhEmi>' +DateTimeXml(DATE(),TIME() ,FLAG->n_xUF,.T. )+'</dhEmi>'
M->cXml += '<tpNF>' +NOTAFCE->b_tpNF +'</tpNF>' && 0-ENTRADA 1-SAIDA
M->cXml += '<idDest>' +NOTAFCE->b_idDest +'</idDest>' && id de destino da operacao 1=interna 2=interestadual 3=exterior
M->cXml += '<cMunFG>' +NOTAFCE->b_cMunFG +'</cMunFG>'
M->cXml += '<tpImp>' +NOTAFCE->b_tpImp +'</tpImp>' && formato impressao
M->cXml += '<tpEmis>' +NOTAFCE->b_tpEmis +'</tpEmis>' && tipo emissao 4 = CUPOM FISCAL
M->cXml += '<cDV>' +NOTAFCE->b_cDV +'</cDV>'
M->cXml += '<tpAmb>' +NOTAFCE->b_tpAmb +'</tpAmb>' && TIPO DE AMBIENTE 1-PRODUCAO 2-DESENVOLVIMENTO
M->cXml += '<finNFe>' +NOTAFCE->b_finNFe +'</finNFe>' && finalidade da emissao 1-normal 2-complementar 3-ajuste 4-devolucao
M->cXml += '<indFinal>' +NOTAFCE->b_indFinal +'</indFinal>' && operacao com consumidor final 0-normal 1-consumidor final
M->cXml += '<indPres>' +SUBSTR(aINDPRES[nCombo1],1,1) +'</indPres>' && indicador de presenca do comprador 1-operacao presencial
M->cXml += '<procEmi>' +NOTAFCE->b_procEmi +'</procEmi>' && processo de emissao da NFe 3-app fornecido pelo fisco
M->cXml += '<verProc>' +ALLTRIM(NOTAFCE->b_verProc) +'</verProc>'
M->cXml += '</ide>'
*************************************************************************************************************************
M->cXml += '<emit>'
IF LEN(NOTAFCE->c_CNPJ) > 11
M->cXml += '<CNPJ>' +ALLTRIM(NOTAFCE->c_CNPJ) +'</CNPJ>'
ELSE
M->cXml += '<CPF>' +ALLTRIM(NOTAFCE->c_CNPJ) +'</CPF>'
ENDIF
M->cXml += '<xNome>' +rtrim(TIRACENTO(NOTAFCE->c_xNome)) +'</xNome>'
M->cXml += '<xFant>' +RTRIM(TIRACENTO(NOTAFCE->c_xFant)) +'</xFant>'
M->cXml += '<enderEmit>'
M->cXml += '<xLgr>' +rtrim(TIRACENTO(NOTAFCE->c_xLgr)) +'</xLgr>'
M->cXml += '<nro>' +rtrim(NOTAFCE->c_nro) +'</nro>'
if NOTAFCE->c_xCpl <> space(60)
M->cXml += '<xCpl>' +rtrim(NOTAFCE->c_xCpl) +'</xCpl>'
endif
M->cXml += '<xBairro>' +rtrim(NOTAFCE->c_xBairro) +'</xBairro>'
M->cXml += '<cMun>' +NOTAFCE->c_cMun +'</cMun>'
M->cXml += '<xMun>' +rtrim(NOTAFCE->c_xMun) +'</xMun>'
M->cXml += '<UF>' +NOTAFCE->c_UF +'</UF>'
M->cXml += '<CEP>' +NOTAFCE->c_CEP +'</CEP>'
M->cXml += '<cPais>' +NOTAFCE->c_cPais +'</cPais>'
M->cXml += '<xPais>' +rtrim(NOTAFCE->c_xPais) +'</xPais>'
M->cXml += '<fone>' +rtrim(NOTAFCE->c_fone) +'</fone>'
M->cXml += '</enderEmit>'
IF FLAG->n_IE <> SPACE(14)
M->cXml += '<IE>' +rtrim(NOTAFCE->c_IE) +'</IE>'
ENDIF
*** IF FLAG->n_IM <> SPACE(15)
*** M->cXml += '<IM>' +rtrim(NOTAFCE->c_IM) +'</IM>'
*** M->cXml += '<CNAE>' +NOTAFCE->c_CNAE +'</CNAE>'
*** ENDIF
M->cXml += '<CRT>' +NOTAFCE->c_CRT +'</CRT>'
M->cXml += '</emit>'
*************************************************************************************************************************
IF LEN(ALLTRIM(NOTAFCE->e_CNPJ)) # 0
IF LEN(ALLTRIM(NOTAFCE->e_CNPJ)) > 11
M->cXml += '<dest>'
M->cXml += '<CNPJ>' +ALLTRIM(NOTAFCE->e_CNPJ) +'</CNPJ>'
M->cXml += '<indIEDest>'+"9" +'</indIEDest>'
M->cXml += '</dest>'
ELSE
M->cXml += '<dest>'
M->cXml += '<CPF>' +ALLTRIM(NOTAFCE->e_CNPJ) +'</CPF>'
M->cXml += '<indIEDest>'+"9" +'</indIEDest>'
M->cXml += '</dest>'
ENDIF
ENDIF
*************************************************************************************************************************
SELE NFCEITENS
SET ORDER TO 2
DBGOTOP()
IF ! DBSEEK(NOTAFCE->a_Id+" 1")
BEEP(); MsgWarning( "ERRO DE POSICIONAMENTO - SGC4800"+ HB_EOL()+"GERANDO ITENS XML DA NF-e" )
DBUNLOCKALL()
DBCOMMITALL()
DBCLOSEALL()
QUIT
END
M->TOTPRO :=0.00
M->vFCPUFDest :=0.00
M->vICMSUFDest :=0.00
M->vICMSUFRemet :=0.00
M->vBC :=0.00
M->vICMS :=0.00
DO WHILE NFCEITENS->i_Id = NOTAFCE->a_Id
// hwg_MsgInfo(NFCEITENS->i_nItem)
M->cXml += '<det nItem="' +ltrim(NFCEITENS->i_nItem) +'">'
M->cXml += '<prod>'
M->cXml += '<cProd>' +rtrim(NFCEITENS->i_cProd) +'</cProd>'
if NFCEITENS->i_cEAN <> space(14)
if len(alltrim(NFCEITENS->i_cEAN)) < 13
M->cXml += '<cEAN/>'
else
M->cXml += '<cEAN>' +alltrim(NFCEITENS->i_cEAN) +'</cEAN>'
endif
else
M->cXml += '<cEAN/>'
endif
*******************************************************************************************************
M->cXml += '<xProd>' +rtrim(NFCEITENS->i_xProd) +'</xProd>'
M->cXml += '<NCM>' +rtrim(NFCEITENS->i_NCM) +'</NCM>'
IF NFCEITENS->CEST <> space(08)
M->cXml += '<CEST>' +rtrim(NFCEITENS->CEST) +'</CEST>'
ENDIF
M->cXml += '<EXTIPI>' +rtrim(NFCEITENS->i_EXTIPI) +'</EXTIPI>'
M->cXml += '<CFOP>' +rtrim(NFCEITENS->i_CFOP) +'</CFOP>'
M->cXml += '<uCom>' +rtrim(NFCEITENS->i_uCom) +'</uCom>'
M->cXml += '<qCom>' +LTRIM(str(NFCEITENS->i_qCom,14,4)) +'</qCom>'
M->cXml += '<vUnCom>' +LTRIM(str(NFCEITENS->i_vUnCom,14,2)) +'</vUnCom>'
M->cXml += '<vProd>' +LTRIM(str(NFCEITENS->i_vProd,14,2)) +'</vProd>'
M->TOTPRO += (NFCEITENS->i_qCom * NFCEITENS->i_vProd)
IF NFCEITENS->i_cEANTrib <> SPACE(14)
M->cXml += '<cEANTrib>' +alltrim(NFCEITENS->i_cEANTrib) +'</cEANTrib>'
else
M->cXml += '<cEANTrib/>'
ENDIF
M->cXml += '<uTrib>' +rtrim(NFCEITENS->i_uTrib) +'</uTrib>'
M->cXml += '<qTrib>' +LTRIM(str(NFCEITENS->i_qTrib,14,4)) +'</qTrib>'
M->cXml += '<vUnTrib>' +LTRIM(str(NFCEITENS->i_vUnTrib,14,2)) +'</vUnTrib>'
IF NFCEITENS->i_vDesc <> 0.00
M->cXml += '<vDesc>' +LTRIM(str(NFCEITENS->i_vDesc,14,2)) +'</vDesc>'
ENDIF
M->cXml += '<indTot>' +str(NFCEITENS->i_indTot,1,0) +'</indTot>'
M->cXml += '<xPed>' +NOTAFCE->NUMNOT +'</xPed>'
* M->cXml += '<nItemPed>' +ltrim(NFCEITENS->i_nItem) +'</nItemPed>'
M->cXml += '</prod>'
****************************************************************
* simples nacional
****************************************************************
IF PRODUTOS->ICMS_REGIM = "1"
M->cXml += '<imposto>'
M->cXml += '<ICMS>'
M->cXml += '<ICMSSN' +NFCEITENS->ICMS_ST +'>'
M->cXml += '<orig>' +NFCEITENS->ICMS_ORIGE +'</orig>'
M->cXml += '<CSOSN>' +NFCEITENS->ICMS_ST +'</CSOSN>'
M->cXml += '</ICMSSN' +NFCEITENS->ICMS_ST +'>'
M->cXml += '</ICMS>'
M->cXml += '<PIS>'
M->cXml += '<PISOutr>'
M->cXml += '<CST>' +NFCEITENS->q_CST +'</CST>'
M->cXml += '<vBC>' +ltrim(str(NFCEITENS->q_vBC,14,2)) +'</vBC>'
M->cXml += '<pPIS>' +ltrim(str(NFCEITENS->q_pPIS,7,4)) +'</pPIS>'
M->cXml += '<vPIS>' +ltrim(str(NFCEITENS->q_vPIS,14,2)) +'</vPIS>'
M->cXml += '</PISOutr>'
M->cXml += '</PIS>'
M->cXml += '<COFINS>'
M->cXml += '<COFINSOutr>'
M->cXml += '<CST>' +NFCEITENS->s_CST +'</CST>'
M->cXml += '<vBC>' +ltrim(str(NFCEITENS->s_vBC,14,2)) +'</vBC>'
M->cXml += '<pCOFINS>' +ltrim(str(NFCEITENS->s_pCOFINS,7,4)) +'</pCOFINS>'
M->cXml += '<vCOFINS>' +ltrim(str(NFCEITENS->s_vCOFINS,14,2))+'</vCOFINS>'
M->cXml += '</COFINSOutr>'
M->cXml += '</COFINS>'
M->cXml += '</imposto>'
M->cXml += '</det>'
endif
****************************************************************
* tributacao normal
****************************************************************
IF PRODUTOS->ICMS_REGIM = "3"
M->cXml += '<imposto>'
M->cXml += '<ICMS>'
if flag->n_xUF # mUF
M->cXml += '<ICMS60>'
M->cXml += '<orig>' +NFCEITENS->ICMS_ORIGE +'</orig>'
M->cXml += '<CST>60</CST>'
* M->cXml += '<modBC>3</modBC>'
* M->cXml += '<vBC>'+ltrim(str((NFCEITENS->i_vProd*NFCEITENS->i_qTrib)-NFCEITENS->i_vDesc,14,2)) +'</vBC>'
* M->cXml += '<pICMS>12.00</pICMS>'
* M->cXml += '<vICMS>'+LTRIM(str((((NFCEITENS->i_vProd*NFCEITENS->i_qTrib)-NFCEITENS->i_vDesc)*0.12),14,2)) +'</vICMS>'
* M->cXml += '<modBCST>0</modBCST>'
* M->cXml += '<vBCST>0.00</vBCST>'
* M->cXml += '<pICMSST>0.00</pICMSST>'
* M->cXml += '<vICMSST>0.00</vICMSST>'
M->cXml += '</ICMS60>'
M->vBC +=((NFCEITENS->i_vProd*NFCEITENS->i_qTrib)-NFCEITENS->i_vDesc)
M->vICMS +=(((NFCEITENS->i_vProd*NFCEITENS->i_qTrib)-NFCEITENS->i_vDesc)*0.12)
else
M->cXml += '<ICMS' +ALLTRIM(NFCEITENS->ICMS_ST) +'>'
M->cXml += '<orig>' +NFCEITENS->ICMS_ORIGE +'</orig>'
M->cXml += '<CST>' +ALLTRIM(NFCEITENS->ICMS_ST) +'</CST>'
M->cXml += '</ICMS' +ALLTRIM(NFCEITENS->ICMS_ST) +'>'
endif
M->cXml += '</ICMS>'
// M->cXml += '<IPI>'
// M->cXml += '<cEnq>' +NFCEITENS->o_cEnc +'</cEnq>'
// M->cXml += '<IPITrib>'
// M->cXml += '<CST>' +NFCEITENS->o_CST +'</CST>'
// M->cXml += '<vBC>' +ltrim(str(NFCEITENS->o_vBC,14,2)) +'</vBC>'
// M->cXml += '<pIPI>' +ltrim(str(NFCEITENS->o_pIPI,7,4)) +'</pIPI>'
// M->cXml += '<vIPI>' +ltrim(str(NFCEITENS->o_vIPI,14,2)) +'</vIPI>'
// M->cXml += '</IPITrib>'
// M->cXml += '</IPI>'
M->cXml += '<PIS>'
M->cXml += '<PISNT>'
M->cXml += '<CST>' +NFCEITENS->q_CST +'</CST>'
* M->cXml += '<vBC>' +ltrim(str(NFCEITENS->o_vBC,14,2)) +'</vBC>'
* M->cXml += '<pPIS>' +ltrim(str(NFCEITENS->q_pPIS,7,4)) +'</pPIS>'
* M->cXml += '<vPIS>' +ltrim(str(NFCEITENS->q_vPIS,14,2)) +'</vPIS>'
M->cXml += '</PISNT>'
M->cXml += '</PIS>'
M->cXml += '<COFINS>'
M->cXml += '<COFINSNT>'
M->cXml += '<CST>' +NFCEITENS->s_CST +'</CST>'
* M->cXml += '<vBC>' +ltrim(str(NFCEITENS->s_vBC,14,2)) +'</vBC>'
* M->cXml += '<pCOFINS>' +ltrim(str(NFCEITENS->s_pCOFINS,7,4)) +'</pCOFINS>'
* M->cXml += '<vCOFINS>' +ltrim(str(NFCEITENS->s_vCOFINS,14,2))+'</vCOFINS>'
M->cXml += '</COFINSNT>'
M->cXml += '</COFINS>'
if flag->n_xUF # mUF
M->cXml += '<ICMSUFDest>'
M->cXml += '<vBCUFDest>'+ ltrim(str(NFCEITENS->i_vProd - NFCEITENS->i_vDesc )) +'</vBCUFDest>'
M->cXml += '<pFCPUFDest>2.00</pFCPUFDest>'
M->cXml += '<pICMSUFDest>18.00</pICMSUFDest>'
M->cXml += '<pICMSInter>12.00</pICMSInter>'
M->cXml += '<pICMSInterPart>60.00</pICMSInterPart>'
M->cXml += '<vFCPUFDest>'+ ltrim(str(((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.02),14,2)) +'</vFCPUFDest>'
M->cXml += '<vICMSUFDest>'+ ltrim(str((((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.06)*0.6),14,2)) +'</vICMSUFDest>'
M->cXml += '<vICMSUFRemet>'+ ltrim(str((((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.06)*0.4),14,2)) +'</vICMSUFRemet>'
M->cXml += '</ICMSUFDest>'
M->vFCPUFDest += VAL(str(((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.02),14,2))
M->vICMSUFDest += VAL(str((((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.06)*0.6),14,2))
M->vICMSUFRemet += VAL(str((((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.06)*0.4),14,2))
endif
M->cXml += '</imposto>'
M->cXml += '</det>'
endif
DBSKIP()
ENDD
M->cXml += '<total>'
M->cXml += '<ICMSTot>'
*******************************************************************************
* M->cXml += '<vBC>'+LTRIM(str(M->Vbc,14,2))+'</vBC>'
* M->cXml += '<vICMS>'+LTRIM(str(M->vICMS,14,2))+'</vICMS>'
*******************************************************************************
M->cXml += '<vBC>0.00</vBC>'
M->cXml += '<vICMS>0.00</vICMS>'
M->cXml += '<vICMSDeson>0.00</vICMSDeson>'
M->cXml += '<vFCPUFDest>' +ltrim(str(M->vFCPUFDest,14,2)) +'</vFCPUFDest>'
M->cXml += '<vICMSUFDest>' +ltrim(str(M->vICMSUFDest,14,2)) +'</vICMSUFDest>'
M->cXml += '<vICMSUFRemet>' +ltrim(str(M->vICMSUFRemet,14,2)) +'</vICMSUFRemet>'
M->cXml += '<vBCST>0.00</vBCST>'
M->cXml += '<vST>0.00</vST>'
M->cXml += '<vProd>' + LTRIM(STR(NOTAFCE->w_vPROD,14,2)) +'</vProd>'
M->cXml += '<vFrete>0.00</vFrete>'
M->cXml += '<vSeg>0.00</vSeg>'
M->cXml += '<vDesc>' + LTRIM(STR(NOTAFCE->w_vDesc,14,2)) +'</vDesc>'
M->cXml += '<vII>0.00</vII>'
M->cXml += '<vIPI>0.00</vIPI>'
M->cXml += '<vPIS>0.00</vPIS>'
M->cXml += '<vCOFINS>0.00</vCOFINS>'
M->cXml += '<vOutro>0.00</vOutro>'
M->cXml += '<vNF>' + LTRIM(STR(NOTAFCE->w_vNF,14,2)) +'</vNF>'
M->cXml += '<vTotTrib>0.00</vTotTrib>'
M->cXml += '</ICMSTot>'
M->cXml += '</total>'
M->cXml += '<transp>'
M->cXml += '<modFrete>9</modFrete>'
M->cXml += '</transp>'
IF PEDIDO->TIPPAG = 1
M->cXml += '<pag>'
M->cXml += '<tPag>01</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
ELSEIF PEDIDO->TIPPAG = 2
M->cXml += '<pag>'
M->cXml += '<tPag>03</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
ELSEIF PEDIDO->TIPPAG = 3
M->cXml += '<pag>'
M->cXml += '<tPag>05</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
ELSEIF PEDIDO->TIPPAG = 4
M->cXml += '<pag>'
M->cXml += '<tPag>02</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
ELSEIF PEDIDO->TIPPAG = 5
M->cXml += '<pag>'
M->cXml += '<tPag>01</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
M->cXml += '<pag>'
M->cXml += '<tPag>03</tPag>'
M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
M->cXml += '</pag>'
ELSEIF PEDIDO->TIPPAG = 6
M->cXml += '<pag>'
M->cXml += '<tPag>01</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
M->cXml += '<pag>'
M->cXml += '<tPag>05</tPag>'
M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
M->cXml += '</pag>'
ELSEIF PEDIDO->TIPPAG = 7
M->cXml += '<pag>'
M->cXml += '<tPag>01</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
M->cXml += '<pag>'
M->cXml += '<tPag>02</tPag>'
M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
M->cXml += '</pag>'
ELSEIF PEDIDO->TIPPAG = 8
M->cXml += '<pag>'
M->cXml += '<tPag>01</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
M->cXml += '<pag>'
M->cXml += '<tPag>2</tPag>'
M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
M->cXml += '</pag>'
ELSEIF PEDIDO->TIPPAG = 9
M->cXml += '<pag>'
M->cXml += '<tPag>02</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
M->cXml += '<pag>'
M->cXml += '<tPag>03</tPag>'
M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
M->cXml += '</pag>'
ELSEIF PEDIDO->TIPPAG = 10
M->cXml += '<pag>'
M->cXml += '<tPag>02</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
M->cXml += '<pag>'
M->cXml += '<tPag>05</tPag>'
M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
M->cXml += '</pag>'
ELSEIF PEDIDO->TIPPAG = 11
M->cXml += '<pag>'
M->cXml += '<tPag>02</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
M->cXml += '<pag>'
M->cXml += '<tPag>02</tPag>'
M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
M->cXml += '</pag>'
ELSEIF PEDIDO->TIPPAG = 12
M->cXml += '<pag>'
M->cXml += '<tPag>02</tPag>'
M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
M->cXml += '</pag>'
ENDIF
M->cXml += '<infAdic>'
* M->cXml += '<infAdFisco>INFORMACOES ADICIONAIS DE INTERESSE DO FISCO</infAdFisco>'
M->cXml += '<infCpl>'+rtrim(NOTAFCE->z_infCpl)+'</infCpl>'
M->cXml += '</infAdic>'
M->cXml += '</infNFe>'
M->cXml += '</NFe>'
* M->cXml += '</nfeProc>'
NOTAFCE->w_vPROD:=NOTAFCE->w_vPROD
NOTAFCE->w_vNF :=NOTAFCE->w_vNF
***************************************************************************************
* MODULO DE ASSINATURA , TRANSMISSAO, AUTORIZACAO, RETORNO E IMPRESSAO
***************************************************************************************
ThisNFE:oProgressbar1:Set(,60)
ThisNFE:oLabel5:SetText("Assinando NFC-e e gerando QR-CODE ")
********* ASSINATURA VIA SEFAZCLASS **********************************************************************************************************
SELE CERTIFICADO
IF !DBSEEK(rtrim(hwg_GetComputerName()))
hwg_MsgInfo("Computador sem o CERTIFICADO DIGITAL instalado"+ HB_EOL()+"A Operação não poderá ser efetuada")
SELE NOTAFCE
RETURN NIL
endif
SELE NOTAFCE
cTxtXml:=M->cXml
oSefaz := SefazClass():New()
oSefaz:cUF := FLAG->n_xUF
oSefaz:cAmbiente := FLAG->n_tpAmb
oSefaz:cCertificado := TRIM(CERTIFICADO->NOMCERT)
oSefaz:cIdToken := "000001"
oSefaz:cCSC := TRIM(FLAG->cCertifica)
oSefaz:cNFCE := "S"
// cXmlRetorno := oSefaz:NfeStatusServico( )
**********************************************************************************************************************************************
ThisNFE:oProgressbar1:Set(,80)
ThisNFE:oLabel5:SetText("Aguardando Retorno ")
// oSefaz:cXmlDocumento:=cTxtXml
// oSefaz:AssinaXml( )
// oSefaz:GeraQRCode( oSefaz:cXmlDocumento )
// oSefaz:NFEloteenvia( oSefaz:cXmlDocumento )
oSefaz:NFEloteenvia( cTxtXml )
hb_MemoWrit( cPrefixo + "_1_documento.xml", oSefaz:cXmlDocumento )
hb_MemoWrit( cPrefixo + "_2_Envio.xml", oSefaz:cXmlEnvio )
hb_MemoWrit( cPrefixo + "_3_Soap.xml", oSefaz:cXmlSoap )
hb_MemoWrit( cPrefixo + "_4_Retorno.xml", oSefaz:cXmlRetorno )
hb_MemoWrit( cPrefixo + "_5_Protocolo.xml", oSefaz:cXmlProtocolo )
hb_MemoWrit( cPrefixo + "_6_Recibo.xml", oSefaz:cXmlRecibo )
hb_MemoWrit( cPrefixo + "_7_Autorizado.xml", oSefaz:cXmlAutorizado )
// oSpedDa := hbNfeDaGeral():New()
// oSpedDa:ToPdf( oSefaz:cXmlDocumento, cPrefixo + "_8_AutorizadoPDF.PDF" )
// HB_RUN( 'Start sumatra\sumatrapdf.exe ' + cPrefixo + "_8_AutorizadoPDF.PDF" )
IF ! oSefaz:cStatus $ "100,101,150,301,302"
ThisNFE:oLabel5:SetText(oSefaz:cMotivo)
ThisNFE:oOwnerbutton4:DISABLE( )
ELSE
ThisNFE:oLabel5:SetText(oSefaz:cStatus + oSefaz:cMotivo)
SELE NOTAFCE
IF RLOCK()
NOTAFCE->FL_SITUAC := XmlNode(oSefaz:cXmlRetorno, "cStat")
NOTAFCE->FL_MOTIVO := XmlNode(oSefaz:cXmlRetorno, "xMotivo")
DBUNLOCK()
ENDIF
ThisNFE:oProgressbar1:Set(,90)
ThisNFE:oLabel5:SetText("Gerando DANFE em PDF ")
oSpedDa := hbNfeDaGeral():New()
// oDanfe:cLogoFile := curdrive()+":\"+CURDIR()+"\clientelogo.jpg"
oSpedDa:ToPdf( oSefaz:cXmlAutorizado, cPrefixo + "_8_AutorizadoPDF.PDF" )
ThisNFE:oProgressbar1:Set(,100)
ThisNFE:oLabel5:SetText("NFC-e Concluida com sucesso ")
ThisNFE:oOwnerbutton4:DISABLE( )
If File( hb_Dirbase()+'sumatra\sumatrapdf.exe' )
HB_RUN( 'Start sumatra\sumatrapdf.exe ' + cPrefixo + "_8_AutorizadoPDF.PDF" )
Else // Executa a visualizacao padrao para PDF senao tiver o Sumatra
HB_RUN( 'START /MAX '+cPrefixo + "_8_AutorizadoPDF.PDF")
EndIf
ENDIF
SELE ITENS
DBCLOSEAREA()
SELE NFCEITENS
DBCLOSEAREA()
// dbcloseall()
return nil
*************************************
STATIC FUNCTION MONTA_CHAVE( b_mod )
*************************************
M->mod :=FLAG->n_modNFC
M->serie :=FLAG->n_serieNFC
M->nNF :=FLAG->n_nNFC
M->cUF :=FLAG->n_cUF
M->dhEmi :=substr(strzero(YEAR(M->DAT_HOJE),4,0),3,2)+strzero(MONTH(M->DAT_HOJE),2,0)
M->CNPJ :=FLAG->n_CNPJ
M->tpEmis :='1'
M->cNF :=FLAG->n_cNF
M->cDV :=CalculaDigito( M->cUF+M->dhEmi+M->CNPJ+M->mod+M->serie+M->nNF+M->tpEmis+M->cNF, "11" )
M->chaveNFe := M->cUF+M->dhEmi+M->CNPJ+M->mod+M->serie+M->nNF+M->tpEmis+M->cNF+M->cDV
RETURN M->cUF+M->dhEmi+M->CNPJ+M->mod+M->serie+M->nNF+M->tpEmis+M->cNF+M->cDV
os arquivo que uso
**********************************
FUNCTION ABRE_NFCE()
**********************************
IF FILE("DATABASE\NFCEDADOS.DBF")
USE DATABASE\NFCEDADOS NEW SHARED ALIAS NOTAFCE
ELSE
***IDENTIFICACAO DA NOTA FISCAL ELETRONIC
BANCO:= {}
AADD(BANCO, {"a_versao","C",4,0})
AADD(BANCO, {"a_Id","C",47,0})
AADD(BANCO, {"b_cUF","C",02,0})
AADD(BANCO, {"b_cNF","C",08,0})
AADD(BANCO, {"b_natOp","C",60,0})
AADD(BANCO, {"b_indPag","C",01,0})
AADD(BANCO, {"b_mod","C",02,0})
AADD(BANCO, {"b_serie","C",03,0})
AADD(BANCO, {"b_nNF","C",09,0})
AADD(BANCO, {"b_dhEmi","C",25,0})
AADD(BANCO, {"b_dhSaiEnt","C",25,0})
AADD(BANCO, {"b_tpNF","C",01,0})
AADD(BANCO, {"b_idDest","C",01,0})
AADD(BANCO, {"b_cMunFG","C",07,0})
AADD(BANCO, {"b_tpImp","C",01,0})
AADD(BANCO, {"b_tpEmis","C",01,0})
AADD(BANCO, {"b_cDV","C",01,0})
AADD(BANCO, {"b_tpAmb","C",01,0})
AADD(BANCO, {"b_finNFe","C",01,0})
AADD(BANCO, {"b_indFinal","C",01,0})
AADD(BANCO, {"b_indPres","C",01,0})
AADD(BANCO, {"b_procEmi","C",01,0})
AADD(BANCO, {"b_verProc","C",20,0})
AADD(BANCO, {"b_dhCont","C",25,0})
AADD(BANCO, {"b_xJust","C",256,0})
***IDENTIFICACAO DO EMITENTE DA NF-e
AADD(BANCO, {"c_CNPJ","C",14,0})
AADD(BANCO, {"c_xNome","C",60,0})
AADD(BANCO, {"c_xFant","C",60,0})
AADD(BANCO, {"c_xLgr","C",60,0})
AADD(BANCO, {"c_nro","C",60,0})
AADD(BANCO, {"c_xCpl","C",60,0})
AADD(BANCO, {"c_xBairro","C",60,0})
AADD(BANCO, {"c_cMun","C",07,0})
AADD(BANCO, {"c_xMun","C",60,0})
AADD(BANCO, {"c_UF","C",02,0})
AADD(BANCO, {"c_CEP","C",08,0})
AADD(BANCO, {"c_cPais","C",04,0})
AADD(BANCO, {"c_xPais","C",60,0})
AADD(BANCO, {"c_fone","C",14,0})
AADD(BANCO, {"c_IE","C",14,0})
AADD(BANCO, {"c_IEST","C",14,0})
AADD(BANCO, {"c_IM","C",15,0})
AADD(BANCO, {"c_CNAE","C",07,0})
AADD(BANCO, {"c_CRT","C",01,0})
***IDENTIFICACAO DO DESTINATARIO DA NF-e
AADD(BANCO, {"e_CNPJ","C",14,0})
AADD(BANCO, {"e_IdEstr","C",20,0})
AADD(BANCO, {"e_xNome","C",60,0})
AADD(BANCO, {"e_xFant","C",60,0})
AADD(BANCO, {"e_xLgr","C",60,0})
AADD(BANCO, {"e_nro","C",60,0})
AADD(BANCO, {"e_xCpl","C",60,0})
AADD(BANCO, {"e_xBairr","C",60,0})
AADD(BANCO, {"e_cMun","C",07,0})
AADD(BANCO, {"e_xMun","C",60,0})
AADD(BANCO, {"e_UF","C",02,0})
AADD(BANCO, {"e_CEP","C",08,0})
AADD(BANCO, {"e_cPais","C",04,0})
AADD(BANCO, {"e_xPais","C",60,0})
AADD(BANCO, {"e_fone","C",14,0})
AADD(BANCO, {"e_indIE","C",01,0})
AADD(BANCO, {"e_IE","C",14,0})
AADD(BANCO, {"e_ISUF","C",09,0})
AADD(BANCO, {"e_IM","C",15,0})
AADD(BANCO, {"e_eMAIL","C",60,0})
***IDENTIFICACAO DO LOCAL DE RETIRADA
AADD(BANCO, {"f_CNPJ","C",14,0})
AADD(BANCO, {"f_xLgr","C",60,0})
AADD(BANCO, {"f_nro","C",60,0})
AADD(BANCO, {"f_xCpl","C",60,0})
AADD(BANCO, {"f_xBairr","C",60,0})
AADD(BANCO, {"f_cMun","C",07,0})
AADD(BANCO, {"f_xMun","C",60,0})
AADD(BANCO, {"f_UF","C",02,0})
***IDENTIFICACAO DO LOCAL DE ENTREGA
AADD(BANCO, {"g_CNPJ","C",14,0})
AADD(BANCO, {"g_xLgr","C",60,0})
AADD(BANCO, {"g_nro","C",60,0})
AADD(BANCO, {"g_xCpl","C",60,0})
AADD(BANCO, {"g_xBairr","C",60,0})
AADD(BANCO, {"g_cMun","C",07,0})
AADD(BANCO, {"g_xMun","C",60,0})
AADD(BANCO, {"g_UF","C",02,0})
*** TOTAL DA NF-e
AADD(BANCO, {"w_vBC","N",14,2})
AADD(BANCO, {"w_vICMS","N",14,2})
AADD(BANCO, {"w_vICMSD","N",14,2})
AADD(BANCO, {"w_vBCST","N",14,2})
AADD(BANCO, {"w_vST","N",14,2})
AADD(BANCO, {"w_vPROD","N",14,2})
AADD(BANCO, {"w_vFrete","N",14,2})
AADD(BANCO, {"w_vSeg","N",14,2})
AADD(BANCO, {"w_vDesc","N",14,2})
AADD(BANCO, {"w_vII","N",14,2})
AADD(BANCO, {"w_vIPI","N",14,2})
AADD(BANCO, {"w_vPIS","N",14,2})
AADD(BANCO, {"w_vCOFINS","N",14,2})
AADD(BANCO, {"w_vOutro","N",14,2})
AADD(BANCO, {"w_vNF","N",14,2})
AADD(BANCO, {"w_vTotTrib","N",14,2})
*** FORMA DE PAGAMENTO
AADD(BANCO, {"ya_tPag","C",02,0}) && 01=dinheiro 02=cheque 03=c.cred 04=c.deb 05=cred loja 99=outros
AADD(BANCO, {"ya_vPag","N",14,2})
AADD(BANCO, {"ya_CNPJ","C",14,0})
AADD(BANCO, {"ya_Band","C",02,0}) && 01=visa 02=master 03=amex 04=sorocred 99=outros
AADD(BANCO, {"ya_Aut","C",20,0})
*** INFORMACOES ADICIONAIS DA NFe
AADD(BANCO, {"z_infAdFis","C",1000,0})
AADD(BANCO, {"z_infCpl","C",1000,0})
*** INFORMACOES DE COMPRAS
AADD(BANCO, {"zb_xNEmp","C",22,0}) && identificacao da nota de empenho (compras publicas)
AADD(BANCO, {"zb_xPed","C",60,0}) && informar pedido
AADD(BANCO, {"zb_xCont","C",60,0}) && informar o contrato de compra
*** FLAGS DE CONTROLE
AADD(BANCO, {"FL_VALIDA","L",01,0}) && testa se a nota ja foi validada
AADD(BANCO, {"FL_ASSINA","L",01,0}) && testa se a nota ja foi assinada
AADD(BANCO, {"FL_TRANSM","L",01,0}) && testa se a nota ja foi transmitida
AADD(BANCO, {"FL_IMPRIM","L",01,0}) && testa se a nota ja foi impressa
AADD(BANCO, {"FL_EXPORT","L",01,0}) && testa se a nota ja foi exportada
AADD(BANCO, {"FL_SITUAC","C",03,0}) && situacao da NFe
AADD(BANCO, {"FL_MOTIVO","C",60,0}) && Motivo da NFe
***IDENTIFICACAO DA NOTA DE PEDIDO
AADD(BANCO, {"NUMNOT","C",06,0})
***IDENTIFICACAO DO OPERADOR E DA MAQUINA
AADD(BANCO, {"OPERADOR","C",20,0})
AADD(BANCO, {"MAQUINA","C",20,0})
DBCREATE("DATABASE\NFCEDADOS",BANCO)
USE DATABASE\NFCEDADOS NEW SHARED ALIAS NOTAFCE
END
IF NETERR()
RETURN .F.
END
IF FILE("DATABASE\NFCEDADOS.001")
SET INDEX TO DATABASE\NFCEDADOS.001
ELSE
USE DATABASE\NFCEDADOS EXCLUSIVE
IF NETERR()
RETURN .F.
END
PACK
INDEX ON NUMNOT TAG NFCE01 TO DATABASE\NFCEDADOS.001
INDEX ON b_mod+b_serie+b_nNF TAG NFCE02 TO DATABASE\NFCEDADOS.001
INDEX ON a_Id TAG NFCE03 TO DATABASE\NFCEDADOS.001
INDEX ON e_xNome+b_dhEmi TAG NFCE04 TO DATABASE\NFCEDADOS.001
DBCLOSEAREA()
USE DATABASE\NFCEDADOS NEW SHARED ALIAS NOTAFCE
IF NETERR()
RETURN .F.
END
SET INDEX TO DATABASE\NFCEDADOS.001
END
RETURN .T.
**********************************
FUNCTION ABRE_NFCEITEM()
**********************************
IF FILE("C:\TEMP\NFCEITENS.DBF")
USE C:\TEMP\NFCEITENS NEW SHARED ALIAS NFCEITENS
ELSE
***PRODUTOS E SERVICOS DA NFC-e
BANCO:= {}
AADD(BANCO, {"NUMNOT","C",06,0})
AADD(BANCO, {"i_versao","C",4,0})
AADD(BANCO, {"i_Id","C",47,0})
AADD(BANCO, {"i_nItem","C",03,0}) && varia entre 001-990
AADD(BANCO, {"i_cProd","C",60,0})
AADD(BANCO, {"i_cEAN","C",14,0})
AADD(BANCO, {"i_xProd","C",120,0})
AADD(BANCO, {"i_NCM","C",08,0})
AADD(BANCO, {"i_NVE","C",08,0})
AADD(BANCO, {"i_EXTIPI","C",03,0})
AADD(BANCO, {"i_CFOP","C",04,0})
AADD(BANCO, {"i_uCom","C",06,0})
AADD(BANCO, {"i_qCom","N",14,4})
AADD(BANCO, {"i_vUnCom","N",14,4})
AADD(BANCO, {"i_vProd","N",14,2})
AADD(BANCO, {"i_cEANTrib","C",14,0})
AADD(BANCO, {"i_uTrib","C",06,0})
AADD(BANCO, {"i_qTrib","N",14,4})
AADD(BANCO, {"i_vUnTrib","N",14,4})
AADD(BANCO, {"i_vFrete","N",14,2})
AADD(BANCO, {"i_vSeg","N",14,2})
AADD(BANCO, {"i_vDesc","N",14,2})
AADD(BANCO, {"i_vOutro","N",14,2})
AADD(BANCO, {"i_indTot","N",01,0})
AADD(BANCO, {"i_xPed","C",15,0})
AADD(BANCO, {"i_nItemPed","C",6,0})
AADD(BANCO, {"m_vTotTrib","N",14,2})
AADD(BANCO, {"m_vTotFed","N",14,2})
AADD(BANCO, {"m_vTotEst","N",14,2})
AADD(BANCO, {"m_vTotMun","N",14,2})
AADD(BANCO, {"CEST","C",08,0})
***GRUPO DE TRIBUTAÇAO SIMPLES NACIONAL
AADD(BANCO, {"ICMS_REGIM","C",01,0}) && 1-simples naciona
AADD(BANCO, {"ICMS_ST","C",03,0}) && 101/102/103/300/400 CODIGO DE SITUACAO DE OPERACAO
AADD(BANCO, {"ICMS_ORIGE","C",01,0})
* ***GRUPO DE TRIBUTAÇAO NORMAL 00/10/20/30/40/41/50/51/60/70/90
*
* AADD(BANCO, {"n_origTN","C",01,0}) && 3 TRIBUTACAO NORMAL
* AADD(BANCO, {"n_CST","C",02,0}) && 00=tributada integralmente
* AADD(BANCO, {"n_modBC","N",01,0}) && 0=margem valor agregado (%)
* AADD(BANCO, {"n_vBC","N",14,4}) && valor da base de calculo
* AADD(BANCO, {"n_pICMS","N",03,4}) && aliquota do imposto
* AADD(BANCO, {"n_vICMS","N",14,4})
***GRUPO DE TRIBUTAÇAO IPI
AADD(BANCO, {"o_CST","C",02,0}) && situacao tributaria
AADD(BANCO, {"o_clEnq","C",05,0}) && classe do enquadramento
AADD(BANCO, {"o_CNPJProd","C",14,0}) && cnpj do produtor da mercdoria
AADD(BANCO, {"o_cSelo","C",60,0})
AADD(BANCO, {"o_qSelo","C",12,0})
AADD(BANCO, {"o_cEnc","C",03,0}) && informar 999 enquanto tabela nao for criada
AADD(BANCO, {"o_vBC","N",14,4})
AADD(BANCO, {"o_pIPI","N",07,4}) && aliquota do imposto
AADD(BANCO, {"o_qUnid","N",14,4})
AADD(BANCO, {"o_vUnid","N",14,4})
AADD(BANCO, {"o_vIPI","N",14,4})
***GRUPO DE TRIBUTACAO PIS
AADD(BANCO, {"q_CST","C",02,0}) && PIS 99 outras operacoes
AADD(BANCO, {"q_vBC","N",14,4}) && valor da base de calculo
AADD(BANCO, {"q_pPIS","N",07,4}) && aliquota em percentual
AADD(BANCO, {"q_vAlqProd","N",14,4}) && aliquota em reais
AADD(BANCO, {"q_PISQtde","N",14,2}) && quantidade vendida
AADD(BANCO, {"q_vPIS","N",14,2}) && aliquota em percentual
***GRUPO DE TRIBUTACAO COFINS
AADD(BANCO, {"s_CST","C",02,0}) && COFINS 99 outras operacoes
AADD(BANCO, {"s_vBC","N",14,4}) && valor da base de calculo
AADD(BANCO, {"s_pCOFINS","N",07,4}) && aliquota em percentual
AADD(BANCO, {"s_vAlqProd","N",14,4}) && aliquota em reais
AADD(BANCO, {"s_COFSQtde","N",14,2}) && quantidade vendida
AADD(BANCO, {"s_vCOFINS","N",14,2}) && aliquota em percentual
DBCREATE("C:\TEMP\NFCEITENS",BANCO)
USE C:\TEMP\NFCEITENS NEW SHARED ALIAS NFCEITENS
END
IF NETERR()
RETURN .F.
END
IF FILE("C:\TEMP\NFCEITENS.001")
SET INDEX TO C:\TEMP\NFCEITENS.001
ELSE
USE C:\TEMP\NFCEITENS EXCLUSIVE
IF NETERR()
RETURN .F.
END
PACK
INDEX ON NUMNOT+i_nItem TAG NFCEI01 TO C:\TEMP\NFCEITENS.001
INDEX ON i_Id+i_nItem TAG NFCEI02 TO C:\TEMP\NFCEITENS.001
DBCLOSEAREA()
USE C:\TEMP\NFCEITENS NEW SHARED ALIAS NFCEITENS
IF NETERR()
RETURN .F.
END
SET INDEX TO C:\TEMP\NFCEITENS.001
END
RETURN .T.