;** NF_NFE 4.0 *****************************************************************
;*  Gera‡Æo arquivo TecnoSpeed nota fiscal eletronica                          *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 03/03/2010 por Anivel Augusto Rodrigues
;Ultima Alteracao: 26/09/2017 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes versÆo 4.0 
;Ultima Alteracao: 06/11/2017 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes formas de pagamento 
;Ultima Alteracao: 14/11/2017 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes valor fatura nos vencimentos
;Ultima Alteracao: 30/11/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes indescala,vpag para devolu‡Æo    
;Ultima Alteracao: 22/01/2018 por Kamila Gomes
;Motivo Alteracao: InclusÆo de autorizados a obter xml da nota             
;Ultima Alteracao: 09/02/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes IndIEDest com IE e Consumidor final
;Ultima Alteracao: 16/03/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes vencimentos a vista, a prazo, outros
;Ultima Alteracao: 16/03/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes tag partilha
;Ultima Alteracao: 22/03/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes YA.. formas de pagamento            
;Ultima Alteracao: 27/03/2018 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado p/ #0408# -> Rendimento e Simbologia_Impressao da aba tecidos
;Ultima Alteracao: 02/04/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes CEST
;Ultima Alteracao: 04/04/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes CEST
;Ultima Alteracao: 30/04/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Totalizar Servico
;Ultima Alteracao: 02/05/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes vFCP_W04h, indpag_Y01Ab
;Ultima Alteracao: 04/05/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes vPag_YA03
;Ultima Alteracao: 10/05/2018 por Bruno Carva                           
;Motivo Alteracao: Adicionado referencia no campo xProd_I04 p/ SYS_CODIGO_CLIENTE="0413"
;Ultima Alteracao: 17/05/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes formade pagamento e duplicata mercantil
;Ultima Alteracao: 21/05/2018 por Bruno Carvalho                        
;Motivo Alteracao: Ajustes no campo "fone_E16" p/ nÆo ser aplicado o Tira_CharNum()
;Ultima Alteracao: 22/05/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes informa‡äes adici8onais item FCP ST
;Ultima Alteracao: 24/05/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes vencimentos a prazo
;Ultima Alteracao: 04/06/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes formas de pagamento outros   
;Ultima Alteracao: 08/06/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes ignorar placa veiculo         
;Ultima Alteracao: 12/06/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes DE deposito bancario  a prazo 
;Ultima Alteracao: 13/06/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes totalizar formas de pagamento pelo codigo NFe
;Ultima Alteracao: 14/06/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes rela‡Æo de duplicatas
;Ultima Alteracao: 15/06/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes vencimentos  
;Ultima Alteracao: 18/06/2018 por Kamila Gomes                       
;Motivo Alteracao: Ajustes vari vel fpcartao           
;Ultima Alteracao: 22/06/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes vencimentos  
;Ultima Alteracao: 26/06/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes troco           
;Ultima Alteracao: 27/06/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes descontoservico  
;Ultima Alteracao: 04/07/2018 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado descricao complementar no campo xProd_I04 p/ SYS_CODIGO_CLIENTE="0376"
;Ultima Alteracao: 05/07/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes EAN13 0376  
;Ultima Alteracao: 09/07/2018 por Kamila Gomes                           
;Motivo Alteracao: Ajustes troco quanto FP for igual a Titulo de Cr‚dito    
;Ultima Alteracao: 19/07/2018 por Kamila Gomes                           
;Motivo Alteracao: Ajustes SEM GTIN 
;Ultima Alteracao: 23/07/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes endereco sem numero = S/N
;Ultima Alteracao: 24/07/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes endereco sem numero = S/N
;Ultima Alteracao: 04/07/2018 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado descricao complementar no campo xProd_I04 p/ SYS_CODIGO_CLIENTE="0418"
;Ultima Alteracao: 03/08/2018 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado descricao do item + descricao complementar no campo xProd_I04 p/ SYS_CODIGO_CLIENTE="0419"
;Ultima Alteracao: 16/08/2018 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes ao buscar o e-mail do tipo NF-e, alterando o separador ";" para "," 
;Ultima Alteracao: 03/09/2018 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes regras ndup e vdesc nos vencimentos 
;Ultima Alteracao: 05/11/2018 por Kamila Gomes                           
;Motivo Alteracao: Ajuste tempor rio para setar fuso hor rio correto
;Ultima Alteracao: 05/11/2018 por Kamila Gomes                           
;Motivo Alteracao: Ajuste tag RefCTe_BA19
;Ultima Alteracao: 12/11/2018 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado referencia no campo xProd_I04 p/ SYS_CODIGO_CLIENTE="0425"
;Ultima Alteracao: 14/12/2018 por Kamila Gomes                           
;Motivo Alteracao: Ajuste Fuso Horario
;Ultima Alteracao: 28/12/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Adicionado processos de #0427#
;Ultima Alteracao: 04/01/2019 por Kamila Gomes                           
;Motivo Alteracao: coloquei campos do grupo ICMSUFDEST como obrigat¢rios
;Ultima Alteracao: 04/01/2019 por Kamila Gomes                           
;Motivo Alteracao: Adiconado na xProd_I04 a composi‡Æo da aba tecido caso nÆo seja em branco #0390#  
;Ultima Alteracao: 13/02/2019 por Kamila Gomes                           
;Motivo Alteracao: InclusÆo da forma de pagamento 15 - Boleto Banc rio na tag tpag
;Ultima Alteracao: 21/02/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes CEST #0288#
;Ultima Alteracao: 01/04/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes tem tag vpag tipo de pagamento="O"
;Ultima Alteracao: 02/04/2019 por Kamila Gomes                           
;Motivo Alteracao: Ajustes tag vpag = 0 se tipo de pagamento="O"
;Ultima Alteracao: 09/04/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes resp.tecnico      
;Ultima Alteracao: 10/04/2019 por Kamila Gomes                           
;Motivo Alteracao: Ajustes resp.tecnico 
;Ultima Alteracao: 16/04/2019 por Kamila Gomes                           
;Motivo Alteracao: Ajustes regfaturac                        
;Ultima Alteracao: 29/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Enderecos           
;Ultima Alteracao: 29/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes vICMSSubstituto     
;Ultima Alteracao: 07/05/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes sem resp.tecnico      
;Ultima Alteracao: 07/06/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustescgc local retirada        
;Ultima Alteracao: 08/08/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes IE local de entrega/retirada
;Ultima Alteracao: 06/09/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes NFE de devolu‡Æo sem ST nÆo gerar a TAG referente
;Ultima Alteracao: 12/09/2019 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado [Modelo_Documento]="65" na proc GeraNFE() 
;Ultima Alteracao: 16/09/2019 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes ao gravar a simbologia "descrsimbologia" na proc Grava_Item() -> Quando em branco, verificar "descrsimbologia_impressao"
;Ultima Alteracao: 24/10/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes #0388# descricado do item + descricao do grupo
;Ultima Alteracao: 28/10/2019 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes #0390 #descricado do item + descricao do grupo
;Ultima Alteracao: 07/11/2019 por Bruno Carvalho                           
;Motivo Alteracao: #0390# Ajustes xProd_I04 p/ receber infAdProd_V01 ao inv‚s de descrcomposicao *[Informacoes_Adicionais] recebe composicao no Fatura  
;Ultima Alteracao: 06/12/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Tira_CharNFE(s) 166,167
;Ultima Alteracao: 29/01/2020 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado descricao do item + descricao complementar no campo xProd_I04 p/ SYS_CODIGO_CLIENTE="0444"
;Ultima Alteracao: 18/03/2020 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes p/ o campo [Marca dos Volumes], tratamento de exce‡Æo p/ #0377# pela vari‚vel MARCA_VOLUME (Etiqueta de carregamento 04A)   
;Ultima Alteracao: 28/07/2020 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes #0112 controle lote
;Ultima Alteracao: 05/08/2020 por Bruno Carvalho
;Motivo Alteracao: Movido NF_NFE40 -> BIB_VEND 
;                  Procs NFE_GravaCampo,NFE_GravarCampoMemo,NFE_PegaEndereco,NFE_Tira_CharNFE,NFE_CalcMod11,NFE_CalcChaveAcesso,NFE_MontarFormasPagtos
;Ultima Alteracao: 03/09/2020 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes retorno/autorizado
;Ultima Alteracao: 25/09/2020 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes nÆo monta justificativa em preview
;Ultima Alteracao: 26/10/2020 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes #0358 forma de pagamento           
;Ultima Alteracao: 05/11/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes #0227 Siri "SIMPLES NAC. ESRB" loja 0003 
;Ultima Alteracao: 10/11/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes IsRegimeSimplesNacional, IsRegimeSimplesNacionalESRB
;Ultima Alteracao: 17/11/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nfe autiorizada
;Ultima Alteracao: 19/11/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nome Vise Sistemas
;Ultima Alteracao: 09/02/2021 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes opera‡Æo sem frete sem tag trasnportador e veiculo
;Ultima Alteracao: 24/02/2021 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado descri‡Æo complementar para #0451#
;Ultima Alteracao: 26/03/2021 por Anivel Augusto Rodrigues             
;Motivo Alteracao: Ajustes responsavel tecnico para PR 

;*******************************************************************************
;* Grava ISSQN do Item                                                         *
;*******************************************************************************
Proc Grava_ISSQN()

NFE_GravaCampo("","","","")
NFE_GravaCampo("vBC_U02         ","$" ,"S",regfi["ISSQN_BC"         ])
NFE_GravaCampo("vAliq_U03       ","N2","S",regfi["Aliquota de ISSQN"])
NFE_GravaCampo("vISSQN_U04      ","$" ,"S",regfi["Valor do ISSQN"   ])
NFE_GravaCampo("cMunFG_U05      ","I" ,"S",regfi["ISSQN_Municipio"])
NFE_GravaCampo("cListServ_U06   ","S" ,"S",SubStr(AlinhM(StrVal(regfi["Codigo_Servico"]),4),1,2)+"."+SubStr(AlinhM(StrVal(regfi["Codigo_Servico"]),4),3,2))
NFE_GravaCampo("vDeducao_U07   ","$2","N",regfi["Valor Desconto Total"]+regfi["Valor Desconto Item"])
NFE_GravaCampo("indISS_U12      ","S" ,"S",1)
NFE_GravaCampo("nProcesso_U16   ","S" ,"S","")
NFE_GravaCampo("indIncentivo_U17","S" ,"S",2)

EndProc

;*******************************************************************************
;* Grava ICMS/ST do Item                                                       *
;*******************************************************************************
Proc Grava_ICMS_ST()
Private modBC_N13, pRedBC_N14, vBC_N15, pICMS_N16, vICMS_N17, 
        modBCST_N18, pMVAST_N19, pRedBCST_N20, vBCST_N21, pICMSST_N22, vICMSST_N23,
        vBCSTRet_N26, vICMSSTRet_N27, pCredSN_N29, vCredICMSSN_N30,
        vICMSDeson_N28a, motDesICMS_N28,
        vBCFCP_N17a, pFCP_N17b, vFCP_N17c,
        vBCFCPST_N23a, pFCPST_N23b, vFCPST_N23d,
        pST_N26a, vBCFCPSTRet_N27a, pFCPSTRet_N27b, vFCPSTRet_N27d

orig_N11        = SubStr(regfi["Tipo Tributacao"],1,1)
CST_N12         = SubStr(regfi["Tipo Tributacao"],2,2)
CSOSN_N12a      = regfi["CSOSN"]    

modBC_N13       = "3"
pRedBC_N14      = regfi["Aliquota Reduzida BCICMS"]
vBC_N15         = regfi["ICMS_BC"] 
pICMS_N16       = regfi["Aliquota de ICMS"]
vICMS_N17       = regfi["Valor do ICMS"]

modBCST_N18     = "4"
pMVAST_N19      = regfi["MVA"]
pRedBCST_N20    = regfi["ICMS_ST_Aliquota Reduzida"]
vBCST_N21       = regfi["ICMS_ST_BC"]
pICMSST_N22     = regfi["ICMS_ST_Aliquota"]
vICMSST_N23     = regfi["ICMS_ST_Valor"]

pCredSN_N29     = regfi["ICMS_CredSN_Aliquota"]
vCredICMSSN_N30 = regfi["ICMS_CredSN_Valor"]

vICMSDeson_N28a = regfi["ICMS_Valor_Desonerado"]
motDesICMS_N28  = regfi["ICMS_Motivo_Desoneracao"]

vBCFCP_N17a     = regfaturicm["FCP_BC"              ]
pFCP_N17b       = regfaturicm["FCP_Aliquota"        ]
vFCP_N17c       = regfaturicm["FCP_Valor"           ]

vBCFCPST_N23a   = regfaturicm["FCP_ST_BC"           ]
pFCPST_N23b     = regfaturicm["FCP_ST_Aliquota"     ]
vFCPST_N23d     = regfaturicm["FCP_ST_Valor"        ]

vBCSTRet_N26    = regfi["ICMS_ST_BC"]
pST_N26a        = regfaturicm["pST Aliquota Consumidor"]
vICMSSTRet_N27  = regfi["ICMS_ST_Valor"]
vBCFCPSTRet_N27a= regfaturicm["FCP_STRet_BC"        ]
pFCPSTRet_N27b  = regfaturicm["FCP_STRet_Aliquota"  ]
vFCPSTRet_N27d  = regfaturicm["FCP_STRet_Valor"     ]

Switch
  Case IsRegimeSimplesNacional(TPEMPR):
    Switch
      Case CSOSN_N12a="101":
        NFE_GravaCampo("","","","")
        NFE_GravaCampo("orig_N11       ","S","S",orig_N11)
        NFE_GravaCampo("CSOSN_N12a     ","S","S",CSOSN_N12a)
        NFE_GravaCampo("pCredSN_N29    ","N2","S",pCredSN_N29)
        NFE_GravaCampo("vCredICMSSN_N30","$" ,"S",vCredICMSSN_N30)

      Case CSOSN_N12a="102" Or CSOSN_N12a="103" Or CSOSN_N12a="300" Or CSOSN_N12a="400":
        NFE_GravaCampo("","","","")
        NFE_GravaCampo("orig_N11       ","S","S",orig_N11)
        NFE_GravaCampo("CSOSN_N12a     ","S","S",CSOSN_N12a)

      Case CSOSN_N12a="201" Or CSOSN_N12a="202" Or CSOSN_N12a="203":
        NFE_GravaCampo("","","","")
        NFE_GravaCampo("orig_N11     ","S" ,"S",orig_N11)
        NFE_GravaCampo("CSOSN_N12a   ","S" ,"S",CSOSN_N12a)
        NFE_GravaCampo("modBCST_N18  ","S" ,"S",modBCST_N18)
        NFE_GravaCampo("pMVAST_N19   ","N2","N",pMVAST_N19)
				NFE_GravaCampo("pRedBCST_N20 ","N2","N",pRedBCST_N20)
				NFE_GravaCampo("vBCST_N21    ","$" ,"S",vBCST_N21)
        NFE_GravaCampo("pICMSST_N22  ","N2","S",pICMSST_N22)
        NFE_GravaCampo("vICMSST_N23  ","$" ,"S",vICMSST_N23)
        NFE_GravaCampo("vBCFCPST_N23a","$" ,"N",vBCFCPST_N23a)
        NFE_GravaCampo("pFCPST_N23b  ","$" ,"N",pFCPST_N23b)
        NFE_GravaCampo("vFCPST_N23d  ","$" ,"N",vFCPST_N23d)

        If CSOSN_N12a="201"
           Then NFE_GravaCampo("pCredSN_N29    ","N2","S",pCredSN_N29)
                NFE_GravaCampo("vCredICMSSN_N30","$" ,"S",vCredICMSSN_N30)
        EndIf
        NFE_GravaCampo("","","","")

      Case CSOSN_N12a="500":
        NFE_GravaCampo("","","","")
        NFE_GravaCampo("orig_N11            ","S" ,"S",orig_N11)
        NFE_GravaCampo("CSOSN_N12a          ","S" ,"S",CSOSN_N12a)
        NFE_GravaCampo("vBCSTRet_N26        ","$" ,"S",vBCSTRet_N26)
        NFE_GravaCampo("pST_N26a            ","N2","S",pST_N26a)
        NFE_GravaCampo("vICMSSubstituto_N26b","N2","S",0)
        NFE_GravaCampo("vICMSSTRet_N27      ","$" ,"S",vICMSSTRet_N27)
        NFE_GravaCampo("vBCFCPSTRet_N27a    ","$" ,"N",vBCFCPSTRet_N27a)
        NFE_GravaCampo("pFCPSTRet_N27b      ","$" ,"N",pFCPSTRet_N27b)
        NFE_GravaCampo("vFCPSTRet_N27d      ","$" ,"N",vFCPSTRet_N27d)
        NFE_GravaCampo("","","","")

      Case CSOSN_N12a="900":
        NFE_GravaCampo("","","","")
        NFE_GravaCampo("orig_N11       ","S" ,"S",orig_N11)
        NFE_GravaCampo("CSOSN_N12a     ","S" ,"S",CSOSN_N12a)
        NFE_GravaCampo("modBC_N13      ","S" ,"S",modBC_N13)
        NFE_GravaCampo("vBC_N15        ","$" ,"S",vBC_N15)
        NFE_GravaCampo("pRedBC_N14     ","N2","N",pRedBC_N14)
        NFE_GravaCampo("pICMS_N16      ","N2","S",pICMS_N16)
        NFE_GravaCampo("vICMS_N17      ","$" ,"S",vICMS_N17)
        if vICMSST_N23>0
           then  
                NFE_GravaCampo("modBCST_N18    ","S" ,"S",modBCST_N18)
                NFE_GravaCampo("pMVAST_N19     ","N2","N",pMVAST_N19)
        				NFE_GravaCampo("pRedBCST_N20   ","N2","N",pRedBCST_N20)
        				NFE_GravaCampo("vBCST_N21      ","$" ,"S",vBCST_N21)
                NFE_GravaCampo("pICMSST_N22    ","N2","S",pICMSST_N22)
                NFE_GravaCampo("vICMSST_N23    ","$" ,"S",vICMSST_N23)
                NFE_GravaCampo("vBCFCPST_N23a  ","$" ,"N",vBCFCPST_N23a)
                NFE_GravaCampo("pFCPST_N23b    ","$" ,"N",pFCPST_N23b)
                NFE_GravaCampo("vFCPST_N23d    ","$" ,"N",vFCPST_N23d)
        endif
        NFE_GravaCampo("pCredSN_N29    ","N2","S",pCredSN_N29)
        NFE_GravaCampo("vCredICMSSN_N30","$" ,"S",vCredICMSSN_N30)
        NFE_GravaCampo("","","","")
    EndSwitch

  OtherWise:   ;*** NÆo ‚ SIMPLES NACIONAL
    Switch
      Case CST_N12="00":
            NFE_GravaCampo("","","","")
            NFE_GravaCampo("orig_N11    ","S","S",orig_N11)
            NFE_GravaCampo("CST_N12     ","S","S",CST_N12)
            NFE_GravaCampo("modBC_N13   ","S","S",modBC_N13)
            NFE_GravaCampo("vBC_N15     ","$" ,"S",vBC_N15)
            NFE_GravaCampo("pICMS_N16   ","N2","S",pICMS_N16)
            NFE_GravaCampo("vICMS_N17   ","$" ,"S",vICMS_N17)
            NFE_GravaCampo("pFCP_N17b   ","$" ,"N",pFCP_N17b)
            NFE_GravaCampo("vFCP_N17c   ","$" ,"N",vFCP_N17c)
            NFE_GravaCampo("","","","")
            
      Case CST_N12="10":
            NFE_GravaCampo("","","","")
            NFE_GravaCampo("orig_N11     ","S" ,"S",orig_N11)
            NFE_GravaCampo("CST_N12      ","S" ,"S",CST_N12)
            NFE_GravaCampo("modBC_N13    ","S" ,"S",modBC_N13)
            NFE_GravaCampo("vBC_N15      ","$" ,"S",vBC_N15)                     
            NFE_GravaCampo("pICMS_N16    ","N2","S",pICMS_N16)
            NFE_GravaCampo("vICMS_N17    ","$" ,"S",vICMS_N17)
            NFE_GravaCampo("vBCFCP_N17a  ","$" ,"N",vBCFCP_N17a)
            NFE_GravaCampo("pFCP_N17b    ","$" ,"N",pFCP_N17b)
            NFE_GravaCampo("vFCP_N17c    ","$" ,"N",vFCP_N17c)
            NFE_GravaCampo("modBCST_N18  ","S" ,"S",modBCST_N18)
            NFE_GravaCampo("pMVAST_N19   ","N2","N",pMVAST_N19)
						NFE_GravaCampo("pRedBCST_N20 ","N2","N",pRedBCST_N20)
						NFE_GravaCampo("vBCST_N21    ","$" ,"S",vBCST_N21)
            NFE_GravaCampo("pICMSST_N22  ","N2","S",pICMSST_N22)
            NFE_GravaCampo("vICMSST_N23  ","$" ,"S",vICMSST_N23)
            NFE_GravaCampo("vBCFCPST_N23a","$" ,"N",vBCFCPST_N23a)
            NFE_GravaCampo("pFCPST_N23b  ","$" ,"N",pFCPST_N23b)
            NFE_GravaCampo("vFCPST_N23d  ","$" ,"N",vFCPST_N23d)
            NFE_GravaCampo("","","","")
            
      Case CST_N12="20":         
            NFE_GravaCampo("","","","")
            NFE_GravaCampo("orig_N11    ","S","S",orig_N11)
            NFE_GravaCampo("CST_N12     ","S","S",CST_N12)
            NFE_GravaCampo("modBC_N13   ","S","S",modBC_N13)
            NFE_GravaCampo("pRedBC_N14  ","N2","S",pRedBC_N14)
            NFE_GravaCampo("vBC_N15     ","$" ,"S",vBC_N15)
            NFE_GravaCampo("pICMS_N16   ","N2","S",pICMS_N16)
            NFE_GravaCampo("vICMS_N17   ","$" ,"S",vICMS_N17)
            NFE_GravaCampo("vBCFCP_N17a ","$" ,"N",vBCFCP_N17a)
            NFE_GravaCampo("pFCP_N17b   ","$" ,"N",pFCP_N17b)
            NFE_GravaCampo("vFCP_N17c   ","$" ,"N",vFCP_N17c)
            If vICMSDeson_N28a>0 
               Then NFE_GravaCampo("vICMSDeson_N28a","$","S",vICMSDeson_N28a)
                    NFE_GravaCampo("motDesICMS_N28","SI","S",motDesICMS_N28) 
            EndIf
            NFE_GravaCampo("","","","")

       Case CST_N12="30":
            NFE_GravaCampo("","","","")
            NFE_GravaCampo("orig_N11     ","S" ,"S",orig_N11)
            NFE_GravaCampo("CST_N12      ","S" ,"S",CST_N12)
            NFE_GravaCampo("modBCST_N18  ","S" ,"S",modBCST_N18)
            NFE_GravaCampo("pMVAST_N19   ","N2","N",pMVAST_N19)
  					NFE_GravaCampo("pRedBCST_N20 ","N2","N",pRedBCST_N20)
  					NFE_GravaCampo("vBCST_N21    ","$" ,"S",vBCST_N21)
            NFE_GravaCampo("pICMSST_N22  ","N2","S",pICMSST_N22)
            NFE_GravaCampo("vICMSST_N23  ","$" ,"S",vICMSST_N23)
            NFE_GravaCampo("vBCFCPST_N23a","$" ,"N",vBCFCPST_N23a)
            NFE_GravaCampo("pFCPST_N23b  ","$" ,"N",pFCPST_N23b)
            NFE_GravaCampo("vFCPST_N23d  ","$" ,"N",vFCPST_N23d)
            If vICMSDeson_N28a>0 
               Then NFE_GravaCampo("vICMSDeson_N28a","$","S",vICMSDeson_N28a)
                    NFE_GravaCampo("motDesICMS_N28","SI","S",motDesICMS_N28) 
            EndIf
            NFE_GravaCampo("","","","")

      Case CST_N12="40" Or CST_N12="41" Or CST_N12="50":
            NFE_GravaCampo("","","","")
            NFE_GravaCampo("orig_N11    ","S","S",orig_N11)
            NFE_GravaCampo("CST_N12     ","S","S",CST_N12)
            If vICMSDeson_N28a>0 
               Then NFE_GravaCampo("vICMSDeson_N28a","$","S",vICMSDeson_N28a)
                    NFE_GravaCampo("motDesICMS_N28","SI","S",motDesICMS_N28) 
            EndIf
            NFE_GravaCampo("","","","")

      Case CST_N12="51":         
            NFE_GravaCampo("","","","")
            NFE_GravaCampo("orig_N11    ","S","S",orig_N11)
            NFE_GravaCampo("CST_N12     ","S","S",CST_N12)
            NFE_GravaCampo("modBC_N13   ","S","S",modBC_N13)
            NFE_GravaCampo("pRedBC_N14  ","N2","S",pRedBC_N14)
            NFE_GravaCampo("vBC_N15     ","$" ,"S",vBC_N15)
            NFE_GravaCampo("pICMS_N16   ","N2","S",pICMS_N16)
            NFE_GravaCampo("vICMS_N17   ","$" ,"S",vICMS_N17)
            NFE_GravaCampo("vBCFCP_N17a ","$" ,"N",vBCFCP_N17a)
            NFE_GravaCampo("pFCP_N17b   ","$" ,"N",pFCP_N17b)
            NFE_GravaCampo("vFCP_N17c   ","$" ,"N",vFCP_N17c)
            NFE_GravaCampo("","","","")

      Case CST_N12="60":
            NFE_GravaCampo("","","","")
            NFE_GravaCampo("orig_N11            ","S" ,"S",orig_N11)
            NFE_GravaCampo("CST_N12             ","S" ,"S",CST_N12)
            NFE_GravaCampo("vBCSTRet_N26        ","$" ,"S",vBCSTRet_N26)
            NFE_GravaCampo("pST_N26a            ","N2" ,"S",pST_N26a)
            NFE_GravaCampo("vICMSSubstituto_N26b","N2","S",0)
            NFE_GravaCampo("vICMSSTRet_N27      ","$" ,"S",vICMSSTRet_N27)
            NFE_GravaCampo("vBCFCPSTRet_N27a    ","$" ,"N",vBCFCPSTRet_N27a)
            NFE_GravaCampo("pFCPSTRet_N27b      ","$" ,"N",pFCPSTRet_N27b)
            NFE_GravaCampo("vFCPSTRet_N27d      ","$" ,"N",vFCPSTRet_N27d)
            NFE_GravaCampo("","","","")

      Case CST_N12="70":
            NFE_GravaCampo("","","","")
            NFE_GravaCampo("orig_N11     ","S" ,"S",orig_N11)
            NFE_GravaCampo("CST_N12      ","S" ,"S",CST_N12)
            NFE_GravaCampo("modBC_N13    ","S" ,"S",modBC_N13)
            NFE_GravaCampo("pRedBC_N14  ","N2","S",pRedBC_N14)
            NFE_GravaCampo("vBC_N15      ","$" ,"S",vBC_N15)                     
            NFE_GravaCampo("pICMS_N16    ","N2","S",pICMS_N16)
            NFE_GravaCampo("vICMS_N17    ","$" ,"S",vICMS_N17)
            NFE_GravaCampo("vBCFCP_N17a  ","$" ,"N",vBCFCP_N17a)
            NFE_GravaCampo("pFCP_N17b    ","$" ,"N",pFCP_N17b)
            NFE_GravaCampo("vFCP_N17c    ","$" ,"N",vFCP_N17c)
            NFE_GravaCampo("modBCST_N18  ","S" ,"S",modBCST_N18)
            NFE_GravaCampo("pMVAST_N19   ","N2","N",pMVAST_N19)
						NFE_GravaCampo("pRedBCST_N20 ","N2","N",pRedBCST_N20)
						NFE_GravaCampo("vBCST_N21    ","$" ,"S",vBCST_N21)
            NFE_GravaCampo("pICMSST_N22  ","N2","S",pICMSST_N22)
            NFE_GravaCampo("vICMSST_N23  ","$" ,"S",vICMSST_N23)
            NFE_GravaCampo("vBCFCPST_N23a","$" ,"N",vBCFCPST_N23a)
            NFE_GravaCampo("pFCPST_N23b  ","$" ,"N",pFCPST_N23b)
            NFE_GravaCampo("vFCPST_N23d  ","$" ,"N",vFCPST_N23d)
            If vICMSDeson_N28a>0 
               Then NFE_GravaCampo("vICMSDeson_N28a","$","S",vICMSDeson_N28a)
                    NFE_GravaCampo("motDesICMS_N28","SI","S",motDesICMS_N28) 
            EndIf
            NFE_GravaCampo("","","","")

      Case CST_N12="90":
            NFE_GravaCampo("","","","")
            NFE_GravaCampo("orig_N11    ","S" ,"S",orig_N11)
            NFE_GravaCampo("CST_N12     ","S" ,"S",CST_N12)
            NFE_GravaCampo("modBC_N13   ","S" ,"S",modBC_N13)
            NFE_GravaCampo("pRedBC_N14  ","N2","N",pRedBC_N14)
            NFE_GravaCampo("vBC_N15     ","$" ,"S",vBC_N15)
            NFE_GravaCampo("pICMS_N16   ","N2","S",pICMS_N16)
            NFE_GravaCampo("vICMS_N17   ","$" ,"S",vICMS_N17)
            NFE_GravaCampo("vBCFCP_N17a ","$" ,"N",vBCFCP_N17a)
            NFE_GravaCampo("pFCP_N17b   ","$" ,"N",pFCP_N17b)
            NFE_GravaCampo("vFCP_N17c   ","$" ,"N",vFCP_N17c)
            if vICMSST_N23>0
               then 
                    NFE_GravaCampo("modBCST_N18  ","S" ,"S",modBCST_N18)
                    NFE_GravaCampo("pMVAST_N19   ","N2","N",pMVAST_N19)
                    NFE_GravaCampo("pRedBCST_N20 ","N2","N",pRedBCST_N20)
                    NFE_GravaCampo("vBCST_N21    ","$" ,"S",vBCST_N21)
                    NFE_GravaCampo("pICMSST_N22  ","N2","S",pICMSST_N22)
                    NFE_GravaCampo("vICMSST_N23  ","$" ,"S",vICMSST_N23)
                    NFE_GravaCampo("vBCFCPST_N23a","$" ,"N",vBCFCPST_N23a)
                    NFE_GravaCampo("pFCPST_N23b  ","$" ,"N",pFCPST_N23b)
                    NFE_GravaCampo("vFCPST_N23d  ","$" ,"N",vFCPST_N23d)
            endif   
            If vICMSDeson_N28a>0 
               Then NFE_GravaCampo("vICMSDeson_N28a","$","S",vICMSDeson_N28a)
                    NFE_GravaCampo("motDesICMS_N28","SI","S",motDesICMS_N28) 
            EndIf
            NFE_GravaCampo("","","","")
    EndSwitch
EndSwitch

EndProc

;*******************************************************************************
;* Grava IPI                                                                   *
;*******************************************************************************
Proc Grava_IPI()
private CST_O09, vBC_O10

CST_O09  = regfi["IPI_CST"]
Switch
  Case IsBlank(CST_O09) And regfi["Tributacao de IPI"]="D" And regfaturac["Tipo Movimento Estoque"]="E" : CST_O09="00"
  Case IsBlank(CST_O09) And regfi["Tributacao de IPI"]="I" And regfaturac["Tipo Movimento Estoque"]="E" : CST_O09="02"
  Case IsBlank(CST_O09) And regfi["Tributacao de IPI"]="N" And regfaturac["Tipo Movimento Estoque"]="E" : CST_O09="03"
  Case IsBlank(CST_O09) And regfi["Tributacao de IPI"]="O" And regfaturac["Tipo Movimento Estoque"]="E" : CST_O09="49"

  Case IsBlank(CST_O09) And regfi["Tributacao de IPI"]="D" And regfaturac["Tipo Movimento Estoque"]="S" : CST_O09="50"
  Case IsBlank(CST_O09) And regfi["Tributacao de IPI"]="I" And regfaturac["Tipo Movimento Estoque"]="S" : CST_O09="52"
  Case IsBlank(CST_O09) And regfi["Tributacao de IPI"]="N" And regfaturac["Tipo Movimento Estoque"]="S" : CST_O09="53"
  Case IsBlank(CST_O09) And regfi["Tributacao de IPI"]="O" And regfaturac["Tipo Movimento Estoque"]="S" : CST_O09="99"
EndSwitch

vBC_O10  = regfi["IPI_BC"]

If CST_O09="99"
  Then If regfi["Aliquota de IPI"]<=0 And regfi["Valor do IPI"   ]<=0
          Then vBC_O10=0
       EndIf
EndIf        

NFE_GravaCampo("","","","")
NFE_GravaCampo("cEnq_O06     ","S" ,"S",regiten_com["Codigo Enq_IPI"])
NFE_GravaCampo("CST_O09      ","S" ,"S",CST_O09)
Switch 
 Case (CST_O09="00" Or CST_O09="49" Or CST_O09="50" Or CST_O09="99"): 
   NFE_GravaCampo("vBC_O10      ","$" ,"S",vBC_O10)
   NFE_GravaCampo("pIPI_O13     ","N2","S",regfi["Aliquota de IPI"])
   NFE_GravaCampo("vIPI_O14     ","$" ,"S",regfi["Valor do IPI"   ])
EndSwitch

EndProc

;*******************************************************************************
;* Grava Declaracao de Importa‡Æo por Item                                     *
;*******************************************************************************
Proc Grava_DeclaracaoII()
Private ntable

if regfaturac["Tipo Movimento Estoque"]="E" And
   SubStr(regfi["CFO"],1,1)="3"
   Then
        ntable=table()
   
        Moveto "Faturidd"
        Moveto [Numero da OF]
        Locate regfi["Numero da OF"],regfi["Item da OF"]
        While [Numero da OF]=regfi["Numero da OF"] And
              [Item da OF  ]=regfi["Item da OF"  ]  

          NFE_GravaCampo("","","","")
          NFE_GravaCampo("","","","INCLUIRPARTE=DI")
          NFE_GravaCampo("nDI_I19          ","S" ,"S",[Numero_DocImportacao   ])
          NFE_GravaCampo("dDI_I20          ","D" ,"S",[Data_Registro_DI_DSI_DA])
          NFE_GravaCampo("xLocDesemb_I21   ","S" ,"S",[Local_Desembaraco      ])
          NFE_GravaCampo("UFDesemb_I22     ","S" ,"S",[UF_Desembaraco         ])
          NFE_GravaCampo("dDesemb_I23      ","D" ,"S",[Data_Desembaraco       ])
          NFE_GravaCampo("tpViaTransp_I23a ","S" ,"S",[Tipo_ViaTransporte     ])
          NFE_GravaCampo("vAFRMM_I23b      ","$" ,"N",[Valor_AFRMM            ])
          NFE_GravaCampo("tpIntermedio_I23c","S" ,"S",[Tipo_Intermediacao     ])
          NFE_GravaCampo("CNPJ_I23d        ","SN","N",[CNPJ_AdqEncomendante   ])
          NFE_GravaCampo("UFTerceiro_I23e  ","S" ,"N",[UF_AdqEncomendante     ])
          NFE_GravaCampo("cExportador_I24  ","S" ,"S",[Codigo_Exportador      ])
          NFE_GravaCampo("","","","SALVARPARTE=DI")

          Moveto "Faturiad"
          Moveto [Numero da OF]
          Locate [Faturidd->Numero da OF],[Faturidd->Item da OF],[Faturidd->Sequencia_Doc_Importacao]
          While [Numero da OF            ]=[Faturidd->Numero da OF            ] And
                [Item da OF              ]=[Faturidd->Item da OF              ] And 
                [Sequencia_Doc_Importacao]=[Faturidd->Sequencia_Doc_Importacao] 
                
            NFE_GravaCampo("","","","")
            NFE_GravaCampo("","","","INCLUIRPARTE=ADI")
            NFE_GravaCampo("nAdicao_I26    ","I","S",[Numero_Adicao          ])
            NFE_GravaCampo("nSeqAdic_I27   ","I","S",[Sequencia_Item_NaAdicao])
            NFE_GravaCampo("cFabricante_I28","S","S",[Codigo_Fabricante      ])
            NFE_GravaCampo("vDescDI_I29    ","$","N",[Valor_Desconto_Adicao  ])
            NFE_GravaCampo("nDraw_I29A     ","I","N",[Numero_AtoConc_Drawback])
            NFE_GravaCampo("","","","SALVARPARTE=ADI")
  
            Skip
            If EOT() Then QuitLoop EndIf
          EndWhile
          Moveto "Faturidd"

          Skip
          If EOT() Then QuitLoop EndIf
        EndWhile
        
        moveto ntable
EndIf           

EndProc

;*******************************************************************************
;* Grava PIS/COFINS do Item                                                     *
;*******************************************************************************
Proc Grava_PIS_COFINS()       
Private CST_Q06, vBC_Q07, 
        CST_S06, vBC_S07

;--- PIS -----------------------------------------------------------------------
CST_Q06 =regfi["PIS_CST"]
vBC_Q07 =regfi["PIS_BC" ]
Switch
  Case IsBlank(CST_Q06): CST_Q06="99"
EndSwitch

NFE_GravaCampo("","","","")
NFE_GravaCampo("CST_Q06      ","S" ,"S",CST_Q06)
Switch 
 Case (vBC_Q07>0 Or regfi["PIS_Valor"]>0): 
   NFE_GravaCampo("vBC_Q07      ","$" ,"S",vBC_Q07)
   NFE_GravaCampo("pPIS_Q08     ","N2","S",regfi["PIS_Aliquota"])
   NFE_GravaCampo("vPIS_Q09     ","$" ,"S",regfi["PIS_Valor"])
 Case (CST_Q06="99" Or CST_Q06="71"): 
   If regfi["PIS_Aliquota"]<=0 And regfi["PIS_Valor"]<=0
      Then vBC_Q07=0
   EndIf

   NFE_GravaCampo("vBC_Q07      ","$" ,"S",vBC_Q07)
   NFE_GravaCampo("pPIS_Q08     ","N2","S",regfi["PIS_Aliquota"])
   NFE_GravaCampo("vPIS_Q09     ","$" ,"S",regfi["PIS_Valor"])
   NFE_GravaCampo("qBCProd_Q10  ","N4","N",0)
   NFE_GravaCampo("vAliqProd_Q11","$" ,"N",0)
EndSwitch

;--- COFINS --------------------------------------------------------------------
CST_S06 =regfi["COFINS_CST"]
vBC_S07 =regfi["COFINS_BC" ]
Switch
  Case IsBlank(CST_S06): CST_S06="99"
EndSwitch

NFE_GravaCampo("","","","")
NFE_GravaCampo("CST_S06      ","S" ,"S",CST_S06)
Switch 
 Case (vBC_S07>0 Or regfi["COFINS_Valor"]>0): 
   NFE_GravaCampo("vBC_S07         ","$" ,"S",vBC_S07)
   NFE_GravaCampo("pCOFINS_S08     ","N2","S",regfi["COFINS_Aliquota"])
   NFE_GravaCampo("vCOFINS_S11     ","$" ,"S",regfi["COFINS_Valor"])
 Case (CST_S06="99" Or CST_S06="71"): 
   If regfi["COFINS_Aliquota"]<=0 And regfi["COFINS_Valor"]<=0
      Then vBC_S07=0
   EndIf

   NFE_GravaCampo("vBC_S07         ","$" ,"S",vBC_S07)
   NFE_GravaCampo("pCOFINS_S08     ","N2","S",regfi["COFINS_Aliquota"])
   NFE_GravaCampo("qBCProd_S09     ","N4","N",0)
   NFE_GravaCampo("vAliqProd_S10   ","$" ,"N",0)
   NFE_GravaCampo("vCOFINS_S11     ","$" ,"S",regfi["COFINS_Valor"])
EndSwitch

Endproc

;*******************************************************************************
;* Grava Lote/Rastro por Item                                                  *
;*******************************************************************************
Proc Grava_LoteI()
Private ntable

ntable=table()

Moveto "Faturail"
Moveto [Numero da OF]
Locate regfi["Numero da OF"],regfi["Item da OF"]
While [Numero da OF]=regfi["Numero da OF"] And
      [Item da OF  ]=regfi["Item da OF"  ]  

  NFE_GravaCampo("","","","")
  NFE_GravaCampo("","","","INCLUIRPARTE=I80")
  NFE_GravaCampo("nLote_I81        ","S" ,"S",[LoteNumero             ])
  NFE_GravaCampo("qLote_I82        ","N3","S",[LoteQuantidade         ])
  NFE_GravaCampo("dFab_I83         ","D" ,"S",[LoteDataFabricacao     ])
  NFE_GravaCampo("dVal_I84         ","D" ,"S",[LoteDataValidade       ])
  NFE_GravaCampo("","","","SALVARPARTE=I80")

  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

moveto ntable

EndProc

;*******************************************************************************
;* Grava dados do Produto/Servico                                              *
;*******************************************************************************
Proc Grava_Item()
private xProd_I04, cEAN_I03,
        descrcompl, descrcomposicao, descrsimbologia, descrsimbologia_impressao, descrrendimento, codforn, referencia, 
        CEST_I05c,infAdProd_V01          

descrcompl      =regitens["Descricao Complementar"]    
codforn         =regitens["Codigo Fornecedor"] 
referencia      =regitens["Referencia"]
descrsimbologia =""
If regitens["Descricao da Simbologia"]<>""
   Then 
        descrsimbologia ="Simbol: "+regitens["Descricao da Simbologia"]    
        If regitens["Pais"]<>""
           Then descrsimbologia=descrsimbologia+" - "+regitens["Pais"]
        EndIf
EndIf

descrcomposicao           = ""
descrrendimento           = ""
descrsimbologia_impressao = ""
GetRecord "\\Sistemas\\Estoque\\Iten_Tec" regfi["Codigo do Item"] To regiten_tec 
If RetVal
   Then descrcomposicao           = regiten_tec["Composicao"]
        descrrendimento           = regiten_tec["Rendimento"]
        descrsimbologia_impressao = regiten_tec["Simbologia_Impressao"]
        
       ;Quando a SIMBOLOGIA est  sem preenchimento no cadastro de itens 
        If IsBlank(Rtrim(descrsimbologia)) And Not IsBlank(Rtrim(descrsimbologia_impressao))
           Then descrsimbologia ="Simbol: "+descrsimbologia_impressao    
                If regitens["Pais"]<>""
                   Then descrsimbologia=descrsimbologia+" - "+regitens["Pais"]
                EndIf
        EndIf         
EndIf

switch
  case regfi["Tipo do Item"]="C" : TotalDescontoServico   =TotalDescontoServico   +regfi["Valor Desconto Item"]
  otherwise                      : TotalDescontoMercadoria=TotalDescontoMercadoria+regfi["Valor Desconto Item"]
endswitch

ContItem=ContItem+1
NFE_GravaCampo("","","","")
NFE_GravaCampo("","","","INCLUIRITEM")
NFE_GravaCampo("","","","")

NFE_GravaCampo("nItem_H02   ","I" ,"S",ContItem)
NFE_GravaCampo("cProd_I02   ","S" ,"S",regfi["Codigo do Item"])

Switch
  Case regitens["Tipo Codigo_Barras"]="A-EAN13" or
       regitens["Tipo Codigo_Barras"]="B-EAN8"  or
       regitens["Tipo Codigo_Barras"]="F-EAN14" : cEAN_I03=regitens["Codigo de Barras"]

       if sys_codigo_cliente="0376"
          then cEAN_I03="SEM GTIN"
       endif   

  OtherWise                                     : 
   cEAN_I03="SEM GTIN"

EndSwitch
NFE_GravaCampo("cEAN_I03    ","S" ,"S",cEAN_I03)

xProd_I04=regfi["Descricao do Item"]
Switch
  Case SYS_CODIGO_CLIENTE="0396"   : ;Composi‡Æo na aba [TECIDOS] do Cadastro de Itens
       xProd_I04=regfi["Descricao do Item"]
       If Not IsBlank(descrcomposicao)
          Then xProd_I04=xProd_I04+" - "+descrcomposicao
       EndIf   

  Case SYS_CODIGO_CLIENTE="0408"   : ;Composi‡Æo na aba [TECIDOS] do Cadastro de Itens
       xProd_I04=regfi["Descricao do Item"]+" - "+descrcompl 
       If Not IsBlank(descrrendimento)
          Then xProd_I04=xProd_I04+" - "+descrrendimento
       EndIf
       
       If Not IsBlank(descrsimbologia_impressao)
          Then xProd_I04=xProd_I04+" - "+descrsimbologia_impressao
       EndIf       
       
  Case SYS_CODIGO_CLIENTE="0228"  Or                                                   
       SYS_CODIGO_CLIENTE="0175"  Or 
       SYS_CODIGO_CLIENTE="0051"  Or
       SYS_CODIGO_CLIENTE="0110"  Or 
       SYS_CODIGO_CLIENTE="0270"  Or
       SYS_CODIGO_CLIENTE="0243"  Or 
       SYS_CODIGO_CLIENTE="0359"  Or
       SYS_CODIGO_CLIENTE="0389"  Or
       SYS_CODIGO_CLIENTE="0352"  Or
       SYS_CODIGO_CLIENTE="0404"  Or
       SYS_CODIGO_CLIENTE="0419"  Or  
       SYS_CODIGO_CLIENTE="0444"   :
       xProd_I04=regfi["Descricao do Item"]+" - "+descrcompl 

  Case SYS_CODIGO_CLIENTE="0216"  Or
       SYS_CODIGO_CLIENTE="0281"  Or
       SYS_CODIGO_CLIENTE="0286"  Or
       SYS_CODIGO_CLIENTE="0293"  Or
       SYS_CODIGO_CLIENTE="0239"  Or
       SYS_CODIGO_CLIENTE="0296"  Or
       SYS_CODIGO_CLIENTE="0316"  Or
       SYS_CODIGO_CLIENTE="0334"  Or 
       SYS_CODIGO_CLIENTE="0343"  Or
       SYS_CODIGO_CLIENTE="0344"  Or
       SYS_CODIGO_CLIENTE="0318"  Or
       SYS_CODIGO_CLIENTE="0370"  Or
       SYS_CODIGO_CLIENTE="0373"  Or
       SYS_CODIGO_CLIENTE="0374"  Or   
       SYS_CODIGO_CLIENTE="0376"  Or
       SYS_CODIGO_CLIENTE="0380"  Or
       SYS_CODIGO_CLIENTE="0381"  Or
       SYS_CODIGO_CLIENTE="0382"  Or
       SYS_CODIGO_CLIENTE="0388"  Or
       SYS_CODIGO_CLIENTE="0427"  Or
       SYS_CODIGO_CLIENTE="0390"  Or
       SYS_CODIGO_CLIENTE="0397"  Or
       SYS_CODIGO_CLIENTE="0413"  Or
       SYS_CODIGO_CLIENTE="0418"  Or
       SYS_CODIGO_CLIENTE="0425"  Or
       SYS_CODIGO_CLIENTE="0451"   :
       If Not IsBlank(descrcompl)
          Then xProd_I04 = descrcompl
       EndIf  

       Switch                                 
         Case SYS_CODIGO_CLIENTE="0388" :
              xProd_I04 = xProd_I04 + ", " +regitens["Descricao do Grupo"]
              If descrsimbologia<>""  
                 Then xProd_I04 = xProd_I04 + " - " +descrsimbologia
              EndIf

         Case SYS_CODIGO_CLIENTE="0427" Or
              SYS_CODIGO_CLIENTE="XXX390"  : If descrsimbologia<>""  
                                                Then xProd_I04 = xProd_I04 + " - " +descrsimbologia
                                             EndIf

         Case SYS_CODIGO_CLIENTE="0390"  : infAdProd_V01=regfi["Informacoes_Adicionais"]
                                           Switch
                                             Case IsBlank(infAdProd_V01) And Not IsBlank(descrcomposicao) :  
                                                  xProd_I04  = descrcomposicao
                                             Case Not IsBlank(infAdProd_V01)                              :
                                                  xProd_I04  = infAdProd_V01
                                                  regfi["Informacoes_Adicionais"]="" 
                                           EndSwitch
                                           If Not Isblank(regitens["Descricao do Grupo"]) 
                                              Then xProd_I04 = xProd_I04 + ", " +regitens["Descricao do Grupo"]
                                           EndIf                                                    

         Case SYS_CODIGO_CLIENTE="0296"  : xProd_I04 = xProd_I04 + " - " + codforn

         Case SYS_CODIGO_CLIENTE="0374" Or
              SYS_CODIGO_CLIENTE="0413"  : xProd_I04 = xProd_I04 + " - " + referencia

         Case SYS_CODIGO_CLIENTE="0380" Or
              SYS_CODIGO_CLIENTE="0381" Or
              SYS_CODIGO_CLIENTE="0425"  : xProd_I04 = xProd_I04 + " - " + "REF: " + referencia

       EndSwitch
EndSwitch

NFE_GravaCampo("xProd_I04     ","S" ,"S",xProd_I04)
NFE_GravaCampo("NCM_I05       ","S" ,"N",regfi["NCM"])
CEST_I05c=rtrim(regiten_com["CEST"])
if isblank(CEST_I05c)
   then CEST_I05c="0000000"
endif   
NFE_GravaCampo("CEST_I05c     ","S" ,"S",CEST_I05c)

If regfaturac["Tipo Movimento Estoque"]="S" and
   search("DEVOL",regfaturac["Descricao da Destinacao"])>0
   then
        NFE_GravaCampo("","","","")
   else
        if regitens["indEscala"]="N"
         then 
              NFE_GravaCampo("indEscala_I05d","S" ,"S",regitens["indEscala"])
              NFE_GravaCampo("CNPJFab_I05e  ","SN","S",regitens["CNPJFab"  ])
         else 
              NFE_GravaCampo("indEscala_I05d","S" ,"S","S")
              NFE_GravaCampo("CNPJFab_I05e  ","S" ,"S","")
        endif
        NFE_GravaCampo("cBenef_I05f   ","S" ,"S",regitens["cBenef"   ])
endif

NFE_GravaCampo("EXTIPI_I06    ","S" ,"N",regiten_com["EX_TIPI"])
NFE_GravaCampo("CFOP_I08      ","S" ,"S",regfi["CFO"])
NFE_GravaCampo("uCom_I09      ","S" ,"S",regfi["Unidade Fiscal"])

If regfaturac["Descricao da Destinacao"]="COMPLEMENTO IPI SBC"   Or
   regfaturac["Descricao da Destinacao"]="COMPLEMENTO IPI CBC"   Or
   regfaturac["Descricao da Destinacao"]="COMPLEMENTO ST"        Or
   regfaturac["Descricao da Destinacao"]="COMPLEMENTO ICMS SBC"  Or
   regfaturac["Descricao da Destinacao"]="COMPLEMENTO ICMS CBC"
   Then
        NFE_GravaCampo("qCom_I10      ","N4","S",0)
        NFE_GravaCampo("vUnCom_I10a   ","$6","S",0)
        NFE_GravaCampo("vProd_I11     ","$" ,"S",0)
        NFE_GravaCampo("cEANTrib_I12  ","S" ,"S",cEAN_I03)
        NFE_GravaCampo("uTrib_I13     ","S" ,"S",regfi["Unidade Fiscal"])
        NFE_GravaCampo("qTrib_I14     ","N4","S",0)
        NFE_GravaCampo("vUnTrib_I14a  ","$6","S",0)
   else
        NFE_GravaCampo("qCom_I10      ","N4","S",regfi["Quantidade"     ])
        NFE_GravaCampo("vUnCom_I10a   ","$6","S",regfi["Preco Unitario" ])
        NFE_GravaCampo("vProd_I11     ","$" ,"S",regfi["Preco Total"    ]+regfi["Valor Desconto Item"]) ; somando desconto do item, nfe informa valor bruto e depois descontos
        NFE_GravaCampo("cEANTrib_I12  ","S" ,"S",cEAN_I03)
        NFE_GravaCampo("uTrib_I13     ","S" ,"S",regfi["Unidade Fiscal" ])
        NFE_GravaCampo("qTrib_I14     ","N4","S",regfi["Quantidade"     ])
        NFE_GravaCampo("vUnTrib_I14a  ","$6","S",regfi["Preco Unitario" ])
EndIf  

If regfi["Tipo do Item"]<>"C"   ; Item diferente de Servi‡o
   Then NFE_GravaCampo("vFrete_I15  ","$2","N",regfi["Valor Frete Total"  ])
        NFE_GravaCampo("vSeg_I16    ","$2","N",regfi["Valor Seguro Total" ])
        NFE_GravaCampo("vOutro_I17a" ,"$2","N",regfi["Valor OutDesp Total"])
EndIf   
NFE_GravaCampo("vDesc_I17   ","$2","N",regfi["Valor Desconto Total"]+regfi["Valor Desconto Item"])

NFE_GravaCampo("indTot_I17b   ","I","S",1)

;--- Declara‡Æo de Importa‡Æo --------------------------------------------------
Grava_DeclaracaoII()

;--- Lote/Rastreamento ---------------------------------------------------------
if sys_codigo_cliente="0112"
   then Grava_LoteI()
endif

;--- Detalhamento Espec¡fico de Combust¡veis -----------------------------------
CFOP_ANP = regfi["CFO"]
If CFOP_ANP="1651" Or CFOP_ANP="3651" Or CFOP_ANP="6651" Or 
   CFOP_ANP="1652" Or CFOP_ANP="3652" Or CFOP_ANP="6652" Or
   CFOP_ANP="1653" Or CFOP_ANP="3653" Or CFOP_ANP="6653" Or
   CFOP_ANP="1658" Or CFOP_ANP="5651" Or CFOP_ANP="6654" Or
   CFOP_ANP="1659" Or CFOP_ANP="5652" Or CFOP_ANP="6655" Or
   CFOP_ANP="1660" Or CFOP_ANP="5653" Or CFOP_ANP="6656" Or
   CFOP_ANP="1661" Or CFOP_ANP="5654" Or CFOP_ANP="6657" Or
   CFOP_ANP="1662" Or CFOP_ANP="5655" Or CFOP_ANP="6658" Or
   CFOP_ANP="1663" Or CFOP_ANP="5656" Or CFOP_ANP="6659" Or
   CFOP_ANP="1664" Or CFOP_ANP="5657" Or CFOP_ANP="6660" Or      
   CFOP_ANP="2651" Or CFOP_ANP="5658" Or CFOP_ANP="6661" Or
   CFOP_ANP="2652" Or CFOP_ANP="5659" Or CFOP_ANP="6662" Or
   CFOP_ANP="2653" Or CFOP_ANP="5660" Or CFOP_ANP="6663" Or
   CFOP_ANP="2658" Or CFOP_ANP="5661" Or CFOP_ANP="6664" Or
   CFOP_ANP="2659" Or CFOP_ANP="5662" Or CFOP_ANP="6665" Or
   CFOP_ANP="2660" Or CFOP_ANP="5663" Or CFOP_ANP="6666" Or  
   CFOP_ANP="2661" Or CFOP_ANP="5664" Or CFOP_ANP="6667" Or
   CFOP_ANP="2662" Or CFOP_ANP="5665" Or CFOP_ANP="7651" Or
   CFOP_ANP="2663" Or CFOP_ANP="5666" Or CFOP_ANP="7654" Or
   CFOP_ANP="2664" Or CFOP_ANP="5667" Or CFOP_ANP="7667" 
   Then         
        NFE_GravaCampo("cProdANP_LA02  ","S","S",regiten_com["ANP_Codigo_Combustivel"])     
        NFE_GravaCampo("UFCons_LA06    ","S","N",regiten_com["ANP_UF_Consumo"])  
EndIf   

;--- ICMS/ST/IPI ---------------------------------------------------------------
If regfi["Tipo do Item"]<>"C"   ; Item diferente de Servi‡o
   Then Grava_ICMS_ST()
        Grava_IPI()
EndIf

;--- IMPORTA€¶O ----------------------------------------------------------------
If SubStr(regfi["CFO"],1,1)="3"
   Then 
        NFE_GravaCampo("","","","")
        NFE_GravaCampo("vBC_P02     ","$" ,"S",regfi["II_BC"])
        NFE_GravaCampo("vDespAdu_P03","$" ,"S",regfi["II_Valor DespAduan"])
        NFE_GravaCampo("vII_P04     ","$" ,"S",regfi["II_Valor Imposto"])
        NFE_GravaCampo("vIOF_P05    ","$" ,"S",regfi["II_Valor IOF"])
EndIf

;--- PIS/COFINS ----------------------------------------------------------------
Grava_PIS_COFINS()

;--- ISSQN ---------------------------------------------------------------------
If regfi["Tipo do Item"]="C"   ; Item de Servi‡o
   Then Grava_ISSQN()
EndIf

;--- Partilha ------------------------------------------------------------------
if regfaturicm["ICMS_UFDest_BC"]>0
   then 
        NFE_GravaCampo("","","","")
        NFE_GravaCampo("vBCUFDest_NA03      ","$" ,"S",regfaturicm["ICMS_UFDest_BC"      ])
        NFE_GravaCampo("vBCFCPUFDest_NA04   ","N2","S",regfaturicm["FCP_UFDest_BC"       ])
        NFE_GravaCampo("pFCPUFDest_NA05     ","N2","S",regfaturicm["FCP_UFDest_Aliquota" ])
        NFE_GravaCampo("pICMSUFDest_NA07    ","N2","S",regfaturicm["ICMS_UFDest_Aliquota"]) 
        NFE_GravaCampo("pICMSInter_NA09     ","N2","S",regfaturicm["ICMS_Inter_Aliquota" ])
        NFE_GravaCampo("pICMSInterPart_NA11 ","N2","S",regfaturicm["ICMS_InterPart_Aliquota" ])
        NFE_GravaCampo("vFCPUFDest_NA13     ","$" ,"S",regfaturicm["FCP_UFDest_Valor"    ])
        NFE_GravaCampo("vICMSUFDest_NA15    ","$" ,"S",regfaturicm["ICMS_UFDest_Valor"   ])
        NFE_GravaCampo("vICMSUFRemet_NA17   ","$" ,"S",regfaturicm["ICMS_UFRemet_Valor"  ])
endif
;-------------------------------------------------------------------------------

NFE_GravaCampo("xPed_I60       ","S","N",regfi["Numero_Pedido_Compra"])
NFE_GravaCampo("nItemPed_I61   ","S","N",regfi["Item_Pedido_Compra"  ])

If regiten_com["FCI"]<>""
   Then NFE_GravaCampo("","","","")
        NFE_GravaCampo("nFCI_I70    ","S" ,"N",regiten_com["FCI"])
EndIf

NFE_GravaCampo("pDevol_UA02    ","N2","N",regfi["IPI Devolvido_Porcentagem"])
NFE_GravaCampo("vIPIDevol_UA04 ","$" ,"N",regfi["IPI Devolvido_Valor"      ])

infAdProd_V01=regfi["Informacoes_Adicionais"]   

switch
  Case SYS_CODIGO_CLIENTE="0288"   : ;CEST
    if not isblank(infAdProd_V01)
       then infAdProd_V01=infAdProd_V01+", "
    endif
    infAdProd_V01=infAdProd_V01+ "REF: "+referencia+" CEST "+CEST_I05c 
   
Endswitch

if regfaturicm["FCP_ST_BC"]>0
   then infAdProd_V01=infAdProd_V01+" ** BC FCP/ST: "+ltrim(Format("W12.2,EIC",regfaturicm["FCP_ST_BC"]))+
                                    ", % FCP/ST: "+ltrim(Format("W06.2,EIC",regfaturicm["FCP_ST_Aliquota"]))+
                                    ", Vr FCP/ST: "+ltrim(Format("W12.2,EIC",regfaturicm["FCP_ST_Valor"]))
endif                              
NFE_GravarCampoMemo("infAdProd_V01",infAdProd_V01,100)

NFE_GravaCampo("vTotTrib_M02   ","$","N",regfi["Valor TotTributos"])

NFE_GravaCampo("","","","")
NFE_GravaCampo("","","","SALVARITEM")

Return True
EndProc

;*******************************************************************************
;* Gera Arquivo NF-e TecnoSpeed                                                *
;*******************************************************************************
Proc GeraNFE()
Private i, vrfatura

;--- Inicio --------------------------------------------------------------------
If PARAM_VISUALIZAR_DANFE Then NFE_GravaCampo("PREVERDANFE","S","S","1")  EndIf
NFE_GravaCampo("","","","FORMATO=TX2")
NFE_GravaCampo("NUMLOTE","S","S","0")
NFE_GravaCampo("","","","")

;--- Identificacao -------------------------------------------------------------

NFE_GravaCampo("","","","INCLUIR")
NFE_GravaCampo("versao_A02 ","S" ,"S",versao_A02)
NFE_GravaCampo("cUF_B02    ","I" ,"S",regcidadesemitente["Codigo_UF"])
NFE_GravaCampo("cNF_B03    ","SI","S",cNF_B03)

NFE_GravaCampo("natOp_B04   ","S"  ,"S",regdestin["Descricao da Destinacao"])
NFE_GravaCampo("mod_B06     ","S"  ,"S",mod_B06)
NFE_GravaCampo("serie_B07   ","S"  ,"S",serie_B07)
NFE_GravaCampo("nNF_B08     ","SI" ,"S",nNF_B08)
NFE_GravaCampo("dhEmi_B09   ","DH" ,"S",regfaturac["Data de Emissao"])
NFE_GravaCampo("dhSaiEnt_B10","DH" ,"S",regfaturac["Data de Saida"  ])

Switch
  Case regfaturac["Tipo Movimento Estoque"]="E" : NFE_GravaCampo("tpNF_B11   ","I" ,"S",0)
  Case regfaturac["Tipo Movimento Estoque"]="S" : NFE_GravaCampo("tpNF_B11   ","I" ,"S",1)
EndSwitch

Switch
    Case substr(regfaturac["CFO"],1,1) = "1" or
         substr(regfaturac["CFO"],1,1) = "5":       
         idDest_B11a = 1
         
    Case substr(regfaturac["CFO"],1,1) = "2" or
         substr(regfaturac["CFO"],1,1) = "6":
         idDest_B11a = 2

    Case substr(regfaturac["CFO"],1,1) = "3" or
         substr(regfaturac["CFO"],1,1) = "7" or
         regfaturac["UF"] = "EX"              :
         idDest_B11a = 3
                
EndSwitch    
NFE_GravaCampo("idDest_B11a  ","I" ,"S",idDest_B11a)
NFE_GravaCampo("cMunFG_B12 ","I" ,"S",regcidadesemitente["Codigo_Cidade"])

;--- NF Referenciadas ----------------------------------------------------------
Moveto "FaturaR"
Moveto [Numero da OF]
Locate regfaturac["Numero da OF"]
While [Numero da OF]=regfaturac["Numero da OF"] And
      [Sequencia   ]>0

  NFE_GravaCampo("","","","")

  Switch
    Case [Modelo_Documento]="55" Or [Modelo_Documento]="65" :
      NFE_GravaCampo("","","","INCLUIRPARTE=NREF")
      NFE_GravaCampo("refNFe_BA02 ","S" ,"S",[Chave_Acesso])
      NFE_GravaCampo("","","","SALVARPARTE=NREF")

    Case [Modelo_Documento]="01" or [Modelo_Documento]="02" :
      GetRecord "\\Sistemas\\Vendas\\Estados" [FaturaR->UF] To regestados    
      If not RetVal
         Then Mensagem("(Docto referenciado) Erro cadastro estados: "+[FaturaR->UF]+" [Estados] !")
              Return False
      Endif   
      
      NFE_GravaCampo("","","","INCLUIRPARTE=NREF")
      NFE_GravaCampo("cUF_BA04    ","S" ,"S",regestados["Codigo_UF"])
      NFE_GravaCampo("AAMM_BA05   ","S" ,"S",SubStr(AlinhM(StrVal( Year([Data_Documento])),4),3,2)+AlinhM(StrVal(Month([Data_Documento])),2))
      NFE_GravaCampo("CNPJ_BA06   ","SN","S",[CNPJ_CPF        ])
      NFE_GravaCampo("mod_BA07    ","S" ,"S",[Modelo_Documento])
      NFE_GravaCampo("serie_BA08  ","S" ,"S",[Serie_Documento ])
      NFE_GravaCampo("nNF_BA09    ","SI","S",[Numero_Documento])
      NFE_GravaCampo("","","","SALVARPARTE=NREF")

    Case [Modelo_Documento]="57":
      NFE_GravaCampo("","","","INCLUIRPARTE=NREF")
      NFE_GravaCampo("RefCTe_BA19","S" ,"S",[Chave_Acesso])
      NFE_GravaCampo("","","","SALVARPARTE=NREF")

    Case [Modelo_Documento]="04":
      GetRecord "\\Sistemas\\Vendas\\Estados" [FaturaR->UF] To regestados    
      If not RetVal
         Then Mensagem("(Docto referenciado) Erro cadastro estados: "+[FaturaR->UF]+" [Estados] !")
              Return False
      Endif   
      
      NFE_GravaCampo("","","","INCLUIRPARTE=NREF")
      NFE_GravaCampo("cUF_BA11   ","S" ,"S",regestados["Codigo_UF"])
      NFE_GravaCampo("AAMM_BA12  ","S" ,"S",SubStr(AlinhM(StrVal( Year([Data_Documento])),4),3,2)+AlinhM(StrVal(Month([Data_Documento])),2))
      Switch
        Case Len([CNPJ_CPF])=18:
          NFE_GravaCampo("CNPJ_BA13  ","SN","S",[CNPJ_CPF])
          NFE_GravaCampo("CPF_BA14   ","SN","S","")
          NFE_GravaCampo("IE_BA15    ","SN","S",[IE      ])
        OtherWise:
          NFE_GravaCampo("CNPJ_BA13  ","SN","S","")
          NFE_GravaCampo("CPF_BA14   ","SN","S",[CNPJ_CPF])
          NFE_GravaCampo("IE_BA15    ","SN","S","")
      EndSwitch
      NFE_GravaCampo("mod_BA16   ","S" ,"S",[Modelo_Documento])
      NFE_GravaCampo("serie_BA17 ","S" ,"S",[Serie_Documento ])
      NFE_GravaCampo("nNF_BA18   ","SI","S",[Numero_Documento])
      NFE_GravaCampo("","","","SALVARPARTE=NREF")

    Case [Modelo_Documento]="2B" Or
         [Modelo_Documento]="2C" Or
         [Modelo_Documento]="2D" : 
      NFE_GravaCampo("","","","INCLUIRPARTE=NREF")
      NFE_GravaCampo("mod_BA21    ","S" ,"S",[Modelo_Documento])
      NFE_GravaCampo("nECF_BA22   ","SI","S",[Numero_ECF      ])
      NFE_GravaCampo("nCOO_BA23   ","SI","S",[Numero_Documento])
      NFE_GravaCampo("","","","SALVARPARTE=NREF")

  EndSwitch

  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

;-------------------------------------------------------------------------------

NFE_GravaCampo("","","","")
If regfaturac["Valor Substituicao ICMS"]>0
   Then NFE_GravaCampo("tpImp_B21  ","S" ,"S","2") ; DANFE Paisagem
   Else NFE_GravaCampo("tpImp_B21  ","S" ,"S","1") ; DANFE Retrato
EndIf
NFE_GravaCampo("tpEmis_B22 ","S" ,"S",tpEmis_B22)
NFE_GravaCampo("cDV_B23    ","I" ,"S",cDV_B23)
NFE_GravaCampo("tpAmb_B24  ","S" ,"S",AmbienteNFe)
NFE_GravaCampo("finNFe_B25 ","S" ,"S",regdestin["finNFe" ])
If (regfaturac["Consumidor Final"]="S") 
   Then NFE_GravaCampo("indFinal_B25a","I" ,"S",1)
   Else NFE_GravaCampo("indFinal_B25a","I" ,"S",0)
EndIf
NFE_GravaCampo("indPres_B25b","S" ,"S",regfaturac["IndPres"])
NFE_GravaCampo("procEmi_B26","S" ,"S","0")
NFE_GravaCampo("verProc_B27","S" ,"S",verProc_B27)

Switch
  Case ModoNFe<>"Normal" and not PARAM_VISUALIZAR_DANFE:

    s=AlinhM(StrVal(Year(VSDGDTINI)),4)+"-"+AlinhM(StrVal(Month(VSDGDTINI)),2)+"-"+AlinhM(StrVal(Day(VSDGDTINI)),2)
    s=s+"T"+VSDGHRINI+":00"+Fuso_Horario 

    NFE_GravaCampo("dhCont_B28","S" ,"S",s)
    NFE_GravaCampo("xJust_B29" ,"S" ,"S",VSDGJUST)

    Release Vars VSDGDTINI, VSDGHRINI, VSDGJUST, s

EndSwitch

;--- Emitente ------------------------------------------------------------------
NFE_GravaCampo("","","","")
NFE_GravaCampo("CNPJ_C02   ","SN","S",regemitente["CGC"])
NFE_GravaCampo("xNome_C03  ","S" ,"S",regemitente["Razao Social"])
NFE_GravaCampo("xFant_C04  ","S" ,"S",regemitente["Nome Fantasia EmitDest"])

NFE_PegaEndereco(regemitente["Endereco"])
NFE_GravaCampo("xLgr_C06   ","S" ,"S",End_Logradouro)
NFE_GravaCampo("nro_C07    ","S" ,"S",End_Numero)
NFE_GravaCampo("xCpl_C08   ","S" ,"S",End_Complemento)

NFE_GravaCampo("xBairro_C09","S" ,"S",regemitente["Bairro"])
NFE_GravaCampo("cMun_C10   ","I" ,"S",regcidadesemitente["Codigo_Cidade"])
NFE_GravaCampo("xMun_C11   ","S" ,"S",regemitente["Cidade"]) 
NFE_GravaCampo("UF_C12     ","S" ,"S",regemitente["UF"])
NFE_GravaCampo("CEP_C13    ","SN","S",regemitente["CEP"])
NFE_GravaCampo("cPais_C14  ","I" ,"S",regcidadesemitente["Codigo_Pais"  ])
NFE_GravaCampo("xPais_C15  ","S" ,"S",regcidadesemitente["Pais"         ])
NFE_GravaCampo("fone_C16   ","SN","S",regemitente["Telefone"])
NFE_GravaCampo("IE_C17     ","SN","S",regemitente["IE"])

;--- IE ou IE ST ---------------------------------------------------------------
IEST_C18=regemitente["IE_ST"]

If regfaturac["UF"                                     ]<>"MG" And 
   Search("VENDA",regfaturac["Descricao da Destinacao"]) >0    And
   regfaturac["Valor Substituicao ICMS"                ] >0    And
   regfaturac["Tipo Movimento Estoque"                 ] ="S"
   Then 
        getrecord "\\Sistemas\\Cadastro\\Empriest" regfaturac["Codigo da Empresa"],regfaturac["UF"] to regEmpriest
        if retval                                                   
           then IEST_C18=regEmpriest["IE_ST"]
        endif  
EndIf
NFE_GravaCampo("IEST_C18   ","SN","S",IEST_C18)
;--------------------------------------------------------------------------------

If regfaturac["Valor Servico"]>0
   Then 
        If IsBlank(regemitente["IM"]) Or IsBlank(regemitente["CNAE"])
           Then Mensagem("NF-e com servi‡o, IM e CNAE nÆo cadastrado empresa: "+regfaturac["Codigo da Empresa"])
                Return False
        EndIf    

        NFE_GravaCampo("IM_C19     ","SN","S",regemitente["IM"  ])
        NFE_GravaCampo("CNAE_C20   ","SN","S",regemitente["CNAE"])
EndIf        

Switch
  Case IsRegimeSimplesNacional(TPEMPR)     : NFE_GravaCampo("CRT_C21    ","I","S",1)
  Case IsRegimeSimplesNacionalESRB(TPEMPR) : NFE_GravaCampo("CRT_C21    ","I","S",2)
  OtherWise                                : NFE_GravaCampo("CRT_C21    ","I","S",3)
EndSwitch

;--- Destinatario --------------------------------------------------------------
xMun_E11          =regfaturac["Cidade" ]
UF_E12            =regfaturac["UF"     ]
CEP_E13           =regfaturac["CEP"    ]
IM_E18a           =regdestinatario["IM"]
idEstrangeiro_E03a=regdestinatario["RG"]

EMAILDESTINATARIO =regdestinatario["Endereco_Eletronico"]
GetRecord "\\Sistemas\\Cadastro\\Destmail" regfaturac["Codigo"],"N" To regdestmail
If RetVal
   then if not isblank(regdestmail["Email"])
           then EMAILDESTINATARIO=regdestmail["Email"]
                ;Alterando o separador ";" para ","
                PosI=Search(";",EMAILDESTINATARIO)
                If PosI>0
                   Then While PosI>0
                          EMAILDESTINATARIO = SubStr(EMAILDESTINATARIO,1,PosI-1)+","+SubStr(EMAILDESTINATARIO,PosI+1,Len(EMAILDESTINATARIO))
                          PosI=Search(";",EMAILDESTINATARIO)
                          If PosI = 0 Then QuitLoop EndIf
                        EndWhile 
                EndIf
                Release Vars PosI
        endif
endif           

;--- acrescentar email da empresa por SYS_CODIGO_CLIENTE -----------------------
If SYS_CODIGO_CLIENTE="0342"
   Then EMAILDESTINATARIO=EMAILDESTINATARIO+", "+regemitente["Endereco_Eletronico"]
EndIf

GetRecord "\\Sistemas\\Cadastro\\Cidades" XMun_E11,UF_E12 To regcidadesDestinatario
If not RetVal
   Then Mensagem("Erro cadastro cidades: "+XMun_E11+"/"+UF_E12+" [Cidades] !")
        Return False
Endif   
cMun_E10   =regcidadesDestinatario["Codigo_Cidade"]

NFE_GravaCampo("","","","")

If regfaturac["Tipo Pessoa"]="JURIDICA"
   Then CNPJ_E02=regfaturac["CGC"]
        CPF_E03 ="" 
   Else CNPJ_E02="null"
        CPF_E03 =regfaturac["CGC"]
EndIf

IE_E17     =regfaturac["IE"]
Switch
  Case  IE_E17 = "NAOCONTRIBUINTE"                  : IndIEDest = 9
  
  Case  IE_E17 <>"ISENTO" and 
        regfaturac["Consumidor Final"]="S"          : IndIEDest = 9

  Case (regfaturac["Tipo Pessoa"] = "JURIDICA" Or
        regfaturac["Tipo Pessoa"] = "FISICA" ) And 
        IE_E17 = "ISENTO"                      And 
        UF_E12 <> "EX"                              : IndIEDest = 2
  Case (regfaturac["Tipo Pessoa"] = "JURIDICA" Or
        regfaturac["Tipo Pessoa"] = "FISICA" ) And 
       (Not IsBlank(IE_E17))                   And 
       IE_E17 <> "ISENTO"                      And
       UF_E12 <> "EX"                               : IndIEDest = 1
       
  OtherWise                                         : IndIEDest = 9
EndSwitch 

If UF_E12="EX" 
   Then
        CNPJ_E02=""
        If regfaturac["Tipo Movimento Estoque"]="S"
           Then CPF_E03 =""
        EndIf
        If regfaturac["Tipo Movimento Estoque"]="E"
           Then CPF_E03 ="00000000000"
        EndIf
        IE_E17  =""
    
        XMun_E11="EXTERIOR"
        cMun_E10=9999999
        CEP_E13 ="00.000-000"
    
EndIf   


If UF_E12<>"EX" 
   Then 
        NFE_GravaCampo("CNPJ_E02          ","SN","S",CNPJ_E02)
        NFE_GravaCampo("CPF_E03           ","SN","S",CPF_E03)
   else
        NFE_GravaCampo("idEstrangeiro_E03a","SN","N",idEstrangeiro_E03a)
endif   

If AmbienteNFe="2" ;Homologa‡Æo
   Then NFE_GravaCampo("xNome_E04         ","S" ,"S","NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL")
   else NFE_GravaCampo("xNome_E04         ","S" ,"S",Completa(regfaturac["Razao Social"],40," "))
EndIf

NFE_PegaEndereco(regfaturac["Endereco"])
NFE_GravaCampo("xLgr_E06          ","S" ,"S",End_Logradouro)
NFE_GravaCampo("nro_E07           ","S" ,"S",End_Numero)
NFE_GravaCampo("xCpl_E08          ","S" ,"S",End_Complemento)

NFE_GravaCampo("xBairro_E09       ","S" ,"S",regfaturac["Bairro"])
NFE_GravaCampo("cMun_E10          ","I" ,"S",cMun_E10)
NFE_GravaCampo("xMun_E11          ","S" ,"S",xMun_E11)
NFE_GravaCampo("UF_E12            ","S" ,"S",UF_E12)
NFE_GravaCampo("CEP_E13           ","SN","S",CEP_E13)
NFE_GravaCampo("cPais_E14         ","S" ,"S",regcidadesDestinatario["Codigo_Pais"  ])
NFE_GravaCampo("xPais_E15         ","S" ,"S",regcidadesDestinatario["Pais"         ])
NFE_GravaCampo("fone_E16          ","SN","S",regfaturac["Telefone"])
NFE_GravaCampo("indIEDest_E16a    ","SN","S",IndIEDest)
If IndIEDest = 1 
   Then NFE_GravaCampo("IE_E17    ","SN","S",IE_E17)
   else
        if IE_E17 <>"ISENTO" and IE_E17<>"NAOCONTRIBUINTE" and
           regfaturac["Consumidor Final"]="S"
           then NFE_GravaCampo("IE_E17    ","SN","S",IE_E17)
        endif   
EndIf 
NFE_GravaCampo("ISUF_E18          ","SN","N",regfaturac["ISUFRAMA"])
NFE_GravaCampo("IM_E18a           ","SN","N",IM_E18a) 

;--- Local de Entrega ----------------------------------------------------------
getrecord "\\sistemas\\vendas\\faturacc" regfaturac["Numero da OF"] to regfaturacc
if retval
   then  
        ;-- Retirada------------------------------------------------------------
        If regfaturacc["Endereco de Retirada"]<>""                  And 
           regfaturacc["Endereco de Retirada"]<>"O MESMO"           And 
           regfaturacc["Endereco de Retirada"]<>regfaturac["Endereco"] 
           Then 
                GetRecord "\\Sistemas\\Cadastro\\Cidades" regfaturacc["Cidade de Retirada"],regfaturacc["UF de Retirada"] To regcidadesretirada   
                If not RetVal
                   Then Mensagem("Erro cadastro cidades: "+regfaturacc["Cidade de Retirada"]+"/"+regfaturacc["UF de Retirada"]+" [Cidades] !")
                        Return False
                Endif   
        
                NFE_GravaCampo("","","","")

                if len(regfaturacc["CGC Expedidor"])=18
                   Then 
                        CNPJ_F02=regfaturacc["CGC Expedidor"]
                        CPF_F02a=""
                   Else 
                        CNPJ_F02=""
                        CPF_F02a=regfaturacc["CGC Expedidor"]
                endif   

                cMun_F07=regcidadesretirada["Codigo_Cidade"]
                xMun_F08=regfaturacc["Cidade de Retirada"  ]
                CEP_F10 =regfaturacc["CEP de Retirada"     ]
                IE_F15  =regfaturacc["IE Expedidor"       ]


                If regfaturacc["UF de Retirada"]="EX" 
                   Then
                        CNPJ_F02=""
                        If regfaturac["Tipo Movimento Estoque"]="S"
                           Then CPF_F02a =""
                        EndIf
                        If regfaturac["Tipo Movimento Estoque"]="E"
                           Then CPF_F02a ="00000000000"
                        EndIf
                    
                        cMun_F07=9999999
                        XMun_F08="EXTERIOR"
                        CEP_F10 ="00.000-000"
                        IE_F15  =""
                EndIf   


                NFE_GravaCampo("CNPJ_F02   ","SN","S",CNPJ_F02)
                NFE_GravaCampo("CPF_F02a   ","SN","S",CPF_F02a)
                NFE_PegaEndereco(regfaturacc["Endereco de Retirada"])
                NFE_GravaCampo("xLgr_F03   ","S" ,"S",End_Logradouro)
                NFE_GravaCampo("nro_F04    ","S" ,"S",End_Numero)
                NFE_GravaCampo("xCpl_F05   ","S" ,"S",End_Complemento)
                NFE_GravaCampo("xBairro_F06","S" ,"S",regfaturacc["Bairro de Retirada"  ])
                NFE_GravaCampo("cMun_F07   ","I" ,"S",cMun_F07)
                NFE_GravaCampo("xMun_F08   ","S" ,"S",xMun_F08)
                NFE_GravaCampo("UF_F09     ","S" ,"S",regfaturacc["UF de Retirada"      ])

                NFE_GravaCampo("XNome_F02b ","S" ,"N",regfaturacc["Razao Social Expedidor"])
                NFE_GravaCampo("CEP_F10    ","SN","N",CEP_F10)
                NFE_GravaCampo("cPais_F11  ","I" ,"N",regcidadesretirada["Codigo_Pais"  ])
                NFE_GravaCampo("xPais_F12  ","S" ,"N",regcidadesretirada["Pais"         ])
                NFE_GravaCampo("fone_F13   ","SN","N",regfaturacc["Telefone Expedidor"])
                NFE_GravaCampo("email_F14  ","S" ,"N",regfaturacc["Email Expedidor"])
                if IE_F15 <>"ISENTO" and IE_F15<>"NAOCONTRIBUINTE" 
                   then NFE_GravaCampo("IE_F15     ","SN","N",IE_F15)
                endif   
                
                NFE_GravaCampo("","","","")
                Release Vars CNPJ_F02,CPF_F02a,cMun_F07,xMun_F08,CEP_F10,IE_F15
                
        EndIf        

        ;-- Entrega ------------------------------------------------------------
        If regfaturacc["Endereco de Entrega"]<>""                  And 
           regfaturacc["Endereco de Entrega"]<>"O MESMO"           And 
           regfaturacc["Endereco de Entrega"]<>regfaturac["Endereco"] 
           Then 
                GetRecord "\\Sistemas\\Cadastro\\Cidades" regfaturacc["Cidade de Entrega"],regfaturacc["UF de Entrega"] To regcidadesentrega    
                If not RetVal
                   Then Mensagem("Erro cadastro cidades: "+regfaturacc["Cidade de Entrega"]+"/"+regfaturacc["UF de Entrega"]+" [Cidades] !")
                        Return False
                Endif   
        
                NFE_GravaCampo("","","","")

                if len(regfaturacc["CGC Recebedor"])=18
                   Then 
                        CNPJ_G02=regfaturacc["CGC Recebedor"]
                        CPF_G02a=""
                   Else 
                        CNPJ_G02=""
                        CPF_G02a=regfaturacc["CGC Recebedor"]
                endif   

                cMun_G07=regcidadesentrega["Codigo_Cidade"]
                xMun_G08=regfaturacc["Cidade de Entrega"  ]
                CEP_G10 =regfaturacc["CEP de Entrega"     ]
                IE_G15  =regfaturacc["IE Recebedor"       ]

                If regfaturacc["UF de Entrega"]="EX" 
                   Then
                        CNPJ_G02=""
                        If regfaturac["Tipo Movimento Estoque"]="S"
                           Then CPF_G02a =""
                        EndIf
                        If regfaturac["Tipo Movimento Estoque"]="E"
                           Then CPF_G02a ="00000000000"
                        EndIf
                    
                        cMun_G07=9999999
                        XMun_G08="EXTERIOR"
                        CEP_G10 ="00.000-000"
                        IE_G15  =""
                EndIf   

                NFE_GravaCampo("CNPJ_G02   ","SN","S",CNPJ_G02)
                NFE_GravaCampo("CPF_G02a   ","SN","S",CPF_G02a)
                NFE_PegaEndereco(regfaturacc["Endereco de Entrega"])
                NFE_GravaCampo("xLgr_G03   ","S" ,"S",End_Logradouro)
                NFE_GravaCampo("nro_G04    ","S" ,"S",End_Numero)
                NFE_GravaCampo("xCpl_G05   ","S" ,"S",End_Complemento)
                NFE_GravaCampo("xBairro_G06","S" ,"S",regfaturacc["Bairro de Entrega"  ])
                NFE_GravaCampo("cMun_G07   ","I" ,"S",cMun_G07)
                NFE_GravaCampo("xMun_G08   ","S" ,"S",xMun_G08)
                NFE_GravaCampo("UF_G09     ","S" ,"S",regfaturacc["UF de Entrega"      ])

                NFE_GravaCampo("XNome_G02b ","S" ,"N",regfaturacc["Razao Social Recebedor"])
                NFE_GravaCampo("CEP_G10    ","SN","N",CEP_G10)
                NFE_GravaCampo("cPais_G11  ","I" ,"N",regcidadesentrega["Codigo_Pais"  ])
                NFE_GravaCampo("xPais_G12  ","S" ,"N",regcidadesentrega["Pais"         ])
                NFE_GravaCampo("fone_G13   ","SN","N",regfaturacc["Telefone Recebedor"])
                NFE_GravaCampo("email_G14  ","S" ,"N",regfaturacc["Email Recebedor"])
                if IE_G15 <>"ISENTO" and IE_G15<>"NAOCONTRIBUINTE" 
                   then NFE_GravaCampo("IE_G15     ","SN","N",IE_G15)
                endif
                
                NFE_GravaCampo("","","","")
                Release Vars CNPJ_G02,CPF_G02a,cMun_G07,xMun_G08,CEP_G10,IE_G15
        endif   
EndIf  

;--- autorizados XML -----------------------------------------------------------
Moveto "\\Sistemas\\Cadastro\\EmpAut"
Moveto [Codigo]
Locate regfaturac["Codigo da Empresa"]
If RetVal
  Then ContAutxml=1
       While [Codigo]=regfaturac["Codigo da Empresa"] And ContAutxml<=10
         CNPJ_GA02 = ""
         CPF_GA03  = ""
         NFE_GravaCampo("","","","")
         NFE_GravaCampo("","","","INCLUIRPARTE=AUTXML")
         If Len([CNPJ_CPF])=18
           then CNPJ_GA02 = [CNPJ_CPF]
           else CPF_GA03  = [CNPJ_CPF]
         EndIf
         NFE_GravaCampo("CNPJ_GA02","SN","S",CNPJ_GA02)    
         NFE_GravaCampo("CPF_GA03","SN","S",CPF_GA03 )
         NFE_GravaCampo("","","","SALVARPARTE=AUTXML")
         NFE_GravaCampo("","","","")
         
         ContAutxml=ContAutxml+1
         Skip
         If EOT() Then QuitLoop EndIf
       EndWhile
EndIf
     

;--- Itens ---------------------------------------------------------------------
TotalDescontoMercadoria=0
TotalDescontoServico   =0

ContItem=0

If PARAM_AGRUPA_ITEM And SubStr(Upper(Directory()),1,2)="X:"
   Then Moveto "FaturaIG"
   Else Moveto "FaturaI"
EndIf   

Moveto [Numero da OF]
Locate regfaturac["Numero da OF"]
While [Numero da OF]=regfaturac["Numero da OF"]

	CopyToArray regfi

  GetRecord "\\Sistemas\\Estoque\\Itens" regfi["Codigo do Item"] To regitens         
  If Not RetVal
     Then msg="Item nÆo Cadastrado !//"
          msg=msg+regfi["Codigo do Item"]+"/"+regfi["Descricao do Item"]
          Mensagem(msg)
          Return False
  EndIf
  GetRecord "\\Sistemas\\Estoque\\Iten_Com" regfi["Codigo do Item"] To regiten_com  
  If Not RetVal
     Then msg="Item sem complemto !//"
          msg=msg+regfi["Codigo do Item"]+"/"+regfi["Descricao do Item"]
          Mensagem(msg)
          Return False
  EndIf

  GetRecord "\\Sistemas\\Vendas\\FaturICM" regfi["Numero da OF"], regfi["Item da OF"] To regfaturicm
  If not RetVal  
     Then msg="Item da nota sem complemto !//"
          msg=msg+regfi["Codigo do Item"]+"/"+regfi["Descricao do Item"]
          Mensagem(msg)
          Return False
  endif        

  Grava_Item()
  
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

;--- Totalizador ---------------------------------------------------------------
Moveto "FaturaC"

NFE_GravaCampo("","","","")
NFE_GravaCampo("vBC_W03           ","$" ,"S",regfaturac["Valor BCICMS"])
NFE_GravaCampo("vICMS_W04         ","$" ,"S",regfaturac["Valor ICMS"  ])
NFE_GravaCampo("vICMSDeson_W04a   ","$" ,"S",regfaturac["Valor Desconto NTributado"])  

NFE_GravaCampo("vFCP_W04h         ","$" ,"S",regfaturac["Valor FCP"         ])
NFE_GravaCampo("vFCPUFDest_W04c   ","$" ,"S",regfaturac["Valor FCP_UFDest"  ])
NFE_GravaCampo("vICMSUFDest_W04e  ","$" ,"S",regfaturac["Valor ICMS_UFDest" ])  
NFE_GravaCampo("vICMSUFRemet_W04g ","$" ,"S",regfaturac["Valor ICMS_UFRemet"])  

NFE_GravaCampo("vBCST_W05         ","$" ,"S",regfaturac["Valor BCSubstituicao ICMS"])
NFE_GravaCampo("vST_W06           ","$" ,"S",regfaturac["Valor Substituicao ICMS"  ])

NFE_GravaCampo("vFCPST_W06a       ","$" ,"S",regfaturac["Valor FCP_Ret_ST"    ])
NFE_GravaCampo("vFCPSTRet_W06b    ","$" ,"S",regfaturac["Valor FCP_Ret_Ant_ST"])

NFE_GravaCampo("vProd_W07         ","$" ,"S",regfaturac["Valor Mercadoria"]+TotalDescontoMercadoria)

If regfaturac["Frete Incluso na Nota"]="+"
   Then NFE_GravaCampo("vFrete_W08","$" ,"S",regfaturac["Valor do Frete"])
   else NFE_GravaCampo("vFrete_W08","$" ,"S",0)
EndIf   

NFE_GravaCampo("vSeg_W09          ","$" ,"S",regfaturac["Valor do Seguro"])
NFE_GravaCampo("vDesc_W10         ","$" ,"S",regfaturac["Valor Desconto" ]+regfaturac["Valor Desconto Servico"]+TotalDescontoMercadoria+TotalDescontoServico)
NFE_GravaCampo("vII_W11           ","$" ,"S",regfaturac["Valor II" ])
NFE_GravaCampo("vIPI_W12          ","$" ,"S",regfaturac["Valor IPI"])
NFE_GravaCampo("vIPIDevol_W12a    ","$" ,"S",regfaturac["Valor IPI Devolvido"])

NFE_GravaCampo("vPIS_W13          ","$" ,"S",regfaturac["Valor PIS"   ])
NFE_GravaCampo("vCOFINS_W14       ","$" ,"S",regfaturac["Valor COFINS"])
NFE_GravaCampo("vOutro_W15        ","$" ,"S",regfaturac["Valor Despesas Acessorias"])
NFE_GravaCampo("vNF_W16           ","$" ,"S",regfaturac["Valor Nota Fiscal"])
NFE_GravaCampo("vTotTrib_W16a     ","$" ,"S",regfaturac["Valor TotTributos"])

If regfaturac["Valor Servico"]>0
   Then 
        NFE_GravaCampo("vServ_W18    ","$" ,"S",regfaturac["Valor Servico"  ]+TotalDescontoServico)
        NFE_GravaCampo("vBC_W19      ","$" ,"N",regfaturac["Valor BCISSQN"  ])
        NFE_GravaCampo("vISS_W20     ","$" ,"N",regfaturac["Valor ISSQN"    ])
        NFE_GravaCampo("vPIS_W21     ","$" ,"N",0)
        NFE_GravaCampo("vCOFINS_W22  ","$" ,"N",0)
        NFE_GravaCampo("dCompet_W22a ","D" ,"S",regfaturac["Data de Emissao"])     
        NFE_GravaCampo("vDeducao_W22b","$" ,"N",regfaturac["Valor Desconto Servico"  ]+TotalDescontoServico)
        NFE_GravaCampo("cRegTrib_w22g","S" ,"S",1)
EndIf    

;--- Transportadora ------------------------------------------------------------
NFE_GravaCampo("","","","")
Switch
  Case regfaturac["Frete por Conta"]="1" : NFE_GravaCampo("modFrete_X02","N" ,"S","0") ; Remetente
  Case regfaturac["Frete por Conta"]="2" : NFE_GravaCampo("modFrete_X02","N" ,"S","1") ; Destinatario              
  Case regfaturac["Frete por Conta"]="3" : NFE_GravaCampo("modFrete_X02","N" ,"S","2") ; Terceiros
  Case regfaturac["Frete por Conta"]="4" : NFE_GravaCampo("modFrete_X02","N" ,"S","3") ; Pr¢prio/Remetente
  Case regfaturac["Frete por Conta"]="5" : NFE_GravaCampo("modFrete_X02","N" ,"S","4") ; Pr¢prio/Destinatario
  otherwise                              : NFE_GravaCampo("modFrete_X02","N" ,"S","9") ; Sem Frete
EndSwitch

if regfaturac["Frete por Conta"]<>"0"
   then
        Switch
          Case Len(regfaturac["CGC Transport"])=18 : NFE_GravaCampo("CNPJ_X04 ","SN","S",regfaturac["CGC Transport"]) 
          OtherWise                                : NFE_GravaCampo("CPF_X05  ","SN","S",regfaturac["CGC Transport"])
        EndSwitch
        NFE_GravaCampo("xNome_X06   ","S" ,"S",regfaturac["Razao Social Transport"])
        If regfaturac["IE Transport"] = "NAOCONTRIBUINTE" 
           Then NFE_GravaCampo("IE_X07      ","S" ,"S","ISENTO")
           Else NFE_GravaCampo("IE_X07      ","SN","S",regfaturac["IE Transport"])
        EndIf
        NFE_GravaCampo("xEnder_X08  ","S" ,"S",regfaturac["Endereco Transport"])
        NFE_GravaCampo("xMun_X09    ","S" ,"S",regfaturac["Cidade Transport"  ])
        NFE_GravaCampo("UF_X10      ","S" ,"S",regfaturac["UF Transport"      ])
        
        ;--- Veiculo -------------------------------------------------------------------
        if idDest_B11a=1 and regcidadesDestinatario["Codigo_Cidade"]=regcidadesemitente["Codigo_Cidade"] 
           then
                NFE_GravaCampo("","","","")
                NFE_GravaCampo("placa_X19   ","SN","S",regfaturac["Placa do Veiculo"])
                NFE_GravaCampo("uf_X20      ","S" ,"S",regfaturac["UF Veiculo"      ])
                NFE_GravaCampo("rntc_X21    ","S" ,"N",regfaturac["RNTC Veiculo"    ])
        endif
endif

;--- Volumes -------------------------------------------------------------------
If regfaturac["Numero de Volumes"]>0 Or regfaturac["Peso Liquido"]>0 Or regfaturac["Peso Bruto"]>0
   Then
        Switch
          Case regfaturac["Numero de Volumes"]<=0 : 
            Mensagem("Peso dos volumes informado, Qtde de volumes ‚ obrigat¢rio !") 
            Return False
        EndSwitch
        
        If SYS_CODIGO_CLIENTE="0377"
           Then ;*** Utilizado na etiqueta de carregamento (Modelo 04A) ***
                MARCA_VOLUME = ""                                               
           Else MARCA_VOLUME = regfaturac["Marca dos Volumes"] 
        EndIf   

        NFE_GravaCampo("","","","")
        NFE_GravaCampo("","","","INCLUIRPARTE=VOL")
        NFE_GravaCampo("","","","")
        NFE_GravaCampo("qVol_X27 ","I" ,"S",regfaturac["Numero de Volumes" ])
        NFE_GravaCampo("esp_X28  ","S" ,"S",regfaturac["Especie de Volumes"])
        NFE_GravaCampo("marca_X29","S" ,"S",MARCA_VOLUME)
        NFE_GravaCampo("nVol_X30 ","I" ,"S",regfaturac["Numero Ordem de Volumes"])
        NFE_GravaCampo("pesoL_X31","N3","S",regfaturac["Peso Liquido"])
        NFE_GravaCampo("pesoB_X32","N3","S",regfaturac["Peso Bruto"  ])
        NFE_GravaCampo("","","","")
        NFE_GravaCampo("","","","SALVARPARTE=VOL")
        
        Release Vars MARCA_VOLUME
EndIf

NFE_GravaCampo("","","","")

;--- Cobranca ------------------------------------------------------------------
;--- Pagamento -----------------------------------------------------------------

vrfatura     =0
DP_NPARC     =0
RelDuplicatas=""

switch
  case regfaturac["Tipo de Pagamento"]="O":
    NFE_GravaCampo("","","","INCLUIRPARTE=YA")
    NFE_GravaCampo("","","","")

    NFE_GravaCampo("tPag_YA02      ","S" ,"S","90")
    NFE_GravaCampo("vPag_YA03      ","$" ,"S",0)

    NFE_GravaCampo("","","","SALVARPARTE=YA")
    NFE_GravaCampo("","","","")
        
  case regfaturac["Tipo de Pagamento" ]="P":
             
    Moveto "FaturaV"
    Moveto [Numero da OF]
    Locate regfaturac["Numero da OF"]
    If RetVal
       Then While [Numero da OF]=regfaturac["Numero da OF"]

              vrfatura=vrfatura+[Valor]                           

              if [Data]>regfaturac["Data de Emissao"]
                 Then 
                      DP_NPARC=DP_NPARC+1     ;*** Contagem de desdobramentos ***

                      If [Data]<=regfaturac["Data de Emissao"]
                         Then MSG="Vencimento invalido !// //"
                              MSG=MSG+"Vencimento ["+StrVal([Sequencia])+"] de "+Format("D13",[Data])
                              MSG=MSG+" inferior a data de emiss„o !// //Verificar !"
                              Mensagem(MSG)
                              Moveto "FaturaC"
                              Return False
                      EndIf
              EndIf
              
              Skip
              If EOT()
                 Then QuitLoop
              Endif
            EndWhile
    Endif

    If Search("VEND",regfaturac["Descricao da Destinacao"])>0
       Then
            If Format("W12.2",vrfatura)<>Format("W12.2",regfaturac["Valor Nota Fiscal"])
               Then 
                    Mensagem("O Valor Total dos Vencimentos a prazo,//difere do Valor da Nota Fiscal !// //Verificar !")
                    Moveto "FaturaC"
                    Return False
            Endif
    EndIf

    Moveto "FaturaV"
    Home
    Moveto [Numero da OF]
    Locate regfaturac["Numero da OF"]
    If RetVal
       Then i=0
            While [Numero da OF]=regfaturac["Numero da OF"]

              i=i+1
              
              ;;;If DP_NPARC=1
              ;;;   Then nDup_Y08=NOTAFISC
              ;;;   Else nDup_Y08=NOTAFISC+"/"+CHR(65+(i-1))   ; nÆo usa mais
              ;;;EndIf
    
              NFE_GravaCampo("","","","INCLUIRCOBRANCA")
              NFE_GravaCampo("","","","")
              NFE_GravaCampo("nFat_Y03 ","S" ,"S",NOTAFISC)
              NFE_GravaCampo("vOrig_Y04","$" ,"S",vrfatura)
              NFE_GravaCampo("vDesc_Y05","$" ,"S",0)
              NFE_GravaCampo("vLiq_Y06 ","$" ,"S",vrfatura)
              NFE_GravaCampo("nDup_Y08 ","S" ,"S",AlinhM(strval(i),3))
              NFE_GravaCampo("dVenc_Y09","D" ,"S",[Data ])
              NFE_GravaCampo("vDup_Y10 ","$" ,"S",[Valor])
              NFE_GravaCampo("","","","")
              NFE_GravaCampo("","","","SALVARCOBRANCA")
              NFE_GravaCampo("","","","")

              Skip
              If EOT()
                 Then QuitLoop
              Endif
            EndWhile
    Endif

endswitch

if regfaturac["Tipo de Pagamento" ]<>"O"
   then
        DynArray TabelaFormasPagto[]
        wcTabelaFormasPagto =0
        wc2TabelaFormasPagto=0

        vrfatura     =0
        
        Moveto "FaturaV"
        Moveto [Numero da OF]
        Locate regfaturac["Numero da OF"]
        If RetVal
           Then While [Numero da OF]=regfaturac["Numero da OF"]
                  nomeCartao   =[Nome do Cartao]
                  numCartao    =[Numero do Cartao]
                  switch
                    case [Forma de Pagamento]="DN" : tPag_YA02  ="01"

                    case [Forma de Pagamento]="CH" : tPag_YA02  ="02"

                    case [Forma de Pagamento]="CP" : tPag_YA02  ="02"

                    case [Forma de Pagamento]="CT" or      
                         [Forma de Pagamento]="CL" : tPag_YA02  ="03"

                    case [Forma de Pagamento]="CD" : tPag_YA02  ="04"

                    case [Forma de Pagamento]="CO" or                    
                         [Forma de Pagamento]="DP" or                
                         [Forma de Pagamento]="NO" : tPag_YA02  ="99"
                    
                    case [Forma de Pagamento]="BO" : tPag_YA02  ="15"
                                                   ;tPag_YA02  ="99" 
                    
                    case [Forma de Pagamento]="TC" : tPag_YA02  ="99"
                                                     nomeCartao   =""
                                                     numCartao    ="" 

                    otherwise                      : tPag_YA02  ="99"
                    
                  endswitch          

                  NFE_MontarFormasPagtos(tPag_YA02,[Valor],nomeCartao,numCartao)
                  vrfatura=vrfatura+[Valor]

                  Moveto "FaturaV"
                  skip
                  If EOT()
                     Then QuitLoop
                  Endif
                EndWhile
        endif

        vTroco_YA09=blanknum()
        if regfaturac["Tipo de Pagamento" ]="V"
           then
                If Format("W12.2",vrfatura)>Format("W12.2",regfaturac["Valor Nota Fiscal"])
                   Then vTroco_YA09=vrfatura-regfaturac["Valor Nota Fiscal"]
                Endif
        endif         
        
        For wcTabelaFormasPagto From 1 To DynArraySize(TabelaFormasPagto)

          tPag_YA02         =                   substr(TabelaFormasPagto[wcTabelaFormasPagto],01,02)
          YANomeDoCartao    =             rtrim(substr(TabelaFormasPagto[wcTabelaFormasPagto],04,15))
          YAAutorizacao     =             rtrim(substr(TabelaFormasPagto[wcTabelaFormasPagto],20,30))
          YAValor           =      numval(ltrim(substr(TabelaFormasPagto[wcTabelaFormasPagto],51,10)))

          vPag_YA03      =YAValor
          tpIntegra_YA04a=""
          CNPJ_YA5       =""
          TBand_YA06     =""
          cAut_YA07      =YAAutorizacao             
          
          if tPag_YA02="03" or      
             tPag_YA02="04"
             then
                   GetRecord "\\Sistemas\\Vendas\\P_cartao" regfaturac["Codigo da Empresa"],YANomeDoCartao To regp_cartao  
                   If not RetVal 
                       Then Mensagem("Parƒmetros cartÆo: "+YANomeDoCartao+", nÆo cadastrado !")
                            Return False
                   EndIf
                   if isblank(regp_cartao["CodigoBandeiraOperadora"])
                      Then Mensagem("Parƒmetros cartÆo: "+YANomeDoCartao+", bandeira da operadora nÆo cadastrada !")
                           Return False
                   endif   
                   GetRecord "\\Sistemas\\Cadastro\\Destinat" regp_cartao["Codigo Destinat"] To regdestinatcartao 
                   If RetVal 
                       Then CNPJ_YA5=regdestinatcartao["CGC"]
                       Else Mensagem("Paramˆtros cartÆo: "+YANomeDoCartao+", pessoa : "+regp_cartao["Codigo Destinat"]+" nÆo cadastrada !")
                            Return False
                   EndIf
          endif
          

          switch
            case regfaturac["Tipo de Pagamento" ]="V" : indPag_YA01b="0"
            case regfaturac["Tipo de Pagamento" ]="P" : indPag_YA01b="1"
          endswitch
    
          switch
            case tPag_YA02="01": indPag_YA01b="0"
                  
            case tPag_YA02="02": indPag_YA01b="0"
                 
            case tPag_YA02="03": TBand_YA06     =regp_cartao["CodigoBandeiraOperadora"]
                                 tpIntegra_YA04a="2"
                                 cAut_YA07      =YAAutorizacao
                       
            case tPag_YA02="04": TBand_YA06     =regp_cartao["CodigoBandeiraOperadora"]
                                 tpIntegra_YA04a="2"
                                 cAut_YA07      =YAAutorizacao

          endswitch          

          NFE_GravaCampo("","","","INCLUIRPARTE=YA")
          NFE_GravaCampo("","","","")
          ;NFE_GravaCampo("indPag_YA01b   ","S" ,"S",indPag_YA01b)
          NFE_GravaCampo("tPag_YA02      ","S" ,"S",tPag_YA02)
          NFE_GravaCampo("vPag_YA03      ","$" ,"S",vPag_YA03)
         ;if tPag_YA02="03" or      
         ;   tPag_YA02="04"   
         ;   then
                  NFE_GravaCampo("tpIntegra_YA04a","S" ,"S",tpIntegra_YA04a)
         ;        NFE_GravaCampo("CNPJ_YA5       ","SN","S",CNPJ_YA5)
         ;        NFE_GravaCampo("TBand_YA06     ","S" ,"S",TBand_YA06)
         ;        NFE_GravaCampo("cAut_YA07      ","S" ,"S",cAut_YA07)
         ;endif
          NFE_GravaCampo("vTroco_YA09    ","$" ,"S",vTroco_YA09)
          NFE_GravaCampo("","","","")
          NFE_GravaCampo("","","","SALVARPARTE=YA")
          NFE_GravaCampo("","","","")

          vTroco_YA09=blanknum()

        endfor
        
        release vars indPag_YA01b,tPag_YA02,vPag_YA03,tpIntegra_YA04a,CNPJ_YA5,TBand_YA06,cAut_YA07,nDup_Y08,vTroco_YA09,
                     TabelaFormasPagto,TabelaFormasPagtoNew,wcTabelaFormasPagto,wc2TabelaFormasPagto,
                     YANomeDoCartao,YAAutorizacao,YAValor
                     
endif
Release Vars i 

;--- Observacoes ---------------------------------------------------------------
Moveto "FaturaC"

locentreg=""
getrecord "\\sistemas\\vendas\\faturacc" regfaturac["Numero da OF"] to regfaturacc
if retval
   then
        If regfaturacc["Endereco de Entrega"]<>""                     And 
           regfaturacc["Endereco de Entrega"]<>"O MESMO"              And 
           regfaturacc["Endereco de Entrega"]<>regfaturac["Endereco"] And
           SYS_CODIGO_CLIENTE<>"0318"                                 And 
           SYS_CODIGO_CLIENTE<>"0370" 
           Then 
                locentreg=" [Local de Entrega, "
                locentreg=locentreg+"End: "   +regfaturacc["Endereco de Entrega"]+", "
                locentreg=locentreg+"Bairro: "+regfaturacc["Bairro de Entrega"  ]+", "
                locentreg=locentreg+"CEP: "   +regfaturacc["CEP de Entrega"     ]+", "
                locentreg=locentreg+"Cidade: "+regfaturacc["Cidade de Entrega"  ]+"/"+regfaturacc["UF de Entrega"]+"]"
        endif
endif

If SYS_CODIGO_CLIENTE="0294"
   Then locentreg = locentreg+" Vendedor: "+regfaturac["Nome Fantasia Represent"]
EndIf

if sys_codigo_cliente="0358"
   then RelDuplicatas=RelDuplicatas+" FormaPagto: "
        switch
          case regfaturac["Tipo de Pagamento" ]="V" : RelDuplicatas=RelDuplicatas+"A VISTA/"
          case regfaturac["Tipo de Pagamento" ]="P" : RelDuplicatas=RelDuplicatas+"A PRAZO/"
        endswitch
        GetRecord "\\Sistemas\\Cadastro\\Tppagto" regfaturac["Forma de Pagamento"] To regtppagto     
        If RetVal
           Then RelDuplicatas=RelDuplicatas+regtppagto["Descricao Tipo Pagamento"] 
        Endif   
        release vars regtppagto 
endif   

NFE_GravaCampo("","","","")
NFE_GravarCampoMemo("infCpl_Z03","_"+regfaturac["Observacao na Nota Fiscal"]+locentreg+RelDuplicatas,100)

;--- Exterior -----------------------------------------------------------------
If UF_E12="EX" and regfaturac["Tipo Movimento Estoque"]="S"
   Then NFE_GravaCampo("","","","")
        NFE_GravaCampo("UFSaidaPais_ZA02","S" ,"S",regfaturac["UF Transport"          ])
        NFE_GravaCampo("xLocExporta_ZA03","S" ,"S",regfaturac["Razao Social Transport"])
EndIf

;--- Informa‡äes de Compras ----------------------------------------------------
GetRecord "FaturaCC" regfaturac["Numero da OF"] To regfaturacc
If ReTval
   Then NFE_GravaCampo("","","","")
        NFE_GravaCampo("xNEmp_ZB02","S" ,"S",regfaturacc["Nota de Empenho"])
        NFE_GravaCampo("xPed_ZB03 ","S" ,"S",regfaturacc["Pedido"         ])
        NFE_GravaCampo("xCont_ZB04","S" ,"S",regfaturacc["Contrato"       ])
EndIf

if regemitente["UF"]="PR"
   then
        ;--- Responsavel Tecnico -------------------------------------------------------
        NFE_GravaCampo("","","","")
        NFE_GravaCampo("CNPJ_ZD02"     ,"SN","S" ,"05.042.506/0001-87")
        NFE_GravaCampo("xContato_ZD04" ,"S" ,"S" ,"ANIVEL AUGUSTO RODRIGUES")
        NFE_GravaCampo("email_ZD05"    ,"S" ,"S" ,"vise@visesistemas.com.br")
        NFE_GravaCampo("fone_ZD06"     ,"SN","S" ,"3732227305")
endif

;--- Outros --------------------------------------------------------------------
NFE_GravaCampo("","","","")
If AmbienteNFe="2" ;Homologa‡Æo
   then
        NFE_GravaCampo("EMAILDESTINATARIO","S" ,"S","")
        NFE_GravaCampo("EMAILCCO         ","S" ,"S","")
   else
        NFE_GravaCampo("EMAILDESTINATARIO","S" ,"S",EMAILDESTINATARIO)
        NFE_GravaCampo("EMAILCCO         ","S" ,"S",regtranspor["Endereco_Eletronico Trans"])
endif
If Not IsBlank(ModeloReportRTM)
   Then NFE_GravaCampo("MODELORTM        ","S" ,"S",ModeloReportRTM)
EndIf   

;--- Fim -----------------------------------------------------------------------
NFE_GravaCampo("","","","")
NFE_GravaCampo("","","","SALVAR")

Close Printer

return True
EndProc

;*******************************************************************************
;* Rotina carrega dados tabela relacionadas                                    *
;*******************************************************************************
Proc GetTabelasPrincipais()

Moveto "FaturaC"
copytoarray regfaturac

GetRecord "\\Sistemas\\Cadastro\\Destinat" regfaturac["Codigo da Empresa"] To regemitente
If not RetVal
   Then Mensagem("Erro cadastro empresa: "+regfaturac["Codigo da Empresa"]+" [Destinat] !")
        Return False
Endif   

GetRecord "\\Sistemas\\Cadastro\\Cidades" regemitente["Cidade"],regemitente["UF"] To regcidadesemitente    
If not RetVal
   Then Mensagem("Erro cadastro cidades: "+regemitente["Cidade"]+"/"+regemitente["UF"]+" [Cidades] !")
        Return False
Endif   

GetRecord "\\Sistemas\\Vendas\\Destin" regfaturac["Codigo da Destinacao"] To regdestin 
If not RetVal
   Then Mensagem("Erro cadastro destina‡äes: "+regfaturac["Codigo da Destinacao"]+" [Destin] !")
        Return False
Endif   

GetRecord "\\Sistemas\\Cadastro\\Destinat" regfaturac["Codigo"] To regdestinatario
If Not RetVal
   Then Mensagem("Erro cadastro pessoa: "+regfaturac["Codigo"]+" [Destinat] !")
        Return False
Endif   

GetRecord "\\Sistemas\\Vendas\\Transpor" regfaturac["Codigo da Transportadora"] To regtranspor
If not RetVal
   Then Mensagem("Erro cadastro transportadora: "+regfaturac["Codigo da Transportadora"] +" [Transpor] !")
        Return False
Endif   

return true
endProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
If Not IsAssigned(PARAM_VISUALIZAR_DANFE) Then PARAM_VISUALIZAR_DANFE=False EndIf

while NFE_CalcChaveAcesso("55") 
  If Not PARAM_VISUALIZAR_DANFE
     Then 
          Moveto "FaturaC"
          Switch
            Case ModoNFe="Normal"   : [Sistema Gerador]="n" 
            Case ModoNFe="SCAN"     : [Sistema Gerador]="s"
            Case ModoNFe="SVCAN"    : [Sistema Gerador]="s" 
            Case ModoNFe="DPEC"     : [Sistema Gerador]="d" 
            Case ModoNFe="EPEC"     : [Sistema Gerador]="d" 
            Case ModoNFe="FSDA"     : [Sistema Gerador]="f" 
          EndSwitch
          UnLockRecord
      
          Play "FT_NOTA"
     Else UnLockRecord
  EndIf      

  Moveto "FaturaC"

  ModeloReportRTM=""
  If SYS_CODIGO_CLIENTE="0228"
     Then
          GetRecord "\\Sistemas\\Cadastro\\Destinat" regfaturac["Codigo"] To regdestinatRTM
          If RetVal
             Then RTM_ATIVIDADE=regdestinatRTM["Codigo Atividade"]
             Else RTM_ATIVIDADE=""
          EndIf

          Switch
            Case PARAM_GRUPO_EDOC<>"":
              ModeloReportRTM=PastaNfeManager+"Plugins\\ManagerNFe\\Files\\Templates\\vm40\\Danfe\\"
            OtherWise                :
              ModeloReportRTM=PastaNfeManager+"Templates\\vm40\\Danfe\\"
          EndSwitch

          If RTM_ATIVIDADE="0001"                                    
             Then ModeloReportRTM=ModeloReportRTM+"RetratoMig.rtm" 
             Else If RTM_ATIVIDADE="0002"                                                            
                     Then ModeloReportRTM=ModeloReportRTM+"RetratoHome.rtm"
                     Else ModeloReportRTM="" 
                  EndIf                
          EndIf
          
          release vars RTM_ATIVIDADE              
  EndIf

  If PARAM_VISUALIZAR_DANFE
     Then AGUARDE("Gerando Pre-visualiza‡Æo OF -> "+NOTAFISC)
     Else AGUARDE("Gerando NF-e -> "+NOTAFISC)
  EndIf
  
  ARQTX2=PrivDir()+"nfe.tx2"
  FileWrite ARQTX2 From ""

  NFEJA_AUTORIZADA=False
  
  If Not GeraNFE()
     Then 
          Mensagem("NF-e nÆo foi concluida, verificar erros !")
          quitloop
  endif

  AGUARDE("Enviando arquivo ao Manager eDoc NF-e -> "+NOTAFISC)

  If PARAM_VISUALIZAR_DANFE
     then
          FileWrite        PrivDir()+"funcao5.txt"  From  "EDOCP|"+PrivDir()+"|"+"nfe.tx2"+"|"+PastaNfeManagerMonitorar+"|"+NOTAFISC+"\n"
          ExecVise(PrivDir()+"funcao5.txt")

          conteudodoarquivo="" 
          if Not LerConteudodoArquivo8(PrivDir()+"managret.txt") or conteudodoarquivo=""
             then
                  MSG="Sem resposta do eDOC p/ verificar situa‡Æo !// //"
                  MSG=MSG+"// Verificar situa‡Æo no eDoc !"
                  Mensagem(MSG)
                  quitloop
             else if substr(conteudodoarquivo,1,4)<>"True" and conteudodoarquivo<>""
                     then 
                          ;;Mensagem("ERRO Pr‚ Visualiza‡Æo NF-e -> "+ArqNFE+"// //"+conteudodoarquivo) 
                  endif
          endif        

     else
          FileWrite        PrivDir()+"funcao5.txt"  From  "EDOCE|"+PrivDir()+"|"+"nfe.tx2"+"|"+PastaNfeManagerMonitorar+"|"+ArqNFe+"|"+NOTAFISC+"\n"
          ExecVise(PrivDir()+"funcao5.txt")
        
          conteudodoarquivo="" 
          if Not LerConteudodoArquivo8(PrivDir()+"managret.txt") Or conteudodoarquivo=""
             then
                  MSG="Sem resposta do eDOC p/ verificar situa‡Æo !// //"
                  MSG=MSG+"// Verificar situa‡Æo no eDoc !"
                  Mensagem(MSG)
                  quitloop
             else
                  Switch
                    Case Search(CHAVE_ACESSO_NFe  ,conteudodoarquivo)>0 and
                         Search("Autorizado o uso",conteudodoarquivo)>0 :   
                         Mensagem("NF-e "+NOTAFISC+" foi confirmada sua autoriza‡„o no SEFAZ !")
              
                         Switch
                           Case [FaturaC->Sistema Gerador]="n" : [FaturaC->Sistema Gerador]="n!" 
                           Case [FaturaC->Sistema Gerador]="s" : [FaturaC->Sistema Gerador]="s!" 
                         EndSwitch
                         UnLockRecord
              
                         Moveto "NotaC"
                         Moveto [Codigo da Empresa]
                         Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
                         If RetVal
                            Then [Sistema Gerador]=[FaturaC->Sistema Gerador]
                                 UnLockRecord
                         EndIf
                 
                         Moveto "FaturaC"
              
                    Case Search("REGISTRADA",conteudodoarquivo)>0:
                         Mensagem("NF-e "+NOTAFISC+" foi REGISTRADA no eDoc !")
                         
                 ;   Case Search("EXCEPTION" ,conteudodoarquivo)>0 or
                 ;        Search(",Rejeição:",conteudodoarquivo)>0:
                 ;        Mensagem("ERRO NF-e -> "+ArqNFE+"// //"+conteudodoarquivo)
                          
                   EndSwitch
          endif

  endif   
       
  quitloop     
Endwhile

LIMPAGUARDE()

Release Vars End_Logradouro, End_Numero, Endd_Complemento, PastaNfeManager, PastaNfeManagerMonitorar,
             ArqNFE, ArqNFE_Reenviar, ArqTX2, 
             TotalDescontoMercadoria, TotalDescontoServico,
             EMAILDESTINATARIO, ModeloReportRTM, ContItem, conteudodoarquivo, locentreg, RelDuplicatas

Release Vars cNF_B03, mod_B06, serie_B07, nNF_B08, tpEmis_B22, cDV_B23, verProc_B27,
             CNPJ_E02, CPF_E03, cMun_E10, xMun_E11, UF_E12, CEP_E13, IE_E17, IndIEDest
                          
Release Vars regdestin, regestados, regtranspor, regdestinat,
             regitens, regiten_com, regiten_tec, 
             regemitente, regcidadesemitente, regdestinatario, regcidadesdestinatario, regcidadesentrega, regcidadesretirada,
             regdestmail, regEmpriest, regfaturacc, regp_cartao, regdestinatRTM, regfi, regfaturac, regfaturicm
             
Release Procs Grava_ISSQN, Grava_ICMS_ST, Grava_IPI, Grava_DeclaracaoII, Grava_PIS_COFINS, Grava_LoteI, Grava_Item, 
              GeraNFE, GetTabelasPrincipais
              
