Modelo NFCe Acbr
Moderador: Moderadores
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Modelo NFCe Acbr
Ola!
Preciso de um modelo simples de uma NFCe no modelo do Acbr.
Eu não sei o que fiz aqui, porque o ACBR está travando. Estava indo bem porém tem alguma coisa errada aqui e não sei identificar.
Isso já no final, estava faltando só trocar a chave de Homologação para produção... Agora gero o ent.txt e o acbr trava.
Saudações,
Itamar M. Lins Jr.
Preciso de um modelo simples de uma NFCe no modelo do Acbr.
Eu não sei o que fiz aqui, porque o ACBR está travando. Estava indo bem porém tem alguma coisa errada aqui e não sei identificar.
Isso já no final, estava faltando só trocar a chave de Homologação para produção... Agora gero o ent.txt e o acbr trava.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Modelo NFCe Acbr
O motivo de eu não usar ACBr é por isso, eu tinha tudo feito, levei 1 semana testando, estava tudo certo, dai fui almoçar e quando voltei, nem com reza e vela a coisa funcionava, o mesmo com o Uninfe, só que com ele, não trava, mas as vezes não envia, ou não acha arquivo, principalmente quando atualiza versão, por isso optei pela classe do Quintas, só não consegui ir mais adiante ainda pq estou esperando meu certificado, que deve chegar semana que vem, dai continuarei as postagens no tópico que criei sobre essa implementação.
Abraços e boa sorte
Abraços e boa sorte
Marcelo Neves
https://produto.mercadolivre.com.br/MLB ... 0067609615
whatsapp (41) 99786-3995
http://harbourdeveloper.blogspot.com
marcelo.souza.das.neves@gmail.com
https://produto.mercadolivre.com.br/MLB ... 0067609615
whatsapp (41) 99786-3995
http://harbourdeveloper.blogspot.com
marcelo.souza.das.neves@gmail.com
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Modelo NFCe Acbr
Ola!
Parece que identifiquei o defeito, ainda estou procurando... porém as versões do OPENSSL e das DLL´s do ACBR não estão batendo com a do SVN.
Estou tentando compilar via Lazarus.
Eu já uso o ACBR, só estou adicionando a NFCe, já uso com exito a NFe, há muito tempo e sem dor de cabeça.
O problema é que eles unificaram as versões com OPENSSL e CAPICOM, antes eram separadas.
O certificado de 1 ano .PFX usa OPENSSL e o TOKEN/Cartão usa CAPICOM.
Saudações,
Itamar M. Lins Jr.
Parece que identifiquei o defeito, ainda estou procurando... porém as versões do OPENSSL e das DLL´s do ACBR não estão batendo com a do SVN.
Estou tentando compilar via Lazarus.
Eu já uso o ACBR, só estou adicionando a NFCe, já uso com exito a NFe, há muito tempo e sem dor de cabeça.
O problema é que eles unificaram as versões com OPENSSL e CAPICOM, antes eram separadas.
O certificado de 1 ano .PFX usa OPENSSL e o TOKEN/Cartão usa CAPICOM.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Modelo NFCe Acbr
Ola!
O problema é com a escolha da forma, em Menu DF-e -> Certificados -> Configuração SSL -> LibWinCrypt está funcionado. Já com LibOpenSSL dá pau!
E lá se vão algumas horas só para identificar isso.
Saudações,
Itamar M. Lins Jr.
O problema é com a escolha da forma, em Menu DF-e -> Certificados -> Configuração SSL -> LibWinCrypt está funcionado. Já com LibOpenSSL dá pau!
E lá se vão algumas horas só para identificar isso.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Modelo NFCe Acbr
Veja o lado bom, suas horas vão ajudar outras pessoas que usam o ACBr, mas claro que podia ser melhor.
De qualquer forma, depender dos outros para implementar alguma rotina no sistema não é fácil.
Abraços
De qualquer forma, depender dos outros para implementar alguma rotina no sistema não é fácil.
Abraços
Marcelo Neves
https://produto.mercadolivre.com.br/MLB ... 0067609615
whatsapp (41) 99786-3995
http://harbourdeveloper.blogspot.com
marcelo.souza.das.neves@gmail.com
https://produto.mercadolivre.com.br/MLB ... 0067609615
whatsapp (41) 99786-3995
http://harbourdeveloper.blogspot.com
marcelo.souza.das.neves@gmail.com
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Modelo NFCe Acbr
Ola!
Viu Marcelo, vc que tem sistema para bares, agora precisa cadastrar todas essas informações para tirar uma NFCe.
NCM, CFOP, CEST, CSOSN além da antiga ST das ECF´s isso para vender uma lata de refrigerante. Se já não tiver isso cadastrado, lógico.
Saudações,
Itamar M. Lins Jr.
Viu Marcelo, vc que tem sistema para bares, agora precisa cadastrar todas essas informações para tirar uma NFCe.
NCM, CFOP, CEST, CSOSN além da antiga ST das ECF´s isso para vender uma lata de refrigerante. Se já não tiver isso cadastrado, lógico.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Modelo NFCe Acbr
É isso mesmo Itamar, estou correndo bastante para deixar tudo 100% como deve ser, nem parei pra fazer o XML de acordo com a 3.10, já estou fazendo tudo pra 4.0.
Inclusive a ideia de ir fazendo e postando aqui no Fórum e no repositório do GIT, é justamente criar um grupo de programadores atentos às mudanças, o que 1 não vê, outro pode ver.
Abraços
Inclusive a ideia de ir fazendo e postando aqui no Fórum e no repositório do GIT, é justamente criar um grupo de programadores atentos às mudanças, o que 1 não vê, outro pode ver.
Abraços
Marcelo Neves
https://produto.mercadolivre.com.br/MLB ... 0067609615
whatsapp (41) 99786-3995
http://harbourdeveloper.blogspot.com
marcelo.souza.das.neves@gmail.com
https://produto.mercadolivre.com.br/MLB ... 0067609615
whatsapp (41) 99786-3995
http://harbourdeveloper.blogspot.com
marcelo.souza.das.neves@gmail.com
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Modelo NFCe Acbr
A resposta nao foi para mim, mas para empresa do simples isso tudo da para automatizar pela entrada com xml..
EAN - Vem no xml
NCM - vem no ncm
CFOP - praticamente 5102-5405-5656 se o cliente de outro estado - 6102-6404-6652
CEST - vem no XML - se produto antigo - cria uma rotina para atualizar o CSET
CSOSN/CST - depende do CFOP..
Rubens
EAN - Vem no xml
NCM - vem no ncm
CFOP - praticamente 5102-5405-5656 se o cliente de outro estado - 6102-6404-6652
CEST - vem no XML - se produto antigo - cria uma rotina para atualizar o CSET
CSOSN/CST - depende do CFOP..
Rubens
"Eu e minha casa servimos ao Senhor e você
"
Modelo NFCe Acbr
Obrigado Rubens pela dica, o que vc falou seria importar o XML do Fornecedor da mercadoria para associar os códigos, correto ?
Abraços
Abraços
Marcelo Neves
https://produto.mercadolivre.com.br/MLB ... 0067609615
whatsapp (41) 99786-3995
http://harbourdeveloper.blogspot.com
marcelo.souza.das.neves@gmail.com
https://produto.mercadolivre.com.br/MLB ... 0067609615
whatsapp (41) 99786-3995
http://harbourdeveloper.blogspot.com
marcelo.souza.das.neves@gmail.com
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Modelo NFCe Acbr
Sim... Marcelo...
Já faço e creio que muitos aqui fazem...
Então...
Baixo o XML
Uso a classe do Quintas para ler o Xml
Daí verifico se o produto é cadastrado ou não.
Se for cadastrado atualiza dados do cadastro conforme dados do produto do xml. Tipo EAN, NCM, CFOP, CEST.
Se não for cadastrado faz um cadastro novo com os dados do produto do xml.
Dessa forma na hora de emitir a NFCe dificilmente dará um erro de integridade.
Tenho isso pronto em HMGs... se quiser coloco a disposição...
Rubens
Já faço e creio que muitos aqui fazem...
Então...
Baixo o XML
Uso a classe do Quintas para ler o Xml
Daí verifico se o produto é cadastrado ou não.
Se for cadastrado atualiza dados do cadastro conforme dados do produto do xml. Tipo EAN, NCM, CFOP, CEST.
Se não for cadastrado faz um cadastro novo com os dados do produto do xml.
Dessa forma na hora de emitir a NFCe dificilmente dará um erro de integridade.
Tenho isso pronto em HMGs... se quiser coloco a disposição...
Rubens
"Eu e minha casa servimos ao Senhor e você
"
Modelo NFCe Acbr
Rubens, se quiser compartilhar, me envie que deixarei no GIT do projeto que estou fazendo, fica centralizado para todos.
Abraços
Abraços
Marcelo Neves
https://produto.mercadolivre.com.br/MLB ... 0067609615
whatsapp (41) 99786-3995
http://harbourdeveloper.blogspot.com
marcelo.souza.das.neves@gmail.com
https://produto.mercadolivre.com.br/MLB ... 0067609615
whatsapp (41) 99786-3995
http://harbourdeveloper.blogspot.com
marcelo.souza.das.neves@gmail.com
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Modelo NFCe Acbr
Se quiserem disponibilizo a rotina de emissao de NFC-e usando a SEFAZCLASS , com pequenas adaptações a coisa fica pronta
os arquivo que uso
Código: Selecionar todos
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->cDVos arquivo que uso
Código: Selecionar todos
**********************************
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.
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Modelo NFCe Acbr
Vou comecar a rotina de entrada de notas, quem tiver algo ja quase pronto manda ai para dar uma ajuda e facilitar o desenvolvimento
)
)
)
)
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Modelo NFCe Acbr
Dependendo do caso, precisa melhorar a classe, pra pegar mais informações do que pega hoje.
Mas basicamente é:
oDocumento := XmlToDoc( cXml )
a partir daí, tá tudo em oDocumento.
oDocumento:Emitente:Nome
oDocumento:Emitente:CNPJ
oDocumento:Destinatario:Nome
oDocumento:Destinatario:Cnpj
É só decidir o que fazer com as informações que estão em oDocumento ou o nome que quiser.
Fernando:
Não aconselho o uso de M->cXml
Muito trabalhoso, e desnecessário.
Mais interessante declarar LOCAL cXml ou MEMVAR cXml
E usar -> só pra DBFs mesmo, pra indicar alias.
E se possível, usar o alias mesmo, e não a letra.
cliente->Codigo, cliente->Nome.
Usar letra acaba dando trabalho em pesquisar a que se refere aquela letra, além de obrigar a usar o arquivo exatamente naquela área.
Por nome/alias, tanto faz em que ordem abre os arquivos.
Mas basicamente é:
oDocumento := XmlToDoc( cXml )
a partir daí, tá tudo em oDocumento.
oDocumento:Emitente:Nome
oDocumento:Emitente:CNPJ
oDocumento:Destinatario:Nome
oDocumento:Destinatario:Cnpj
É só decidir o que fazer com as informações que estão em oDocumento ou o nome que quiser.
Fernando:
Não aconselho o uso de M->cXml
Muito trabalhoso, e desnecessário.
Mais interessante declarar LOCAL cXml ou MEMVAR cXml
E usar -> só pra DBFs mesmo, pra indicar alias.
E se possível, usar o alias mesmo, e não a letra.
cliente->Codigo, cliente->Nome.
Usar letra acaba dando trabalho em pesquisar a que se refere aquela letra, além de obrigar a usar o arquivo exatamente naquela área.
Por nome/alias, tanto faz em que ordem abre os arquivos.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Nascimento
- Usuário Nível 4

- Mensagens: 763
- Registrado em: 19 Jul 2008 12:11
- Localização: OLINDA-PE
Modelo NFCe Acbr
Querido vc poderia disponibilizar ? , Agradeço desde JáRubens Disse:
Tenho isso pronto em HMGs... se quiser coloco a disposição...
Rubens
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina
clipper 5.3 /harbour/minigui