Jump to content
Fivewin Brasil

nfe eletronica o primeiro passo


neto_23

Recommended Posts

Gostaria de saber como eu faço para criar um arquivo xml

se eu faço o laço pegando da base minha e lançando no xml....

Depois do pedido pronto o outro passo é gerar a shema xml baseado no pedido...?

qual a rotina para gerar a xml

fw10.8harbour-xDev.70 Studio-bcc582-Mysql-Pelles

programadorcp80@hotmail.com.br ;

Link to comment
Share on other sites

Gostaria de saber como eu faço para criar um arquivo xml

se eu faço o laço pegando da base minha e lançando no xml....

Depois do pedido pronto o outro passo é gerar a shema xml baseado no pedido...?

qual a rotina para gerar a xml

fw10.8harbour-xDev.70 Studio-bcc582-Mysql-Pelles

programadorcp80@hotmail.com.br ;

Link to comment
Share on other sites

Olá Desenvolvedores, Boa Tarde!

Este seria a primeiro passao ? Ler este manual ?

http://www.fazenda.gov.br/confaz/confaz/Atos/Atos_Cotepe/2009/Manual_NFe_V400_2009-09-21.pdf

________________________

Gilberto Herminio - Programador Pleno III - Mogi das Cruzes-SP

(Clipper a +- 20 anos) / C#/SQL2008/xxHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 9.03 + xDev v0.65

"Não Desenvolvo Software, crio arte Binaria...."

Link to comment
Share on other sites

Eu ainda não!

O que eu queria entender é o BE-A-BA da coisa :

A minha aplicação ERP, vai gerar um arquivo das informações das NF em qual formato e enviá-lo pra onde ?

Esta aplicação que esta disponível no site da receita (http://www.nfe.fazenda.gov.br/PORTAL/emissor.aspx) serve pra que ? Minha aplicação pode pular esta etapa ?

Eu só preciso saber é o que gerar e pra quem enviar, inicialmente...

Lógico, eu sei que não é só enviar !! mas queria a juda dos amigos nesta questão.

Pois se o envio será no formato TXT ou XML, onde enconto o LayOut ?

________________________

Gilberto Herminio - Programador Pleno III - Mogi das Cruzes-SP

(Clipper a +- 20 anos) / C#/SQL2008/xxHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 9.03 + xDev v0.65

"Não Desenvolvo Software, crio arte Binaria...."

Editado por - sig_gilberto on 18/03/2011 16:18:55

Link to comment
Share on other sites

Colegas acho que vcs tem duas opções , uma é usar a classe do Gilmer para gerar o XML e tb fazer todo serviço de transmissão e impressão do danfe, nela ja tem tudo pronto, a outra é usar o acbrnfe neste caso o lugar melhor para poder pegar as informações seria do forum do pctoledo, la inclusive vcs iram achar um link de um forum expecifico do acbr...

Obs: eu particulamente uso a classe do gilmer e estou satisfeito...

Abraços

Luiz Fernando

msn: empresoft@globo.com

skype:empresoft

empresoft@globo.com

FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1

FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1012

Link to comment
Share on other sites

Olá Desenvolvedores, Bom Dia!

Me desculpem ser um chatão, mas....

Estou notando tanto neste forum como em outros também que há uma grande número de Desenvolvedores/Programadores que não estão entendendo o algorítimo da coisa, eu sou um deles !!!

Por favor, me detalhem estes processos. Tendo eu uma aplicação que gerar pedidos, por exemplo, num certo momento, eu posso digitá-los diretamente, um a um, no sistema do SEFAZ, correto ou não ?

Casao queira gerar uma mídia de envio destes pedidos/NF, em qual formato eu gero e pra onde envio ?

Quando vocês dizes "usar uma classe de terceiros", então entre a minha aplicação e o SEFAZ (é SEFAZ mesmo ?) haverá uma classe intermediando e ajustando as informações ?

Se eu quizer fazer estes passos manualmente pra que eu possa entender ?

Nos ajudem a entender o processo ! Por favor !

A pergunta básica é : Exportar para onde ? Em qual formato ? Cadê o LayOut ?

A FINAL DE CONTAS, É XML OU TXT ?

________________________

Gilberto Herminio - Programador Pleno III - Mogi das Cruzes-SP

(Clipper a +- 20 anos) / C#/SQL2008/xxHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 9.03 + xDev v0.65

"Não Desenvolvo Software, crio arte Binaria...."

Editado por - sig_gilberto on 21/03/2011 08:57:10

Link to comment
Share on other sites

...continuando :

Caso que queira utilizar um emissor "de grátis", seria este ? http://www.emissornfehom.fazenda.sp.gov.br ?

Dai é pra ele que eu vou exportar em TXT/XML ?

Este seria um dos LayOut ?http://www.emissornfehom.fazenda.sp.gov.br/v2/docs/[Emissor_NF-e]_Manual_de_layout_TXT-NF-e_v2.0.0.pdf

________________________

Gilberto Herminio - Programador Pleno III - Mogi das Cruzes-SP

(Clipper a +- 20 anos) / C#/SQL2008/xxHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 9.03 + xDev v0.65

"Não Desenvolvo Software, crio arte Binaria...."

Editado por - sig_gilberto on 21/03/2011 09:10:57

Link to comment
Share on other sites

Gente a classe do gilmes é que Resolve todos os nossos problemas

Usar o Gratuito do Sefaz não dá certo |

Estou falando com propriedade, pois já usei o do sefaz.

Combinem com ele a classe, vale a pena cada Real.

É meio complicado de implementar a classe. Mas ele dá uma mão, e roda Beleza.

Link to comment
Share on other sites

Eu fiz assim:

Baixei o portal do governo gratuito, digitei uma nfe lá do jeito que precisava, depois cliquei em exportar, lá exporta tanto em xml, como txt.

Escolhi fazer txt, por ser mais prático, de posso do txt, me preocupei em estudar o que cada parametro faz, e o que tinha que tem no sistema meu para gerar aqueles campos.

Tanto a ferramenta do Gilmes, que comprei e não cheguei a usar. Como o ACBR monitor nfe, le o xml ou o txt, e faz, validação, transmissão. Se escolher o ACBR monitor NFE, tem uma versão que le o certificado A1, a outra le o A3 e o A1, mas não muda o jeito de programar.

Qualquer uma das que você escolher será bem atendido.

Boa sorte.

Leco Jales

Link to comment
Share on other sites

Leco, Bom Dia!

OK..me ajuda ai por favor :

1) O que você exatamente baixou no site da receita federal e por que ?

2) Você optou em exportar em TXT (pelo que entendi). Então se você optou por TXT, onde esta este layout ?

________________________

Gilberto Herminio - Programador Pleno III - Mogi das Cruzes-SP

(Clipper a +- 20 anos) / C#/SQL2008/xxHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 9.03 + xDev v0.65

"Não Desenvolvo Software, crio arte Binaria...."

Editado por - sig_gilberto on 21/03/2011 09:31:02

Link to comment
Share on other sites

Amigo Gabrieis, Você já conseguiu o tão sonhado layOut ? rsrs

citação:

alguem tem uma rotina que cria arquivo.xml;

oou o laytou de arquivo.txt ok

fw10.8harbour-xDev.70 Studio-bcc582-Mysql-Pelles

programadorcp80@hotmail.com.br ;


id=quote>id=quote>

________________________

Gilberto Herminio - Programador Pleno III - Mogi das Cruzes-SP

(Clipper a +- 20 anos) / C#/SQL2008/xxHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 9.03 + xDev v0.65

"Não Desenvolvo Software, crio arte Binaria...."

Editado por - sig_gilberto on 21/03/2011 10:00:31

Link to comment
Share on other sites

Obrigado S.A.Oliveira...

Então eu vou gerar um arquivo em TXT neste layout atraés da minha aplicação e depois acessar a aplicação do emissor de NFe que faço o download aqui neste link :(http://www.nfe.fazenda.gov.br/PORTAL/emissor.aspx)

e enviar o arquivos pra Receita, é isso ?

Hum...e nesta história, onde fica o XML ?

________________________

Gilberto Herminio - Programador Pleno III - Mogi das Cruzes-SP

xHB121+Fw912 / C#/SQL2008

"Não Desenvolvo Software, crio arte Binaria...."

Link to comment
Share on other sites

Certo..já o baixei...instalei...mexi..legal!!

Agora, onde esta o layOut caso eu queira exportar as notas ?

É pra usar este mesmo ?

http://www.emissornfehom.fazenda.sp.gov.br/v2/docs/[Emissor_NF-e]_Manual_de_layout_TXT-NF-e_v2.0.0.pdf

________________________

Gilberto Herminio - Programador Pleno III - Mogi das Cruzes-SP

xHB121+Fw912 / C#/SQL2008

"Não Desenvolvo Software, crio arte Binaria...."

Editado por - sig_gilberto on 21/03/2011 12:02:11

Link to comment
Share on other sites

Este por um acaso seria o modelo do arquivo TXT ?

http://www.guj.com.br/java/204773-emissor-nfe-da-sef

NOTAFISCAL|1

A|2.00|NFe35101001996104000160550010000000071020944482|

B|35|02094448|RET P/ BENEFICIAMENTO|0|55|1|7|2010-10-02|2010-10-02|09:44:44|1|3550308|1|1|2|2|1|3|2.0.2|||

C|TOCKPRINT ACABAMENTOS GRAFICOS LTDA. EPP|TOCKPRINT|148036682114||||3|

C02|01996104000160|

C05|RUA ANDRE DE LEAO|55||MOOCA|3550308|Sao Paulo|SP|03054010|1058|BRASIL|1132076133|

E|CORPRINT GRAFICA E EDITORA LTDA|110856530110||eduardo@corprint.com.br|

E02|52176922000158|

E05|RUA AUGUSTO PIACENTINI|454||JD INDEPENDENCIA|3550308|Sao Paulo|SP|03223190|1058|BRASIL|21485200|

H|1||

I|32757||U.V. RESERVA GLITTER FRENTE|37031029||5124|FL|2345.0000|0.1706|400.00||FL|2345.0000|0.1706|||||1|||

M|

N|

N06|0|40|||

Q|

Q02|01|400.00|3.00|12.00|

S|

S02|01|400.00|0.65|2.60|

H|2||

I|32757||U.V. RESERVA FOSCA FRENTE|37031029||5124|FL|2345.0000|0.1066|250.00||FL|2345.0000|0.1066|||||1|||

M|

N|

N06|0|40|||

Q|

Q02|01|250.00|3.00|7.50|

S|

S02|01|250.00|0.65|1.63|

H|3||

I|32757||UV. RESERVA CYREL FRENTE|37031029||5124|FL|2345.0000|5.7308|13438.77||FL|2345.0000|5.7308|||||1|||

M|

N|

N06|0|40|||

Q|

Q02|01|13438.77|3.00|403.16|

S|

S02|01|13438.77|0.65|87.35|

W|

W02|0.00|0.00|0.00|0.00|14088.77|0.00|0.00|0.00|0.00|0.00|422.66|91.58|0.00|14088.77|

X|0|

Y|

Y02|000007|14088.77||14088.77|

Y07|000007-A|2010-10-30|14088.77|

________________________

Gilberto Herminio - Programador Pleno III - Mogi das Cruzes-SP

xHB121+Fw912 / C#/SQL2008

"Não Desenvolvo Software, crio arte Binaria...."

Link to comment
Share on other sites

Pessoal, me dá uma forçai ai, por favor.

Se é este o modelo do arquivo de envio, alguém poderia, caso tenham, me enviar este layout com a detalhamento de cada campo ?

________________________

Gilberto Herminio - Programador Pleno III - Mogi das Cruzes-SP

xHB121+Fw912 / C#/SQL2008

"Não Desenvolvo Software, crio arte Binaria...."

Link to comment
Share on other sites

Segue meu Prg que gera o Txt

Talvez te ajude

*

cFile := VP_PATH+"NFE\NF"+strzero(vn_nf,6)+".TXT"

mfim_arq:=chr(26) && final de arquivo

mfim_lin:=chr(13)+chr(10) && final de linha

mini_arq:=chr(239)+chr(187)+chr(191)+"10"+"1,00" && final de linha

mini_arq:=chr(239)+chr(187)+chr(191)+"10"+"1,00" && final de linha

harq1:=fcreate(cFile) && cria o arquivo ***

Set Centu on

*---> Campos Numericos Colocar Ltrim(STR

*

SELE FAT

*---> Indicador da NF-e

B_cUf := Subs(C05_cMun,1,2) && N ????

B_cNf := "" && N

B_natOp := Alltrim(mNfiscal)

IF FAT->PRAZOPGTO = "00"

B_indPag := "0" && N ??? Forma Pagto

ELSE

B_indPag := "1" && N ??? Forma Pagto

ENDIF

B_mod := "55" && C

B_serie := "1" && N

B_nNf := ltrim(str(fat->nronFiscal,9)) && N

B_dEmi := subs(dtoc(fat->dtnFiscal),7,4)+"-"+subs(dtoc(fat->dtnfiscal),4,2)+"-"+subs(dtoc(fat->dtnfiscal),1,2) && D

*

IF VP_CNPJ = "54.450.473/0001-10" //POLISACOS COMERCIO E INDUSTRIA LTDA

B_dSaiEnt := subs(dtoc(fat->dtnFiscal),7,4)+"-"+subs(dtoc(fat->dtnfiscal),4,2)+"-"+subs(dtoc(fat->dtnfiscal),1,2) && D

B_hSaiEnt := subs(time(),1,8)

ELSE

B_dSaiEnt := ""

B_hSaiEnt := ""

ENDIF

IF VAL(SUBS(FAT->CODFISCAL,1,1)) > 4

B_tpNF := "1" && N

ELSE

B_tpNF := "0" && N

ENDIF

B_cMunFG := C05_cMun && N

B_tpImp := "1" && N

B_tpEmis := "1" && N

B_cDV := "0" && N Opcional

B_finNFe := "1" && N

B_procEmi := "0" && N ?????

B_verProc := "NF-eletronica.com" && C ????

B_XJUST := ""

B_DHCONT := ""

B_NFREF := "0"

C_CRT := VP_REGTRB

*

if fat->Viatransp = "Fornecedor"

*---> Destinatario

E_xNome := alltrim(for->nome) && C

E_xNome := STRTRAN(E_xNome,"&","",1,40)

E_xNome := STRTRAN(E_xNome,":","",1,40)

E_IE := alltrim(for->estadualrg) && C

E_ISUF := "" && C opcional

if for->cgcfor = spac(14)

E_cnpj=.t.

E_cnpj_cpf := "" && Verificar se é CNPJ/CPF usar zeros a esquerda

Else

if len(alltrim(for->cgcfor)) = 14

E_cnpj=.t.

E_cnpj_cpf := alltrim(for->cgcfor) && Verificar se é CNPJ/CPF usar zeros a esquerda

else

E_cnpj=.f.

E_cnpj_cpf := alltrim(for->cgcfor) && Verificar se é CNPJ/CPF usar zeros a esquerda

endif

Endif

E05_xLgr := for->endereco && C

E05_xLgr := STRTRAN(E05_xLgr,".","",1,40)

E05_xLgr := STRTRAN(E05_xLgr,":","",1,40)

E05_xLgr := STRTRAN(E05_xLgr,",","",1,40)

E05_xLgr := STRTRAN(E05_xLgr,"&","",1,40)

E05_xLgr := ALLTRIM(E05_XLGR)

IF for->NRO > 0

E05_nro := alltrim(STR(for->nro,6)) && C

ELSE

E05_nro := "S/N" && C

ENDIF

E05_xCpl := ALLTRIM(for->COMPLEMENT) && C Opcional

E05_xBairro := ALLtrim(for->bairro) && C

E05_cMun := ALLTRIM(CID->CODUF)+ALLTRIM(CID->CODIGO) && N

E05_xMun := ALLtrim(for->cidade) && C

E05_UF := ALLTRIM(for->estado) && C

E05_CEP := alltrim(STRTRAN(for->cep,"-","",1,10))

E05_cPais := "" && N opcional

E05_xPais := "BRASIL" && C opcional

E05_Fone := alltrim(for->telefone1) && N opcional

E05_Fone := STRTRAN(E05_Fone," ","",1,40)

E05_Fone := STRTRAN(E05_Fone,":","",1,40)

E05_Fone := STRTRAN(E05_Fone,"/","",1,40)

E05_Fone := STRTRAN(E05_Fone,"(","",1,40)

E05_Fone := STRTRAN(E05_Fone,")","",1,40)

E05_Fone := STRTRAN(E05_Fone,")","",1,40)

E05_Fone := STRTRAN(E05_Fone,"/","",1,40)

E05_Fone := STRTRAN(E05_Fone,"-","",1,40)

E05_Fone := alltrim(E05_Fone)

E05_Fone := VAL(E05_Fone)

E05_Fone := strzero(e05_fone,10)

E19_EMAIL := ALLTRIM(FOR->EMAILFIS)

Else

*---> Destinatario

E_xNome := alltrim(cli->nome) && C

E_xNome := STRTRAN(E_xNome,"&","",1,40)

E_xNome := STRTRAN(E_xNome,":","",1,40)

E_IE := alltrim(cli->estadualrg) && C

E_ISUF := "" && C opcional

if cli->cgccli = spac(14)

E_cnpj=.t.

E_cnpj_cpf := "" && Verificar se é CNPJ/CPF usar zeros a esquerda

Else

if len(alltrim(cli->cgccli)) = 14

E_cnpj=.t.

E_cnpj_cpf := alltrim(cli->cgccli) && Verificar se é CNPJ/CPF usar zeros a esquerda

else

E_cnpj=.f.

E_cnpj_cpf := alltrim(cli->cgccli) && Verificar se é CNPJ/CPF usar zeros a esquerda

endif

Endif

E05_xLgr := cli->endereco && C

E05_xLgr := STRTRAN(E05_xLgr,".","",1,40)

E05_xLgr := STRTRAN(E05_xLgr,":","",1,40)

E05_xLgr := STRTRAN(E05_xLgr,",","",1,40)

E05_xLgr := STRTRAN(E05_xLgr,"&","",1,40)

E05_xLgr := ALLTRIM(E05_XLGR)

IF CLI->NRO > 0

E05_nro := alltrim(STR(cli->nro,6)) && C

ELSE

E05_nro := "S/N" && C

ENDIF

E05_xCpl := ALLTRIM(CLI->COMPLEMENT) && C Opcional

E05_xBairro := ALLtrim(cli->bairro) && C

E05_cMun := ALLTRIM(CID->CODUF)+ALLTRIM(CID->CODIGO) && N

E05_xMun := ALLtrim(cli->cidade) && C

E05_UF := ALLTRIM(cli->estado) && C

E05_CEP := alltrim(STRTRAN(cli->cep,"-","",1,10))

E05_cPais := "" && N opcional

E05_xPais := "BRASIL" && C opcional

E05_Fone := alltrim(cli->telefone1) && N opcional

E05_Fone := STRTRAN(E05_Fone," ","",1,40)

E05_Fone := STRTRAN(E05_Fone,":","",1,40)

E05_Fone := STRTRAN(E05_Fone,"/","",1,40)

E05_Fone := STRTRAN(E05_Fone,"(","",1,40)

E05_Fone := STRTRAN(E05_Fone,")","",1,40)

E05_Fone := STRTRAN(E05_Fone,")","",1,40)

E05_Fone := STRTRAN(E05_Fone,"/","",1,40)

E05_Fone := STRTRAN(E05_Fone,"-","",1,40)

E05_Fone := alltrim(E05_Fone)

E05_Fone := VAL(E05_Fone)

E05_Fone := strzero(e05_fone,10)

E19_EMAIL := ALLTRIM(CLI->EMAILFIS)

Endif

mTexto:= "NOTA FISCAL|1|"+mFim_Lin

mTexto:= mTexto+"A|2.00|NFe|"+mFim_lin

mTexto:= mTexto+"B|"+B_cUF+"|"+B_cNF+"|"+B_NatOp+"|"+B_indPag+"|"+B_Mod+"|"+B_Serie+"|"+B_nNf+"|"+B_dEmi+"|"+B_dSaiEnt+"|"+b_hSaiEnt+"|"+B_TpNf+"|"+B_cMunFg+"|"+B_tpImp+"|"+B_tpEmis+"|"+B_cDv+"|"+B_tpAmb+"|"+B_finNFe+"|"+B_procEmi+"|"+B_verProc+"|"+B_DHCONT+"|"+B_XJUST+"|"+mFim_Lin

mTexto:= mTexto+"C|"+C_xNome+"|"+C_xFant+"|"+C_IE+"|"+C_IEST+"|"+C_IM+"|"+C_CNAE+"|"+C_CRT+"|"+mFim_Lin

mTexto:= mTexto+"C02|"+C_cnpj_cpf+"|"+mFim_Lin

mTexto:= mTexto+"C05|"+C05_xLgr+"|"+C05_nro+"|"+C05_xCpl+"|"+C05_xBairro+"|"+C05_cMun+"|"+C05_xMun+"|"+C05_UF+"|"+C05_Cep+"|"+C05_cPais+"|"+"|"+C05_Fone+"|"+mFim_lin

mTexto:= mTexto+"E|"+E_xNome+"|"+E_IE+"|"+E_ISUF+"|"+E19_EMAIL+"|"+mFim_Lin

mTexto:= mTexto+iif(E_cnpj,"E02","E03")+"|"+E_cnpj_cpf+"|"+mFim_Lin

mTexto:= mTexto+"E05|"+E05_xLgr+"|"+E05_nro+"|"+E05_xCpl+"|"+E05_xBairro+"|"+E05_cMun+"|"+E05_xMun+"|"+E05_UF+"|"+E05_Cep+"|"+E05_cPais+"|"+"|"+E05_Fone+"|"+mFim_lin

*---> Local de entrega... Informar apenas qdo for # End. Destinatario.

*if alltrim(upper(cli->endereco))#alltrim(upper(cli->localentre))

* G_Cnpj := "00000000000000" && N

* G_xLgr := trim(FAT->localentre) && C

* G_nro := "001" && C ???

* G_xCpl := "" && C opcional

* G_xBairro := "SAUDE" && C ???

* G_xMun := "SAO PAULO" && C ???

* G_cMun := "3550308" && N

* G_UF := "SP" && C ???

* mTexto:= mTexto+"G|"+G_Cnpj+"|"+G_xLgr+"|"+G_nro+"|"+G_xCpl+"|"+G_xBairro+"|"+G_cMun+"|"+G_xMun+"|"+G_UF+"|"+G_UF+"|"+mFim_lin

*Endif

SELE FATI

DBSETORDER(1)

SEEK FAT->NRONFISCAL

vn_item=1

TOT_PIS = 0

TOT_FIN = 0

DO WHILE .NOT. EOF() .AND. fat->nronfiscal=FATI->nronota

IF EMPRESA # VP_EMP

SKIP

LOOP

ENDIF

IF SERIE = "ACE"

SKIP

LOOP

ENDIF

* if quantidade = 0 .and. pesoliqui = 0.00

* skip

* loop

* endif

IF VP_CNPJ = "05.037.937/0001-55" .OR. VP_CNPJ = "58.604.190/0001-36" .OR. VP_CNPJ = "58.604.190/0002-17" .OR. VP_CNPJ = "54.474.036/0001-36" .OR. VP_CNPJ = "56.800.782/0001-06" .OR. VP_CNPJ = "13.214.817/0001-04"

IF SUBS(REFERENCIA,1,10) = SPAC(10)

I_cProd := alltrim(str(FATI->codprod,8))

ELSE

I_cProd := alltrim(FATI->REFERENCIA)

ENDIF

ELSE

I_cProd := alltrim(str(FATI->codprod,8))

ENDIF

I_cEAN := "" && C ???

IF VP_CNPJ = "05.037.937/0001-55" .OR. VP_CNPJ = "13.214.817/0001-04" //RAIO RIVEX

I_xProd := alltrim(FATI->descricao)+" "+alltrim(FATI->NRORIGINAL)

ELSEIF VP_CNPJ = "66.016.965/0001-80" //CENTERLIGAS

I_xProd := alltrim(fati->marca)+" "+alltrim(FATI->descricao)

ELSE

I_xProd := alltrim(FATI->descricao)

ENDIF

I_XPROD := ALLTRIM(I_XPROD)

I_NCM := "" && C Opcional

*

Sele Fis

seek fati->codipi

vn_dipi = spac(10)

if .not. eof()

i_ncm := alltrim(Fis->descricao)

Endif

*

sele fati

I_EXTIPI := "" && C Opcional

I_Genero := "" && N Opcional

IF FATI->CODFISCAL = SPAC(05)

I_CFOP := TRIM(STRTRAN(FAT->codfiscal,".","",1,5))

ELSE

I_CFOP := TRIM(STRTRAN(FATI->codfiscal,".","",1,5))

ENDIF

I_uCom := trim(FATI->unidade)

I_vUnCom := alltrim(str(FATI->precounit,12,4))

I_vProd := alltrim(str(FATI->totitem,12,2))

I_cEanTrib := "" && C ???

I_uTrib := trim(FATI->unidade) && C ???

I_qCom := alltrim(str(FATI->quantidade,12,4))

I_qTrib := alltrim(str(FATI->quantidade,12,4)) && ???

I_vUnTrib := alltrim(str(FATI->precounit,12,4)) && ???

I_vFrete := "" && N Opcional

I_vSeg := "" && N Opcional

I_vDesc := "" && N Opcional

I_vOutro := ""

I_indtot := "1"

I_DI := ""

I_XPED := ""

I_NITEMPED := ""

vn_obsite = ALLTRIM(PEDIDOITE)

V01_ADPROD = ""

mTexto:= mTexto+"H|"+alltrim(str(vn_item,3))+"|"+vn_obsite+"|"+mFim_lin

mTexto:= mTexto+"I|"+I_cProd+"|"+I_cEAN+"|"+I_xProd+"|"+I_NCM+"|"+I_EXTIPI+"|"+I_CFOP+"|"+I_uCOM+"|"+I_qCOM+"|"+I_vUnCom+"|"+I_vProd+"|"+I_ceantrib+"|"+I_utrib+"|"+I_qtrib+"|"+I_vunTrib+"|"+I_vFrete+"|"+I_vSeg+"|"+I_vDesc+"|"+I_vOutro+"|"+I_indtot+"|"+I_DI+"|"+I_XPED+I_NITEMPED+"|"+mFim_Lin

*

*->fracionar outrasdesp frete desconto

vn_perc = fati->totitem / fat->vlrmercad

vn_perc = round(vn_perc,6)

it_frete = fat->vlrfrete * vn_perc

it_despe = fat->outradesp * vn_perc

it_desco = fat->vlrdescon * vn_perc

*

IF VP_REGTRB = "3" .OR. VP_REGTRB = "2"

IF SUBS(FATI->TRIBUTO,2,2) = "00"

N02_Orig := subs(fati->tributo,1,1) && N ???

N02_CST := subs(fati->tributo,2,2) && N ???

N02_modBC := "3" && N ???

if fati->percicms = 0

N02_vBC := alltrim(str(0.00,15,2)) && N ???

N02_pICMS := alltrim(str(0.00,15,2)) && N ???

N02_vICMS := alltrim(str(0.00,15,2)) && N ???

ELSE

it_base = fati->totitem+it_frete+it_despe-it_desco

N02_vBC := alltrim(str(it_base,15,2)) &&

N02_pICMS := alltrim(str(fati->percicms,5,2))

N02_vIcms := alltrim(str(((it_base*fati->percicms)/100),15,2)) && ??????

ENDIF

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N02|"+N02_Orig+"|"+N02_CST+"|"+N02_modBC+"|"+N02_vBC+"|"+N02_pICMS+"|"+N02_vICMS+"|"+mFim_Lin

ELSEIF SUBS(FATI->TRIBUTO,2,2) = "10"

sele sub

seek fati->CODIPI+E05_Uf

if .not. eof()

miva = iva

micmsNor = icms

micmsSub = icmssubs

else

miva = 0

micmsnor = 0

micmssub = 0

Endif

*

sele fati

if miva > 0

vn_bassubs = (totitem+vlripi) + (((totitem+vlripi)*miva)/100)

vn_vlrsubs = (vn_bassubs * mIcmsSub)/100

vn_vlrsubs = VN_VLRSUBS - ((totitem * mIcmsNor) / 100)

else

vn_bassubs = 0.00

vn_vlrsubs = 0.00

endif

it_base = fati->totitem+it_frete+it_despe-it_desco

*

N03_Orig := subs(fati->tributo,1,1) && N ???

N03_CST := subs(fati->tributo,2,2) && N ???

N03_vBC := alltrim(str(it_base,15,2)) &&

N03_pICMS := alltrim(str(fati->percicms,5,2))

N03_vIcms := alltrim(str(((it_base*fati->percicms)/100),15,2)) && ??????

N03_mBC := "0" && N ???

N03_MBCST := "0" && N ???

N03_MVAST := alltrim(str(miva,5,2))

N03_REDBCST:= alltrim(str(percicms,5,2)) && N ???

N03_VBCST := alltrim(str(vn_bassubs,15,2)) &&

N03_PICMSST:= alltrim(str(mIcmssub,5,2)) &&

N03_VICMSST:= alltrim(str(vn_vlrsubs,15,2)) &&

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N03|"+N03_Orig+"|"+N03_CST+"|"+N03_mBC+"|"+N03_vBC+"|"+N03_pICMS+"|"+N03_vICMS+"|"+N03_mBCST+"|"+N03_MVAST+"|"+N03_REDBCST+"|"+N03_VBCST+"|"+N03_PICMSST+"|"+N03_VICMSST+"|"+mFim_lin

ELSEIF SUBS(FATI->TRIBUTO,2,2) = "20"

sele sub

seek fati->codipi+E05_Uf

if .not. eof()

miva = iva

micmsNor = icms

micmsSub = icmssubs

else

miva = 0

micmsnor = 0

micmssub = 0

Endif

sele fati

it_base = fati->totitem+it_frete+it_despe-it_desco

vn_bassubs = (it_base - (it_base * miva))

vn_vlrsubs = ((it_base - (it_base * miva)) * fati->percimcs) / 100

N02_Orig := subs(fati->tributo,1,1) && N ???

N02_CST := subs(fati->tributo,2,2) && N ???

N02_modBC := "3" && N ???

N02_rBC := alltrim(str(mIva,5,2)) && N

N02_vBC := alltrim(str(vn_bassubs,15,2)) &&

N02_pICMS := alltrim(str(FATI->percicms,5,2))

N02_vIcms := alltrim(str(vn_vlrsubs,15,2)) && ??????

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N04|"+N02_Orig+"|"+N02_CST+"|"+N02_modBC+"|"+N02_rBC+"|"+N02_vBC+"|"+N02_pICMS+"|"+N02_vICMS+"|"+mFim_Lin

ELSEIF SUBS(FATI->TRIBUTO,2,2) = "30"

sele sub

seek fati->CODIPI+E05_Uf

if .not. eof()

miva = iva

micmsNor = icms

micmsSub = icmssubs

else

miva = 0

micmsnor = 0

micmssub = 0

Endif

sele fati

it_base = fati->totitem+it_frete+it_despe-it_desco

if miva > 0

vn_bassubs = (totitem+vlripi) + (((totitem+vlripi)*miva)/100)

vn_vlrsubs = (vn_bassubs * mIcmsSub)/100

vn_vlrsubs = VN_VLRSUBS - ((totitem * mIcmsNor) / 100)

else

vn_bassubs = 0.00

vn_vlrsubs = 0.00

endif

N03_Orig := subs(fati->tributo,1,1) && N ???

N03_CST := subs(fati->tributo,2,2) && N ???

N03_vBC := alltrim(str(it_base,15,2)) &&

N03_pICMS := alltrim(str(fati->percicms,5,2))

N03_vIcms := alltrim(str(((it_base*fati->percicms)/100),15,2)) && ??????

N03_mBC := "0" && N ???

N03_MBCST := "0" && N ???

N03_MVAST := alltrim(str(miva,5,2))

N03_REDBCST:= alltrim(str(percicms,5,2)) && N ???

N03_VBCST := alltrim(str(vn_bassubs,15,2)) &&

N03_PICMSST:= alltrim(str(mIcmssub,5,2)) &&

N03_VICMSST:= alltrim(str(vn_vlrsubs,15,2)) &&

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N05|"+N03_Orig+"|"+N03_CST+"|"+N03_mBC+"|"+N03_MVAST+"|"+N03_REDBCST+"|"+N03_VBCST+"|"+N03_PICMSST+"|"+N03_VICMSST+"|"+mFim_lin

ELSEIF SUBS(FATI->TRIBUTO,2,2) = "40" .OR. SUBS(FATI->TRIBUTO,2,2) = "41"

it_base = fati->totitem+it_frete+it_despe-it_desco

N02_Orig := subs(fati->tributo,1,1) && N ???

N02_CST := subs(fati->tributo,2,2) && N ???

N02_modBC := "3" && N ???

N02_vBC := alltrim(str(it_base,15,2)) &&

N02_pICMS := alltrim(str(fati->percicms,5,2))

N02_vIcms := alltrim(str(((it_base*fati->percicms)/100),15,2)) && ??????

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N06|"+N02_Orig+"|"+N02_CST+"|"+n02_vicms+"|"+"|"+mFim_Lin

ELSEIF SUBS(FATI->TRIBUTO,2,2) = "50"

it_base = fati->totitem+it_frete+it_despe-it_desco

N02_Orig := subs(fati->tributo,1,1) && N ???

N02_CST := subs(fati->tributo,2,2) && N ???

N02_modBC := "0" && N ???

N02_vBC := alltrim(str(it_base,15,2)) &&

N02_pICMS := alltrim(str(fati->percicms,5,2))

N02_vIcms := alltrim(str(((it_base*fati->percicms)/100),15,2)) && ??????

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N06|"+N02_Orig+"|"+N02_CST+"|"+n02_vicms+"|"+"|"+mFim_Lin

ELSEIF SUBS(FATI->TRIBUTO,2,2) = "51"

it_base = fati->totitem+it_frete+it_despe-it_desco

N07_Orig := subs(fati->tributo,1,1) && N ???

N07_CST := subs(fati->tributo,2,2) && N ???

N07_modBC := "3" && N ???

N07_vBC := alltrim(str(it_base,15,2)) &&

N07_pICMS := alltrim(str(fati->percicms,5,2))

N07_vIcms := alltrim(str(((it_base*fati->percicms)/100),15,2)) && ??????

N07_pRDBc := alltrim(str(fati->percicms,5,2))

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N07|"+N07_Orig+"|"+N07_CST+"|"+N07_MODBC+"|"+N07_PRDBC+"|"+n07_vbc+"|"+n07_picms+"|"+n07_vicms+"|"+mFim_Lin

ELSEIF SUBS(FATI->TRIBUTO,2,2) = "60"

it_base = fati->totitem+it_frete+it_despe-it_desco

N08_Orig := subs(fati->tributo,1,1) && N ???

N08_CST := subs(fati->tributo,2,2) && N ???

N08_modBC := "0" && N ???

N08_vBC := alltrim(str(it_base,15,2)) &&

N08_pICMS := alltrim(str(fati->percicms,5,2))

N08_vIcms := alltrim(str(((it_base*fati->percicms)/100),15,2)) && ??????

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N08|"+N08_Orig+"|"+N08_CST+"|"+N08_VBC+"|"+N08_PICMS+"|"+mFim_Lin

ELSEIF SUBS(FATI->TRIBUTO,2,2) = "70"

it_base = fati->totitem+it_frete+it_despe-it_desco

N08_Orig := subs(fati->tributo,1,1) && N ???

N08_CST := subs(fati->tributo,2,2) && N ???

N08_modBC := "0" && N ???

N08_vBC := alltrim(str(it_base,15,2)) &&

N08_pICMS := alltrim(str(fatI->percicms,5,2))

N08_vIcms := alltrim(str(((it_base*FATI->percicms)/100),15,2)) && ??????

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N09|"+N08_Orig+"|"+N08_CST+"|"+N08_VBC+"|"+N08_PICMS+"|"+mFim_Lin

ELSEIF SUBS(FATI->TRIBUTO,2,2) = "90"

it_base = fati->totitem+it_frete+it_despe-it_desco

N10_Orig := subs(fati->tributo,1,1) && N ???

N10_CST := subs(fati->tributo,2,2) && N ???

N10_modBC := "3" && N ???

N10_vBC := alltrim(str(it_base,15,2)) &&

N10_pICMS := alltrim(str(FATI->percicms,5,2))

N10_vIcms := alltrim(str(((it_base*fati->percicms)/100),15,2)) && ??????

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N10|"+N10_Orig+"|"+N10_CST+"|"+N10_MODBC+"|"+N10_PICMS+"|"+mFim_Lin

ELSE

it_base = fati->totitem+it_frete+it_despe-it_desco

N06_Orig := subs(fati->tributo,1,1) && N ???

N06_CST := subs(fati->tributo,2,2) && N ???

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N06|"+N06_Orig+"|"+N06_CST+"|"+mFim_Lin

ENDIF

ELSE

IF SUBS(FATI->TRIBUTO,2,3) = "101"

it_base = fati->totitem+it_frete+it_despe-it_desco

N10_Orig := subs(fati->tributo,1,1) && N ???

N10_CST := subs(fati->tributo,2,3) && N ???

N10_pNaci := alltrim(str(VP_PEPP,5,2))

N10_vNaci := alltrim(str(((it_base*VP_PEPP)/100),15,2)) && ??????

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N10c|"+N10_Orig+"|"+N10_CST+"|"+N10_pNaci+"|"+N10_vNaci+"|"+mFim_Lin

ELSEIF SUBS(FATI->TRIBUTO,2,3) = "102" .OR. SUBS(FATI->TRIBUTO,2,3) = "103" .OR. SUBS(FATI->TRIBUTO,2,3) = "300" .OR. SUBS(FATI->TRIBUTO,2,3) = "400"

it_base = fati->totitem+it_frete+it_despe-it_desco

N10_Orig := subs(fati->tributo,1,1) && N ???

N10_CST := subs(fati->tributo,2,3) && N ???

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N10d|"+N10_Orig+"|"+N10_CST+"|"+mFim_Lin

ELSEIF SUBS(FATI->TRIBUTO,2,3) = "201"

it_base = fati->totitem+it_frete+it_despe-it_desco

sele sub

seek fati->CODIPI+E05_Uf

if .not. eof()

miva = iva

micmsNor = icms

micmsSub = icmssubs

else

miva = 0

micmsnor = 0

micmssub = 0

Endif

sele fati

if miva > 0

vn_bassubs = (totitem+vlripi) + (((totitem+vlripi)*miva)/100)

vn_vlrsubs = (vn_bassubs * mIcmsSub)/100

vn_vlrsubs = VN_VLRSUBS - ((totitem * mIcmsNor) / 100)

else

vn_bassubs = 0.00

vn_vlrsubs = 0.00

endif

N10_Orig := subs(fati->tributo,1,1) && N ???

N10_CST := subs(fati->tributo,2,3) && N ???

N10_vBC := alltrim(str(it_base,15,2)) &&

N10_pICMS := alltrim(str(fati->percicms,5,2))

N10_vIcms := alltrim(str(((it_base*fati->percicms)/100),15,2)) && ??????

N10_mBC := "0" && N ???

N10_MBCST := "0" && N ???

N10_MVAST := alltrim(str(miva,5,2))

N10_REDBCST:= alltrim(str(percicms,5,2)) && N ???

N10_VBCST := alltrim(str(vn_bassubs,15,2)) &&

N10_PICMSST:= alltrim(str(mIcmssub,5,2)) &&

N10_VICMSST:= alltrim(str(vn_vlrsubs,15,2)) &&

N10_PCREDSN := alltrim(str(VP_PEPP,5,2))

N10_VCREDSN := alltrim(str(((FATI->totitem*VP_PEPP)/100),15,2)) && ??????

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N10e|"+N10_Orig+"|"+N10_CST+"|"+N10_mBC+"|"+N10_MVAST+"|"+N10_REDBCST+"|"+N10_VBCST+"|"+N10_PICMSST+"|"+N10_VICMSST+"|"+N10_PCREDSN+"|"+N10_VCREDSN+"|"+mFim_lin

ELSEIF SUBS(FATI->TRIBUTO,2,3) = "202" .OR. SUBS(FATI->TRIBUTO,2,3) = "203"

it_base = fati->totitem+it_frete+it_despe-it_desco

sele sub

seek fati->CODIPI+E05_Uf

if .not. eof()

miva = iva

micmsNor = icms

micmsSub = icmssubs

else

miva = 0

micmsnor = 0

micmssub = 0

Endif

sele fati

if miva > 0

vn_bassubs = (totitem+vlripi) + (((totitem+vlripi)*miva)/100)

vn_vlrsubs = (vn_bassubs * mIcmsSub)/100

vn_vlrsubs = VN_VLRSUBS - ((totitem * mIcmsNor) / 100)

else

vn_bassubs = 0.00

vn_vlrsubs = 0.00

endif

N10_Orig := subs(fati->tributo,1,1) && N ???

N10_CST := subs(fati->tributo,2,3) && N ???

N10_vBC := alltrim(str(FATI->totitem,15,2)) &&

N10_pICMS := alltrim(str(FATI->percicms,5,2))

N10_vIcms := alltrim(str(((FATI->totitem*FATI->percicms)/100),15,2)) && ??????

N10_mBC := "0" && N ???

N10_MBCST := "0" && N ???

N10_MVAST := alltrim(str(miva,5,2))

N10_REDBCST:= alltrim(str(percicms,5,2)) && N ???

N10_VBCST := alltrim(str(vn_bassubs,15,2)) &&

N10_PICMSST:= alltrim(str(mIcmssub,5,2)) &&

N10_VICMSST:= alltrim(str(vn_vlrsubs,15,2)) &&

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N10f|"+N10_Orig+"|"+N10_CST+"|"+N10_mBC+"|"+N10_MVAST+"|"+N10_REDBCST+"|"+N10_VBCST+"|"+N10_PICMSST+"|"+N10_VICMSST+"|"+mFim_lin

ELSEIF SUBS(FATI->TRIBUTO,2,3) = "500"

it_base = fati->totitem+it_frete+it_despe-it_desco

sele sub

seek fati->CODIPI+E05_Uf

if .not. eof()

miva = iva

micmsNor = icms

micmsSub = icmssubs

else

miva = 0

micmsnor = 0

micmssub = 0

Endif

sele fati

N10_Orig := subs(fati->tributo,1,1) && N ???

N10_CST := subs(fati->tributo,2,3) && N ???

N10_BCSTRET:= alltrim(str(0.00,15,2)) && N ???

N10_ICMTRET:= alltrim(str(0.00,15,2)) && N ???

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N10g|"+N10_Orig+"|"+N10_CST+"|"+N10_mBC+"|"+N10_BCSTRET+"|"+N10_ICMTRET+"|"+mFim_lin

ELSEIF SUBS(FATI->TRIBUTO,2,3) = "900"

it_base = fati->totitem+it_frete+it_despe-it_desco

sele sub

seek fati->CODIPI+E05_Uf

if .not. eof()

miva = iva

micmsNor = icms

micmsSub = icmssubs

else

miva = 0

micmsnor = 0

micmssub = 0

Endif

sele fati

if miva > 0

vn_bassubs = (totitem+vlripi) + (((totitem+vlripi)*miva)/100)

vn_vlrsubs = (vn_bassubs * mIcmsSub)/100

vn_vlrsubs = VN_VLRSUBS - ((totitem * mIcmsNor) / 100)

else

vn_bassubs = 0.00

vn_vlrsubs = 0.00

endif

N10_Orig := subs(fati->tributo,1,1) && N ???

N10_CST := subs(fati->tributo,2,3) && N ???

N10_vBC := alltrim(str(FATI->totitem,15,2)) &&

N10_pICMS := alltrim(str(FATI->percicms,5,2))

N10_vIcms := alltrim(str(((FATI->totitem*FATI->percicms)/100),15,2)) && ??????

N10_mBC := "0" && N ???

N10_MBCST := "0" && N ???

N10_MVAST := alltrim(str(miva,5,2))

N10_REDBCST:= alltrim(str(percicms,5,2)) && N ???

N10_VBCST := alltrim(str(vn_bassubs,15,2)) &&

N10_PICMSST:= alltrim(str(mIcmssub,5,2)) &&

N10_VICMSST:= alltrim(str(vn_vlrsubs,15,2)) &&

N10_PCREDSN := alltrim(str(VP_PEPP,5,2))

N10_VCREDSN := alltrim(str(((FATI->totitem*VP_PEPP)/100),15,2)) && ??????

mTexto:= mTexto+"M"+"|"+mFim_lin

mTexto:= mTexto+"N"+"|"+mFim_lin

mTexto:= mTexto+"N10h|"+N10_Orig+"|"+N10_CST+"|"+N10_mBC+"|"+N10_MVAST+"|"+N10_REDBCST+"|"+N10_VBCST+"|"+N10_PICMSST+"|"+N10_VICMSST+"|"+N10_PCREDSN+"|"+N10_VCREDSN+"|"+mFim_lin

ENDIF

ENDIF

O_cIEnq := "" && Opcional

O_CNPJProd := "" && Opcional

O_cSelo := "" && Opcional

O_qSelo := "" && opcional

O_cEnq := "999" && C ????????

O07_vIpi := alltrim(str(FATI->vlripi,15,2))

O10_vBc := alltrim(str(FATI->totitem,15,2)) && ???????

O10_pIPI := alltrim(str(FATI->percipi,5,2))

O11_vUnid := "" && ???????

O11_qUnid := "" && ???????

IF VAL(SUBS(FATI->CODFISCAL,1,1)) > 4

IF FATI->PERCIPI = 0

IF SUBS(FATI->TRIBUTO,2,2) = "40"

O07_CST := "55" && C ????????

ELSEIF SUBS(FATI->TRIBUTO,2,2) = "41"

O07_CST := "55" && C ????????

ELSE

O07_CST := "51" && C ????????

ENDIF

ELSE

O07_CST := "50" && C ????????

ENDIF

ELSE

IF FATI->PERCIPI = 0

IF SUBS(FATI->TRIBUTO,2,2) = "40"

O07_CST := "05" && C ????????

ELSEIF SUBS(FATI->TRIBUTO,2,2) = "41"

O07_CST := "05" && C ????????

ELSE

O07_CST := "01" && C ????????

ENDIF

ELSE

O07_CST := "00" && C ????????

ENDIF

ENDIF

IF O07_CST = "00" .OR. O07_CST = "50"

mTexto:= mTexto+"O|"+O_cIEnq+"|"+O_cnpjprod+"|"+O_cSelo+"|"+O_qSelo+"|"+O_cEnq+"|"+mFim_Lin

mTexto:= mTexto+"O07|"+O07_CST+"|"+O07_vIPI+"|"+mFim_Lin

mTexto:= mTexto+"O10|"+O10_vBC+"|"+O10_pIpi+"|"+mFim_Lin

ELSE

mTexto:= mTexto+"O|"+O_cIEnq+"|"+O_cnpjprod+"|"+O_cSelo+"|"+O_qSelo+"|"+O_cEnq+"|"+mFim_Lin

mTexto:= mTexto+"O08|"+O07_CST+"|"+mFim_Lin

ENDIF

*-->PIS

VN_VLRPIS := ((TOTITEM * VN_PERCPIS)/100)

TOT_PIS := TOT_PIS + VN_VLRPIS

Q02_BASPIS := alltrim(str(FATI->totitem,15,2)) && ???????

Q02_ALIPIS := ALLTRIM(STR(VN_PERCPIS,6,2))

Q02_VLRPIS := ALLTRIM(STR(VN_VLRPIS,15,2))

*-->FINSOCIAL

VN_VLRFIN := ((TOTITEM * VN_PERCFIN)/100)

TOT_FIN := TOT_FIN + VN_VLRFIN

S02_BASFIN := alltrim(str(FATI->totitem,15,2)) && ???????

S02_ALIFIN := ALLTRIM(STR(VN_PERCFIN,6,2))

S02_VLRFIN := ALLTRIM(STR(VN_VLRFIN,15,2))

IF Q02_TRIPIS = "01"

mTexto:= mTexto+"Q"+"|"+mFim_lin

mTexto:= mTexto+"Q02|"+Q02_TRIPIS+"|"+Q02_BASPIS+"|"+Q02_ALIPIS+"|"+Q02_VLRPIS+"|"+mFim_Lin

ELSEIF Q02_TRIPIS = "99"

mTexto:= mTexto+"Q"+"|"+mFim_lin

mTexto:= mTexto+"Q05|"+Q02_TRIPIS+"|"+Q02_ALIPIS+"|"+mFim_lin

mTexto:= mTexto+"Q07|"+Q02_BASPIS+"|"+Q02_ALIPIS+"|"+mFim_lin

ELSE

mTexto:= mTexto+"Q"+"|"+mFim_lin

mTexto:= mTexto+"Q04|"+Q02_TRIPIS+"|"+mFim_Lin

ENDIF

*

IF S02_TRIFIN = "01"

mTexto:= mTexto+"S"+"|"+mFim_lin

mTexto:= mTexto+"S02|"+S02_TRIFIN+"|"+S02_BASFIN+"|"+S02_ALIFIN+"|"+S02_VLRFIN+"|"+mFim_Lin

ELSEIF S02_TRIFIN = "99"

mTexto:= mTexto+"S"+"|"+mFim_lin

mTexto:= mTexto+"S05|"+S02_TRIFIN+"|"+S02_ALIFIN+"|"+mFim_lin

mTexto:= mTexto+"S07|"+S02_BASFIN+"|"+S02_ALIFIN+"|"+mFim_lin

ELSE

mTexto:= mTexto+"S"+"|"+mFim_lin

mTexto:= mTexto+"S04|"+S02_TRIFIN+"|"+mFim_Lin

ENDIF

vn_item=vn_item+1

Skip

ENDDO

*---> Totais

W02_vBC := alltrim(str(fat->baseicm,15,2)) && N

W02_vICMS := alltrim(str(fat->valoricm,15,2)) && N

W02_vBCST := alltrim(str(fat->basesubs,15,2)) && N ???

W02_vST := alltrim(str(fat->vlrsubs,15,2)) && N ???

W02_vProd := alltrim(str(fat->vlrmercad,15,2)) && N

W02_vFrete := alltrim(str(fat->vlrfrete,15,2)) && N

W02_vSEG := alltrim(str(fat->vlrseguro,15,2)) && N

W02_vDesc := alltrim(str(fat->vlrdescon,15,2)) && N

W02_vII := alltrim(str(0.00,15,2)) && N ???

W02_vIPI := alltrim(str(fat->valoripi,15,2)) && N

W02_vPIS := alltrim(str(TOT_PIS,15,2)) && N ???

W02_vCofins := alltrim(str(TOT_FIN,15,2)) && N ???

W02_vOutro := alltrim(str(fat->outradesp,15,2)) && N

W02_vNf := alltrim(str(fat->totalnota,15,2)) && N

mTexto:= mTexto+"W"+"|"+mFim_lin

*Texto:= mTexto+"W02|"+W02_vBC+"|"+W02_vICMS+"|"+W02_vBCST+"|"+W02_vST+"|"+W02_vPROD+"|"+W02_vFrete+"|"+W02_vSEG+"|"+W02_vDesc+"|"+W02_vII+"|"+W02_vIPI+"|"+W02_vIPI+"|"+W02_vPIS+"|"+W02_vCOFINS+"|"+W02_vOutro+"|"+W02_vNF+mFim_lin

mTexto:= mTexto+"W02|"+W02_vBC+"|"+W02_vICMS+"|"+W02_vBCST+"|"+W02_vST+"|"+W02_vPROD+"|"+W02_vFrete+"|"+W02_vSEG+"|"+W02_vDesc+"|"+W02_vIPI+"|"+W02_vIPI+"|"+W02_vPIS+"|"+W02_vCOFINS+"|"+W02_vOutro+"|"+W02_vNF+"|"+mFim_lin

*---> Transporte

if fat->tipofrete = "1"

x_modFrete := "0" && N

else

x_modFrete := "1" && N

endif

*

X05_Fone := alltrim(tra->telefone1) && N opcional

X05_Fone := STRTRAN(x05_Fone," ","",1,40)

X05_Fone := STRTRAN(x05_Fone,":","",1,40)

X05_Fone := STRTRAN(x05_Fone,"/","",1,40)

X05_Fone := STRTRAN(x05_Fone,"(","",1,40)

X05_Fone := STRTRAN(x05_Fone,")","",1,40)

X05_Fone := STRTRAN(x05_Fone,")","",1,40)

X05_Fone := STRTRAN(x05_Fone,"/","",1,40)

X05_Fone := STRTRAN(x05_Fone,"-","",1,40)

X05_Fone := alltrim(x05_Fone)

X05_Fone := VAL(x05_Fone)

X05_Fone := strzero(x05_fone,10)

IF VP_CNPJ = "05.037.937/0001-55" .OR. VP_CNPJ = "13.214.817/0001-04" //RAIO RIVEX

X03_xNome := TRIM(tra->nome)+" "+x05_fone && C

ELSE

X03_xNome := TRIM(tra->nome) && C

ENDIF

X03_IE := TRIM(tra->estadualrg) && C

X03_xEnder := TRIM(tra->endereco) && C

X03_UF := TRIM(tra->estado) && C

X03_xMun := TRIM(tra->cidade) && C

X04_cnpj := TRIM(tra->cgccpf)

if len(alltrim(TRA->cgccpf)) = 14 .or. subs(tra->cgccpf,1,14) = spac(14)

E_cnpj=.t.

E_cnpj_cpf := alltrim(TRA->cgccpf) && Verificar se é CNPJ/CPF usar zeros a esquerda

else

E_cnpj=.f.

E_cnpj_cpf := alltrim(TRA->cgccpf) && Verificar se é CNPJ/CPF usar zeros a esquerda

endif

mTexto:= mTexto+"X|"+X_modFrete+"|"+mFim_lin

mTexto:= mTexto+"X03|"+X03_xNome+"|"+X03_IE+"|"+X03_xEnder+"|"+X03_UF+"|"+x03_xMun+"|"+mFim_lin

mTexto:= mTexto+iif(E_cnpj,"X04","X05")+"|"+E_cnpj_cpf+"|"+mFim_Lin

IF SUBS(TRA->PLACA,1,3) # SPAC(03)

X18_PLACA := TRIM(tra->placa)

X18_PLACA := STRTRAN(X18_PLACA,"-","",1,40)

X18_PLACA := STRTRAN(X18_PLACA,":","",1,40)

X18_PLACA := STRTRAN(X18_PLACA," ","",1,40)

X18_UFPLA := TRIM(TRA->PLACAUF)

mTexto:= mTexto+"X18|"+X18_PLACA+"|"+X18_UFPLA+"|"+"|"+mFim_lin

ENDIF

*---> Volumes

X26_qVOL := alltrim(str(fat->qtde1,15)) && N

X26_Esp := TRIM(fat->especie1) && C

X26_Marca := TRIM(fat->marca1) && C

X26_nVOL := TRIM(FAT->NUMERO1) && C

X26_PesoL := alltrim(str(fat->pesoliq1,15,3)) && N

X26_PesoB := alltrim(str(fat->pesobru1,15,3)) && N

mTexto:=mTexto+"X26|"+X26_QVOL+"|"+X26_ESP+"|"+X26_MARCA+"|"+X26_NVOL+"|"+X26_PESOL+"|"+X26_PESOB+"|"+mFim_Lin

*---> Falta Duplicatas

Y02_NFAT := alltrim(STR(fat->nronfiscal,6))

Y02_VORIG := alltrim(str(fat->totalnota,15,2)) && N

Y02_vDESC := "" && N

Y02_VLIQ := alltrim(str(fat->totalnota,15,2)) && N

mTexto:= mTexto+"Y|"+mFim_lin

mTexto:=mTexto+"Y02|"+Y02_NFAT+"|"+Y02_VORIG+"|"+Y02_VDESC+"|"+Y02_VLIQ+"|"+mFim_Lin

*

SELE DUP

DBSETORDER(1)

SET SOFT ON

SEEK STR(FAT->NRONFISCAL,8)

SET SOFT OFF

DO WHILE FAT->NRONFISCAL = NUMERODUPL .AND. .NOT. EOF()

IF EMPRESA # VP_EMP

SKIP

LOOP

ENDIF

IF SERIE = "A"

Y07_Ndup = ALLTRIM(str(fat->nronfiscal,7))+"A"

Y07_dVenc = subs(dtoc(datavencim),7,4)+"-"+subs(dtoc(datavencim),4,2)+"-"+subs(dtoc(datavencim),1,2) && D

Y07_Vdup = alltrim(str(VALORDUPLI,15,2))

mTexto:=mTexto+"Y07|"+Y07_Ndup+"|"+Y07_dVenc+"|"+Y07_Vdup+"|"+mFim_Lin

ELSEIF SERIE = "B"

Y07_Ndup = ALLTRIM(str(fat->nronfiscal,7))+"B"

Y07_dVenc = subs(dtoc(datavencim),7,4)+"-"+subs(dtoc(datavencim),4,2)+"-"+subs(dtoc(datavencim),1,2) && D

Y07_Vdup = alltrim(str(VALORDUPLI,15,2))

mTexto:=mTexto+"Y07|"+Y07_Ndup+"|"+Y07_dVenc+"|"+Y07_Vdup+"|"+mFim_Lin

ELSEIF SERIE = "C"

Y07_Ndup = ALLTRIM(str(fat->nronfiscal,7))+"C"

Y07_dVenc = subs(dtoc(datavencim),7,4)+"-"+subs(dtoc(datavencim),4,2)+"-"+subs(dtoc(datavencim),1,2) && D

Y07_Vdup = alltrim(str(VALORDUPLI,15,2))

mTexto:=mTexto+"Y07|"+Y07_Ndup+"|"+Y07_dVenc+"|"+Y07_Vdup+"|"+mFim_Lin

ELSEIF SERIE = "D"

Y07_Ndup = ALLTRIM(str(fat->nronfiscal,7))+"D"

Y07_dVenc = subs(dtoc(datavencim),7,4)+"-"+subs(dtoc(datavencim),4,2)+"-"+subs(dtoc(datavencim),1,2) && D

Y07_Vdup = alltrim(str(VALORDUPLI,15,2))

mTexto:=mTexto+"Y07|"+Y07_Ndup+"|"+Y07_dVenc+"|"+Y07_Vdup+"|"+mFim_Lin

ELSEIF SERIE = "E"

Y07_Ndup = ALLTRIM(str(fat->nronfiscal,7))+"E"

Y07_dVenc = subs(dtoc(datavencim),7,4)+"-"+subs(dtoc(datavencim),4,2)+"-"+subs(dtoc(datavencim),1,2) && D

Y07_Vdup = alltrim(str(VALORDUPLI,15,2))

mTexto:=mTexto+"Y07|"+Y07_Ndup+"|"+Y07_dVenc+"|"+Y07_Vdup+"|"+mFim_Lin

ELSEIF SERIE = "F"

Y07_Ndup = ALLTRIM(str(fat->nronfiscal,7))+"F"

Y07_dVenc = subs(dtoc(datavencim),7,4)+"-"+subs(dtoc(datavencim),4,2)+"-"+subs(dtoc(datavencim),1,2) && D

Y07_Vdup = alltrim(str(VALORDUPLI,15,2))

mTexto:=mTexto+"Y07|"+Y07_Ndup+"|"+Y07_dVenc+"|"+Y07_Vdup+"|"+mFim_Lin

ENDIF

SKIP

ENDDO

mTexto := mTexto + "Z||"+vn_obs1+" "+vn_obs2+" "+VN_OBS3+" "+VN_OBS4+" "+VN_OBS5+" "+VN_OBS6+" "+VN_OBS7+"|"+mFim_lin

TIRA_ACENTO(mTexto)

fwrite(harq1,mtexto)

*

SELE CID

DBCLOSEAREA()

*

FERASE(VP_DNFE+"ENVIANFE.RET")

FERASE(VP_DNFE+"TXT2XML.LOG")

FERASE(VP_DNFE+"VALIDXML.LOG")

*

*

FW24 + CLIP5_2

email :edutraini@uol.com.br

Link to comment
Share on other sites

Edu, lógico que ajuda..!!!!

Mas você poderia me enviar o LayOut deste arquivo para que eu possa entender o significado de cada campo, por exemplo :

N10, Y07, W02, etc....

Mas mesmo assim, por enquanto, você já esta clareando o meu caminho...!

________________________

Gilberto Herminio - Programador Pleno III - Mogi das Cruzes-SP

xHB121+Fw912 / C#/SQL2008

"Não Desenvolvo Software, crio arte Binaria...."

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...