;** GMaster *******************************************************************
;* Geracao do Disco p/ MasterMaq                                              *
;******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 01/09/2004 por Davi Pereira Carrano
;Ultima Alteracao: 26/09/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes 
;Ultima Alteracao: 05/03/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes LAYOUT SRC
;Ultima Alteracao: 19/04/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Serie UNIBRAS
;Ultima Alteracao: 11/05/2007 por Davi Carrano
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 06/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Novo Layout
;Ultima Alteracao: 14/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 07/03/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Fund.SÇo Geraldo
;Ultima Alteracao: 20/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Venus Modas
;Ultima Alteracao: 30/07/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Serie INBEC
;Ultima Alteracao: 07/10/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Codigo do Cliente=""
;Ultima Alteracao: 02/09/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Emitente da Nota Fiscal T/P e CIF/FOB para CTR
;Ultima Alteracao: 03/09/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Nota de Entrada pelo Faturamento
;Ultima Alteracao: 13/05/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Gera_ECF()                      
;Ultima Alteracao: 17/05/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes usar Conta Contabil/CNPJ_CPF  
;Ultima Alteracao: 17/06/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Serie p/ ECF e Itens Subst + Icms Outros AGEL  
;Ultima Alteracao: 18/08/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos c¢digos modelos de NF                    
;Ultima Alteracao: 16/11/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Codigo Tributacao INBEC IMCS DEFERIDO/IPI NAO TRIBUTADO
;Ultima Alteracao: 22/12/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novo Layout, novas tabela                           
;Ultima Alteracao: 20/01/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes                                                     
;Ultima Alteracao: 10/02/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes tributos nos itens                                  
;Ultima Alteracao: 14/02/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SOMA_ITENS_???                                    
;Ultima Alteracao: 16/02/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Calculo Reducao ICMS sem Desconto          
;Ultima Alteracao: 28/02/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Novo Layout NotaEC/NotaEI           
;Ultima Alteracao: 14/03/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes variaveis/calculos          
;Ultima Alteracao: 18/03/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao FMVI7                       
;Ultima Alteracao: 03/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes NF-e Inutilizada      
;Ultima Alteracao: 08/06/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes No NF 7->6 digitos        
;Ultima Alteracao: 27/06/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo Arj para c:\Arj
;Ultima Alteracao: 09/08/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes NFE pra todas as series
;Ultima Alteracao: 05/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Novo Layout 
;Ultima Alteracao: 24/11/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes alinhamento "NFISCAL" e "NFISCAL2"
;Ultima Alteracao: 01/12/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo de "ExecVise -> Vexe","Arj -> Varj"
;Ultima Alteracao: 11/01/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Novo Layout 5.2 FALTA PASSAR NOVOS CAMPOS PARA AS TABELAS
;Ultima Alteracao: 12/01/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes nome da variavel NOMEMESTRE
;Ultima Alteracao: 01/02/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Novo Layout 5.2                                           
;Ultima Alteracao: 20/04/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo recalcular impostos pegar direto da tabela            
;Ultima Alteracao: 07/05/2012 por Bruno Carvalho
;Motivo Alteracao: Add Sleep na rotina onde ‚ processado o ARJ
;Ultima Alteracao: 22/06/2012 por Bruno Carvalho
;Motivo Alteracao: Removido CALCULA_ST 
;Ultima Alteracao: 20/08/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desprezar item notai cancalado
;Ultima Alteracao: 04/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes LimpaRodape()                  
;Ultima Alteracao: 28/03/2013 por Bruno Carvalho
;Motivo Alteracao: CLASSIFICACAO ([NBM]) recebendo valor vazio 
;Ultima Alteracao: 25/04/2013 por Kamila Gomes  
;Motivo Alteracao: Ajustes Novo Layout 5.4     
;Ultima Alteracao: 13/06/2013 por Kamila Gomes  
;Motivo Alteracao: Correcoes para Layout 5.4      
;Ultima Alteracao: 09/07/2013 por Kamila Gomes  
;Motivo Alteracao: Correcoes para Layout 5.4 arq FMVIM.TXT  
;Ultima Alteracao: 21/05/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes GetRecord "Iten_Com" -> [EX_TIPI]  
;Ultima Alteracao: 01/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog. 
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons() e MensagemCheckBoxes()                 

;*******************************************************************************
;* Rotina p/ Selecionar e Ordenar Registros de Saida                           *
;*******************************************************************************
Proc MONTA_SAIDA()
Aguarde("Aguarde, Processando")

Play "\\Sistemas\\Exporta\\RegSaida"

Sort "\\Sistemas\\Vendas\\RegSaida"  On "Codigo da Empresa","Numero da Nota Fiscal","Serie da Nota Fiscal","Sequencia da Nota Fiscal" To "RegSTemp"

ClearAll
EndProc  ; (Gera_Saida)

;*******************************************************************************
;* Rotina p/ Selecionar e Ordenar Registros de Entrada                         *
;*******************************************************************************
Proc MONTA_ENTRADA()
Aguarde("Aguarde, Processando")

Play "\\Sistemas\\Exporta\\RegEntra"

Sort "\\Sistemas\\Estoque\\RegEntra" On "Codigo da Empresa","Numero da Nota Fiscal","Sequencia da Nota Fiscal","Tipo","Codigo" To "RegETemp"

ClearAll
EndProc  ; (Monta_Entrada)

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc GERA_REG()
Aguarde("Aguarde, Processando")

Empty("MMFMVIM")
Empty("MMFMVI2")
Empty("MMFMVI4")
Empty("MMFMVI5")
Empty("MMFMVI6")
Empty("MMFMVI7")
Empty("MMFMVI8")
Empty("MMFMVI9")
Empty("MMMATER")
Empty("MMUNIDM")
Empty("MMSRC")

View "\\Sistemas\\Cadastro\\Empresas"
Moveto [Codigo da Empresa]
Locate VSDGEMPRESA
If RetVal
   Then ATIVIDADE  = [\Sistemas\Cadastro\Empresas->Atividade ]
        ESTEMPRESA = [\Sistemas\Cadastro\Empresas->Uf Empresa]
EndIf
ClearAll

View "\\Sistemas\\ICMS_IPI\\ReceitaE"
Moveto [Codigo da Empresa]
Locate VSDGEMPRESA
WEMITE_NF =[Emite NF pelo Sistema ]
WEMITE_ECF=[Emite ECF pelo Sistema]
WSERIE_ECF=[Numero Serie Fabricacao]

XREF=0
FXREF="00000000"

If VSDGOPCAO[1]=True or VSDGOPCAO[3]=True
   Then GERA_ENTRADA_ESTOQUE()
        GERA_ENTRADA_VENDAS()
EndIf

If VSDGOPCAO[2]=True or VSDGOPCAO[3]=True
   Then GERA_SAIDA()
        GERA_ECF()
EndIf

GERA_UNIDM()
GERA_ARQUIVO_TEXTO()

EndProc   ; (Gera_Reg)

;*******************************************************************************
;* Rotina p/ gravar dados referente a saida Itens                              *
;*******************************************************************************
Proc GERA_SAIDA()
If IsEmpty("RegSTemp")
   Then Return
EndIf

View   "\\Sistemas\\Cadastro\\Empresas"
View   "\\Sistemas\\Cadastro\\Destinat"
View   "\\Sistemas\\Cadastro\\Cidades"
View   "\\Sistemas\\Estoque\\Itens"
View   "\\Sistemas\\Vendas\\Estados"
View   "\\Sistemas\\Vendas\\Destin"
View   "\\Sistemas\\Vendas\\NotaC"
View   "\\Sistemas\\Vendas\\NotaI"
View   "MMFMVIM"
View   "MMFMVI2"
View   "MMFMVI4"
View   "MMFMVI6"
View   "MMFMVI7"
View   "MMFMVI8"
View   "MMFMVI9"
View   "MMMATER"
View   "MMUNIDM"
View   "MMSRC"
CoEdit "RegSTemp"
NR = NRecords("RegSTemp")

WEMP="**"
WNUM="**"
WSER="**"

Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Gerando Dados Saidas "+BARRA_STRING)

  If [Especie da Nota Fiscal]="C/F"
     Then Loop
  EndIf   

  If [Codigo da Empresa    ]<>WEMP Or
     [Numero da Nota Fiscal]<>WNUM Or
     [Serie da Nota Fiscal ]<>WSER
     Then
          WEMP=[Codigo da Empresa    ]
          WNUM=[Numero da Nota Fiscal]
          WSER=[Serie da Nota Fiscal ]

          Moveto "\\Sistemas\\Vendas\\NotaC"
          Moveto [Codigo da Empresa]
          Locate WEMP,SubStr(WNUM,2,6),WSER
          If Not RetVal
             Then Moveto "RegSTemp"
                  Loop
          EndIf

          If SEARCH("INUTILIZ",[\Sistemas\Vendas\NotaC->Descricao da Destinacao])>0
             Then SEM_RED_BCICMS="1"
                  UF_ALIQUOTA_ICMS_INTERNA =BlankNum()
             
                  NotaAtualizaEstoque="N"
                  ConsumidorFinal    ="N"
  
             Else SEM_RED_BCICMS="1"
                  Moveto "\\Sistemas\\Vendas\\Destin"
                  Moveto [Codigo da Destinacao]
                  Locate [\Sistemas\Vendas\NotaC->Codigo da Destinacao]
                  If Not Retval
                     Then Mensagem("Destina‡Æo nÆo encontrada-[DESTIN] : "+[\Sistemas\Vendas\NotaC->Codigo da Destinacao])
                     Else SEM_RED_BCICMS=[\Sistemas\Vendas\Destin->Sem Reducao BCICMS]
                  EndIf  
                  Moveto "\\Sistemas\\Vendas\\Estados"
                  Moveto [UF]
                  Locate [\Sistemas\Vendas\NotaC->UF]
                  If RetVal
                     Then UF_ALIQUOTA_ICMS_INTERNA =[\Sistemas\Vendas\Estados->Aliquota de ICMS_INTERNA]
                     Else UF_ALIQUOTA_ICMS_INTERNA =BlankNum()
                  EndIf
                  Moveto "\\Sistemas\\Vendas\\NotaC"
        
                  Grava_SRC([\Sistemas\Vendas\NotaC->Tipo],[\Sistemas\Vendas\NotaC->Codigo],"Regstemp")
            
                  NotaAtualizaEstoque=[\Sistemas\Vendas\Notac->Atualiza Estoque]
                  ConsumidorFinal    =[\Sistemas\Vendas\Notac->Consumidor Final]
          EndIf  

          Moveto "RegSTemp"
          XREF =XREF+1
          FXREF=StrVal(XREF)
          FXREF=AlinhM(FXREF,8)

          ;**************************************************************************
          ;*Atualiza dados da nota
          ;**************************************************************************
          Moveto "MMFMVIM"
          End Down
          [TIPO                         ]="S"
          [NFISCAL                      ]=AlinhM(SubStr([RegSTemp->Numero da Nota Fiscal],2,6),6);kamila
          [NFISCAL2                     ]=AlinhM(SubStr([RegSTemp->Numero da Nota Fiscal],2,6),6)
          [FILIAL                       ]="00"
          [XREF                         ]=FXREF
          [UNIDADE                      ]="00"
          [EMISSAO                      ]=AlinhM(StrVal( Year([RegSTemp->Data de Emissao])),4)+
                                          AlinhM(StrVal(Month([RegSTemp->Data de Emissao])),2)+
                                          AlinhM(StrVal(  Day([RegSTemp->Data de Emissao])),2)
          [ENTRADA                      ]=[Emissao]
          [CDFISC                       ]=SubStr([RegSTemp->CFO],1,1)+"."+SubStr([RegSTemp->CFO],2,3)
          [CP                           ]=""
          Switch
            Case VSDGCOD=1 : 
		          If Not IsBlank([RegSTemp->CGC])
		             Then CNPJ=Tira_Formato_CGC_CPF([RegSTemp->CGC])
		                  If Len([RegSTemp->CGC]) = 18
		                     Then [CP]=SubStr(CNPJ,1,8)+ SubStr(CNPJ,11,2)
		                     Else [CP]=SubStr(CNPJ,1,10)
		                  EndIf
		          EndIf
            Case VSDGCOD=2 : [CP]=CodigoMaster
          EndSwitch
          [ESPECIE                      ]=[RegSTemp->Especie da Nota Fiscal]
          Switch
            Case [Regstemp->Serie da Nota Fiscal]="M-1"  :
                 Switch
                   Case SYS_CODIGO_CLIENTE="0126": [SERIE]="S-1"
                   Case SYS_CODIGO_CLIENTE="0171": [SERIE]="2"
                   Case SYS_CODIGO_CLIENTE="0193": [SERIE]="3"
                   OtherWise                     : [SERIE]=" -"
                 EndSwitch
            Case [Regstemp->Serie da Nota Fiscal]="S-1"  :
                 Switch
                   Case SYS_CODIGO_CLIENTE="0126": [SERIE]="S-2"
                   OtherWise                     : [SERIE]="2"
                 EndSwitch
            OtherWise                                     : [SERIE]=[Regstemp->Serie da Nota Fiscal]
          EndSwitch
          [VLCTABIL                     ]=[RegSTemp->Valor Contabil]
          [VL_VISTA                     ]=BlankNum()   
          [VLCTBRURAL                   ]=BlankNum()
          [UF                           ]=[\Sistemas\Vendas\NotaC->UF]
          Switch
             Case  [\Sistemas\Vendas\Notac->Tipo de Pagamento] = "V":[VISTAPRAZO]="1"
             Case  [\Sistemas\Vendas\Notac->Tipo de Pagamento] = "P":[VISTAPRAZO]="2"
             Case  [\Sistemas\Vendas\Notac->Tipo de Pagamento] = "O":[VISTAPRAZO]="3"
          EndSwitch
          [ENTRAPROP                    ]=""
          [CXADATA                      ]=""
          [CXAVALOR                     ]=BlankNum()
          [CXAHISTC                     ]=""
          [CXAHIST                      ]=""
          [FATUR_3                      ]=BlankNum()
          [FATUR_35                     ]=BlankNum()
          [FATUR_8                      ]=BlankNum()
          [FATUR_20                     ]=BlankNum()
          [INTEG_TO                     ]=""
          [ITENSCAN                     ]=BlankNum()
          [TIPDOC                       ]="P"
          Switch
            Case [RegSTemp->Cancelada]="S"              : [TIPDOC]="CN"
          EndSwitch
          [AUX                          ]=""
          [USER                         ]=""
          [REDUCAO_Z                    ]=""
          [SUBFISC                      ]=""
          Switch
            Case [RegSTemp->Serie da Nota Fiscal]="M1"  : [TIPDOCFISC]="01"
            Case [RegSTemp->Serie da Nota Fiscal]="M-1" : [TIPDOCFISC]="01"
            Case [RegSTemp->Serie da Nota Fiscal]="S-1" : [TIPDOCFISC]="01"
            Case [RegSTemp->Serie da Nota Fiscal]="S1"  : [TIPDOCFISC]="01"
            Case [RegSTemp->Serie da Nota Fiscal]="M_1" : [TIPDOCFISC]="01"
            Case [RegSTemp->Serie da Nota Fiscal]="D"   : [TIPDOCFISC]="02"
            Case SubStr([RegSTemp->Codigo do Documento ],1,3)="NFE": [TIPDOCFISC]="55"
            Case [RegSTemp->Codigo do Documento ]="NF-E": [TIPDOCFISC]="55"
            OtherWise                                   : [TIPDOCFISC]=""
          EndSwitch
          [AIDF_ANO                     ]=""
          [AIDF_NUM                     ]=""
          [VL_FRETE                     ]=BlankNum()
          [VL_SEG                       ]=BlankNum()
          [VL_DA                        ]=BlankNum()
          [HREMISSAO                    ]=""
          [HR_E_S_PRD                   ]=""
          [SITUACAO                     ]=""
          Switch
            Case [RegSTemp->Cancelada]="S": 
                 [SITUACAO]="S"
            Case Search([\Sistemas\Vendas\NotaC->Descricao da Destinacao],"INUTILIZ")>0: 
                 [SITUACAO]="4"
          EndSwitch
          If Not IsBlank([RegSTemp->Data de Saida  ])
             Then [SAIDA                ]=AlinhM(StrVal( Year([RegSTemp->Data de Saida  ])),4)+
                                          AlinhM(StrVal(Month([RegSTemp->Data de Saida  ])),2)+
                                          AlinhM(StrVal(  Day([RegSTemp->Data de Saida  ])),2)
          EndIf                                
          [COD_DOCIMP                   ]=""
          [NUM_DOCIMP                   ]=""
          [NUMDESPEXD                   ]=""
          [DATAEMBEXD                   ]=""
          [VALDESPEXD                   ]=BlankNum()
          [CODMOEDEXD                   ]=""
          [TIPO_CONTR_PIS_COFINS        ]=""
          [SUBSERIE                     ]=""
          [NUM_DRBACK                   ]=""
          [TP_LIGACAO                   ]=""         
          [COD_GRUTEN                   ]=""
          [TP_ASSINAN                   ]=""
          [VL_LIQUIDO                   ]=BlankNum()
          [IND_FRETE                    ]=""
          [IND_SEGURO                   ]=""
          [IND_DA                       ]=""
          [CP_2                         ]=""
          [NUM_REGEXP                   ]=""
          UnlockRecord

          Moveto "RegSTemp"
          If [Cancelada]="S"
             Then Loop
          EndIf

          wwitem=0
          Moveto "\\Sistemas\\Vendas\\NotaI"
          Moveto [Codigo da Empresa]
          Locate WEMP,SubStr(WNUM,2,6),WSER
          While [Codigo da Empresa  ]=WEMP And 
                [Numero do Documento]=SubStr(WNUM,2,6) And 
                [Serie do Documento ]=WSER

            If [Situacao_Item]<>"C" Then
                Moveto [Tipo do Item]
                If Busca_Lookup("Tipo do Item",[Tipo do Item],"SM")
                   Then ItemControlaEstoque=SubStr(REG_BUSCA_LOOKUP["Controla Estoque"],1,1)
                   Else ItemControlaEstoque="N"
                EndIf
                UnLockRecord
    
                ;--- C lculo p/ escritura‡Æo -------------------------------------
                CFOP           =[\Sistemas\Vendas\NotaI->CFO                     ]
                VL_ITEM        =[\Sistemas\Vendas\NotaI->Preco Total             ]
                VL_DESC        =[\Sistemas\Vendas\NotaI->Valor Desconto Total    ]
    
                CST_ICMS       =[\Sistemas\Vendas\NotaI->Tipo Tributacao         ]
                ALIQ_ICMS      =[\Sistemas\Vendas\NotaI->Aliquota de ICMS        ]
                ALIQ_RD_ICMS   =[\Sistemas\Vendas\NotaI->Aliquota Reduzida BCICMS]
                ALIQ_ST        =[\Sistemas\Vendas\NotaI->ICMS_ST_Aliquota        ]
                If IsBlank(ALIQ_ICMS)    Or ALIQ_ICMS<=0    Then ALIQ_ICMS=0    EndIf
                If IsBlank(ALIQ_RD_ICMS) Or ALIQ_RD_ICMS<=0 Then ALIQ_RD_ICMS=0 EndIf
                If IsBlank(ALIQ_ST)      Or ALIQ_ST<=0      Then ALIQ_ST=0      EndIf
                VL_BC_ICMS     =[\Sistemas\Vendas\NotaI->ICMS_BC                 ]
                VL_ICMS        =[\Sistemas\Vendas\NotaI->Valor do ICMS           ]
                VL_BC_ICMS_ST  =[\Sistemas\Vendas\NotaI->ICMS_ST_BC              ]
                VL_ICMS_ST     =[\Sistemas\Vendas\NotaI->ICMS_ST_Valor           ]
                MVA_ST         =[\Sistemas\Vendas\NotaI->MVA                     ]
                VL_RED_BC      =0
                
                CSOSN          =[\Sistemas\Vendas\NotaI->CSOSN                   ]
    
                CST_IPI        =[\Sistemas\Vendas\NotaI->IPI_CST                 ]
                COD_ENQ        =""
                ALIQ_IPI       =[\Sistemas\Vendas\NotaI->Aliquota de IPI         ]
                ALIQ_RD_IPI    =[\Sistemas\Vendas\NotaI->Aliquota Reduzida BCIPI ]
                If IsBlank(ALIQ_IPI)     Or ALIQ_IPI<=0     Then ALIQ_IPI=0     EndIf
                If IsBlank(ALIQ_RD_IPI)  Or ALIQ_RD_IPI<=0  Then ALIQ_RD_IPI=0  EndIf
                VL_BC_IPI      =[\Sistemas\Vendas\NotaI->IPI_BC                  ]
                VL_IPI         =[\Sistemas\Vendas\NotaI->Valor do IPI            ]
    
                CST_PIS        =[\Sistemas\Vendas\NotaI->PIS_CST                 ]
                VL_BC_PIS      =[\Sistemas\Vendas\NotaI->PIS_BC                  ]
                ALIQ_PIS       =[\Sistemas\Vendas\NotaI->PIS_Aliquota            ]
                QUANT_BC_PIS   =0
                ALIQ_PIS2      =0
                VL_PIS         =[\Sistemas\Vendas\NotaI->PIS_Valor               ]
    
                CST_COFINS     =[\Sistemas\Vendas\NotaI->COFINS_CST              ]
                VL_BC_COFINS   =[\Sistemas\Vendas\NotaI->COFINS_BC               ]
                ALIQ_COFINS    =[\Sistemas\Vendas\NotaI->COFINS_Aliquota         ]
                QUANT_BC_COFINS=0
                ALIQ_COFINS2   =0
                VL_COFINS      =[\Sistemas\Vendas\NotaI->COFINS_Valor            ]
    
                VL_OPR         =0
    
                VR_ACRESC      =[\Sistemas\Vendas\NotaI->Valor Frete Total       ]+
                                [\Sistemas\Vendas\NotaI->Valor Seguro Total      ]+
                                [\Sistemas\Vendas\NotaI->Valor OutDesp Total     ]
    
                VL_OPR=(VL_ITEM-VL_DESC)+
                       (VL_IPI+VL_ICMS_ST)+
                       VR_ACRESC
                ;-----------------------------------------------------------------
    
    
                wwitem=wwitem+1
                ;**************************************************************************
                ;*Atualiza dados dos itens da nota
                ;************************************************************************** 
                Moveto "MMFMVI4"
                End Down 
                [XREF              ]=FXREF
                [FILIAL            ]="00"
                [MATERIAL          ]=[\Sistemas\Vendas\NotaI->Codigo do Item          ]         
                [QUANT             ]=[\Sistemas\Vendas\NotaI->Quantidade              ]
                [VL_UNIT           ]=[\Sistemas\Vendas\NotaI->Preco Unitario          ]
                [CDFISC            ]=SubStr([\Sistemas\Vendas\NotaI->CFO],1,1)+"."+SubStr([\Sistemas\Vendas\NotaI->CFO],2,3)
    
                [TRIBICM           ]=PegaTpImposto("ICMS","",[\Sistemas\Vendas\NotaI->Tipo Tributacao])
                Switch
                  Case SYS_CODIGO_CLIENTE="0193" And [\Sistemas\Vendas\NotaI->Tipo Tributacao]="O": [TRIBICM]="4"
                EndSwitch
                [TRIB2ICM          ]=""
                If ALIQ_RD_ICMS>0
                   Then [RED_BSCALC        ]=100-ALIQ_RD_ICMS
                   Else [RED_BSCALC        ]=100
                EndIf
                [BC_ICMS           ]=VL_BC_ICMS           
                [ALIQICM           ]=ALIQ_ICMS
                [ICMSNORMAL        ]=VL_ICMS
    
                If [\Sistemas\Vendas\NotaI->Tributacao de ICMS]="S"
                  Then
                      [TRIBST      ]=PegaTpImposto("ICMS","",[\Sistemas\Vendas\NotaI->Tipo Tributacao])
                      If SubStr([\Sistemas\Vendas\NotaI->Tipo Tributacao],2,2)="10" Or
                         SubStr([\Sistemas\Vendas\NotaI->Tipo Tributacao],2,2)="30" Or
                         SubStr([\Sistemas\Vendas\NotaI->Tipo Tributacao],2,2)="70"
                         Then
                              [BCALC_ST    ]=VL_BC_ICMS_ST
                              [ALIQ_ST     ]=ALIQ_ST
                              [VL_ST       ]=VL_ICMS_ST
                              [IVA         ]=MVA_ST
                      EndIf
    
                EndIf
    
                [TRIBIPI           ]=PegaTpImposto("IPI","S",[\Sistemas\Vendas\NotaI->IPI_CST])
                Switch
                  Case SYS_CODIGO_CLIENTE="0193" And[\Sistemas\Vendas\NotaI->Tributacao de IPI]="I": [TRIBIPI]="3"
                EndSwitch
                [BCALC_IPI         ]=VL_BC_IPI
                [ALIQIPI           ]=ALIQ_IPI
                [VL_IPI            ]=VL_IPI
    
                If [\Sistemas\Vendas\NotaI->Tipo do Item]="C"
                   Then
                        [TRIBISS   ]=PegaTpImposto("ISSQN","",[\Sistemas\Vendas\NotaI->Tributacao de ISSQN])
                        [ALIQISS   ]=[\Sistemas\Vendas\NotaI->Aliquota de ISSQN       ]
                        [BCALC_ISS ]=[\Sistemas\Vendas\NotaI->Preco Total             ]
                        [VL_ISS    ]=Round(([\Sistemas\Vendas\NotaI->Preco Total      ]*
                                            [\Sistemas\Vendas\NotaI->Aliquota de ISSQN])/100,2)
                        [CFPS      ]=""
                EndIf
    
                [TRIBPIS           ]=[\Sistemas\Vendas\NotaI->PIS_CST]
                If [\Sistemas\Vendas\NotaI->PIS_Aliquota]>0
                   Then
                        [BCALC_PIS         ]=VL_BC_PIS 
                        [ALIQ_PIS          ]=ALIQ_PIS
                        [VL_PIS            ]=VL_PIS
                EndIf
    
                [TRIBCOFINS        ]=[\Sistemas\Vendas\NotaI->COFINS_CST]
                If [\Sistemas\Vendas\NotaI->COFINS_Aliquota]>0
                   Then
                        [BCALC_COFINS      ]=VL_BC_COFINS 
                        [ALIQ_COFINS       ]=ALIQ_COFINS
                        [VL_COFINS         ]=VL_COFINS 
                EndIf
    
                [ACRESCIMO         ]=VR_ACRESC
                [DESCONTO          ]=VL_DESC
                [CODAPUR           ]=""
                [IND_ESP           ]=""
                [COD_CLASSE        ]=""
                [IND_REC           ]=""
                [DT_APROP          ]=""
                [COD_MATER2        ]=""
                [UNIDADEMOV        ]=[\Sistemas\Vendas\NotaI->Unidade Fiscal]
    
                If [\Sistemas\Vendas\NotaI->Tipo do Item]="C"
                   Then [IS_SERV           ]="S"
                   Else [IS_SERV           ]="M"
                EndIf
                If NotaAtualizaEstoque="S" And ItemControlaEstoque="S"
                   Then [MOV_ESTOQUE       ]="1"
                   Else [MOV_ESTOQUE       ]="0"
                EndIf   
                If ConsumidorFinal="S" And 
                   [\Sistemas\Vendas\NotaI->Aliquota de ICMS]>0 And            
                   [\Sistemas\Vendas\NotaI->Valor do IPI    ]>0            
                   Then [ICMS_IPI     ]="1"
                   Else [ICMS_IPI     ]="0"
                EndIf   
      
                If REGIME_TRIB="SIMPLES NACIONAL"
                   Then [CSOSN_ICMS]=CSOSN
                EndIf   
      
                UnlockRecord
    
                Grava_MATER([\Sistemas\Vendas\NotaI->Codigo do Item])
            EndIf
            
            Moveto "\\Sistemas\\Vendas\\NotaI"
            Skip
            If Eot() Then QuitLoop EndIf
          EndWhile
  
          ;**************************************************************************
          ;*Atualiza dados complementares da nota
          ;**************************************************************************

          If SubStr([\Sistemas\Vendas\NotaC->Codigo do Documento],1,3)="NFE" 
             Then
                  Moveto "MMFMVI7"
                  End Down
                  [XREF                  ]=FXREF
                  [PREPOSTO              ]=""
                  [UF_PSRV               ]=""
                  [MUNIC_PSRV            ]=""
                  [FORM_INI              ]=""
                  [FORM_FIM              ]=""
                  [CHV_NFE               ]=[\Sistemas\Vendas\NotaC->Chave_Acesso_NFe]
                  [VEIC_ID               ]=""
                  [UF_ID                 ]=""
                  [ATO_EXECUT            ]=""
                  [PREPOST_2             ]=""
                  UnLockRecord
          EndIf
          
          If [\Sistemas\Vendas\NotaC->Frete por Conta]="1" Or
             [\Sistemas\Vendas\NotaC->Frete por Conta]="2" 
             Then
                  Moveto "MMFMVI8"
                  End Down
                  [XREF                  ]=FXREF
                  [CP_TRANSP             ]=""
                  Switch
                    Case [\Sistemas\Vendas\NotaC->Frete por Conta]="1" : [MOD_FRETE]="0"
                    Case [\Sistemas\Vendas\NotaC->Frete por Conta]="2" : [MOD_FRETE]="1"
                  EndSwitch
                  [PLACA_VEIC            ]=[\Sistemas\Vendas\NotaC->Placa do Veiculo   ]
                  [PLACA_UF              ]=[\Sistemas\Vendas\NotaC->UF Veiculo         ]
                  [VOL_TRANSP            ]=[\Sistemas\Vendas\NotaC->Numero de Volumes  ]
                  [VOL_ESPEC             ]=""
                  [VOL_MARCA             ]=""
                  [PESO_LIQ              ]=[\Sistemas\Vendas\NotaC->Peso Liquido       ]
                  [PESO_BRT              ]=[\Sistemas\Vendas\NotaC->Peso Bruto         ]
                  [FEZ_ENTREG            ]=""
                  [LOGR                  ]=""
                  [LOGR_NO               ]=""
                  [COMPLLOGR             ]=""
                  [BAIRRO                ]=""
                  [MUNICIPIO             ]=""
                  [UF                    ]=""
                  [CP_TRANSP2            ]=""
                  UnLockRecord
          EndIf
          
          ;**************************************************************************
          ;*Atualiza dados Frete/Seguro/DespAcessorias da Nota
          ;**************************************************************************
          If [\Sistemas\Vendas\NotaC->Valor do Seguro          ]>0 Or
             [\Sistemas\Vendas\NotaC->Valor Despesas Acessorias]>0 Or
            ([\Sistemas\Vendas\NotaC->Valor do Frete           ]>0 And
             [\Sistemas\Vendas\NotaC->Frete Incluso na Nota    ]="+")
             Then
                  Moveto "MMFMVI9"
                  End Down
                  [XREF                  ]=FXREF
        
                  If [\Sistemas\Vendas\NotaC->Valor do Seguro]>0
                     Then
                          [CFOP_SEG              ]=[\Sistemas\Vendas\NotaC->CFO   ]
                          [TRIB_SEG              ]="9"
                          Switch
                            Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 And
                                 [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","010")
                              [TRIB_SEG              ]=TRIBICM
                            Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","000")
                              [TRIB_SEG              ]=TRIBICM
                            Case [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","030")
                              [TRIB_SEG              ]=TRIBICM
                          EndSwitch

                          If [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 Or
                             [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0
                             Then
                              [ALIQ_SEG              ]=[\Sistemas\Vendas\NotaC->Aliquota de ICMS   ]
                              [IMP_SEG               ]=Round(([\Sistemas\Vendas\NotaC->Valor do Seguro ]*
                                                              [\Sistemas\Vendas\NotaC->Aliquota de ICMS])/100,2)
                          EndIf
                  EndIf
                  
                  If [\Sistemas\Vendas\NotaC->Valor Despesas Acessorias]>0
                     Then
                          [CFOP_DESP             ]=[\Sistemas\Vendas\NotaC->CFO                ]
                          [TRIB_DESP             ]="9"
                          Switch
                            Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 And
                                 [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","010")
                              [TRIB_DESP             ]=TRIBICM
                            Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","000")
                              [TRIB_DESP             ]=TRIBICM
                            Case [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","030")
                              [TRIB_DESP             ]=TRIBICM
                          EndSwitch

                          If [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 Or
                             [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0
                             Then
                              [ALIQ_DESP             ]=[\Sistemas\Vendas\NotaC->Aliquota de ICMS   ]
                              [IMP_DESP              ]=Round(([\Sistemas\Vendas\NotaC->Valor Despesas Acessorias]*
                                                              [\Sistemas\Vendas\NotaC->Aliquota de ICMS])/100,2)
                          EndIf
                  EndIf
        
                  If [\Sistemas\Vendas\NotaC->Valor do Frete           ]>0 And
                     [\Sistemas\Vendas\NotaC->Frete Incluso na Nota    ]="+"
                     Then
                          [CFOP_FRETE            ]=[\Sistemas\Vendas\NotaC->CFO   ]
                          [TRIB_FRETE            ]="9"
                          Switch
                            Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 And
                                 [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","010")
                              [TRIB_FRETE            ]=TRIBICM
                            Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","000")
                              [TRIB_FRETE            ]=TRIBICM
                            Case [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","030")
                              [TRIB_FRETE            ]=TRIBICM
                          EndSwitch

                          If [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 Or
                             [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0
                             Then
                              [ALIQ_FRETE            ]=[\Sistemas\Vendas\NotaC->Aliquota de ICMS   ]
                              [IMP_FRETE             ]=Round(([\Sistemas\Vendas\NotaC->Valor do Frete]*
                                                              [\Sistemas\Vendas\NotaC->Aliquota de ICMS])/100,2)
                          EndIf
                  EndIf
                  
                  UnLockRecord
          EndIf
    Else [MMFMVIM->VLCTABIL  ]=[MMFMVIM->VLCTABIL]+[RegSTemp->Valor Contabil]
   EndIf

   CFOP=SubStr([RegSTemp->Cfo],1,1)+"."+SubStr([RegSTemp->Cfo],2,3)
   
   ;**************************************************************************
   ;*Atualiza dados imposto ICMS da nota fiscal
   ;**************************************************************************

         For wi From 1 To 4
           ALIQUO =0
           VRIMP  =0
           
           Switch
             Case wi=1:
                  TRIB   ="1"
                  ALIQUO =[RegSTemp->Aliquota de Icms ]
                  VROPER =[RegSTemp->Base Calculo Icms]
                  VRIMP  =[RegSTemp->Icms Debitado    ]
             Case wi=2:
                  TRIB   ="2"
                  VROPER =[RegSTemp->Icms Isento      ]
             Case wi=3:
                  TRIB   ="9"
                  If SubStr([RegSTemp->Cfo],2,1)<>"4" 
                     Then VROPER =[RegSTemp->Icms Outros      ]
                  EndIf
                  
                  If SubStr([RegSTemp->Observacao],1,10)="FRETE ALIQ"
                     Then TRIB   ="A"
                  EndIf   
                  
                  Switch
                    Case SYS_CODIGO_CLIENTE="0193": TRIB   ="4"
                  EndSwitch
                  
             Case wi=4:
                  If SubStr([RegSTemp->Cfo],2,1)="4" 
                    Then TRIB   ="S" 
                    Else TRIB   ="6" 
                  endIf
                  Switch
                    Case SYS_CODIGO_CLIENTE="0000":
                    Case SYS_CODIGO_CLIENTE="0167":
                      VROPER =[RegSTemp->Base Calculo Icms]
                      VRIMP  =[RegSTemp->Substituicao Icms]
                    OtherWise:
                      VROPER =[RegSTemp->Substituicao Icms]
                  EndSwitch
           EndSwitch
           If VROPER<=0 And TRIB <> "S"
             Then Loop 
           EndIf
           Moveto "MMFMVI2"
           End
           Down
           [TIPO         ]="S"
           [XREF         ]=FXREF
           [KDIMPOSTO    ]="1"
           [BASE         ]=VROPER
           [ALIQ         ]=ALIQUO
           [ALIQ2        ]=BlankNum()
           [IMPOSTO      ]=VRIMP
           [CDFISC       ]=CFOP
           [SUBCD        ]=""
           [CDTRIB       ]=TRIB
           [OBSERVACOES  ]=[RegSTemp->Observacao]
           [CD2TRIB      ]=""
           [SUBFISC      ]=""
           [CFPS         ]=""
           If ConsumidorFinal="S" And [RegSTemp->Ipi Debitado]>0 And [RegSTemp->ICMS Debitado]>0 
              Then [ICMS_IPI     ]="1"
              Else [ICMS_IPI     ]="0"
           EndIf   
           UnlockRecord
        EndFor

   ;**************************************************************************
   ;*Atualiza dados - Resumo nota fiscal - IPI
   ;**************************************************************************
   For wi From 1 To 3
     ALIQUO =0
     VRIMP  =0

     IF SYS_CODIGO_CLIENTE="0126" then loop endIf
   
     Switch
       Case wi=1:
            TRIB   ="1"
            ALIQUO =[RegSTemp->Aliquota de Ipi  ]
            VROPER =[RegSTemp->Base Calculo Ipi ]
            VRIMP  =[RegSTemp->Ipi Debitado     ]
       Case wi=2:
            TRIB   ="2"
            VROPER =[RegSTemp->Ipi ISento      ]

            Switch
              Case SYS_CODIGO_CLIENTE="0193": TRIB   ="3"
            EndSwitch

       Case wi=3:
            TRIB   ="9"
            VROPER =[RegSTemp->Ipi Outros       ]
     EndSwitch
     If VROPER<=0 Then Loop EndIf

     Moveto "MMFMVI2"
     End
     Down
     [TIPO         ]="S"
     [XREF         ]=FXREF
     [KDIMPOSTO    ]="2"
     [BASE         ]=VROPER
     [ALIQ         ]=ALIQUO
     [ALIQ2        ]=BlankNum()
     [IMPOSTO      ]=VRIMP
     [CDFISC       ]=CFOP
     [SUBCD        ]=""
     [CDTRIB       ]=TRIB
     [OBSERVACOES  ]=[RegSTemp->Observacao]
     [CD2TRIB      ]=""
     [SUBFISC      ]=""
     [CFPS         ]=""
     If ConsumidorFinal="S" And [RegSTemp->Ipi Debitado]>0 And [RegSTemp->ICMS Debitado]>0 
        Then [ICMS_IPI     ]="1"
        Else [ICMS_IPI     ]="0"
     EndIf   
     [CSOSN        ]=CSOSN
     UnlockRecord
   EndFor

   Moveto "RegSTemp"
EndScan
Do_It!
ClearAll
EndProc  ; (Gera_Saida)


;*******************************************************************************
;* Rotina p/ gravar dados referente a saida Itens                              *
;*******************************************************************************
Proc GERA_ECF()
If IsEmpty("RegSTemp")
   Then Return
EndIf

View   "\\Sistemas\\Cadastro\\Empresas"
View   "MMFMVIM"
View   "MMFMVI2"
View   "MMFMVI4"
CoEdit "RegSTemp"
NR = NRecords("RegSTemp")

WEMP="**"
WNUM="**"
WSER="**"

Scan 
  Barra(NR, RecNo())
  Aguarde("Aguarde, Gerando Dados ECF "+BARRA_STRING)

  If [Especie da Nota Fiscal]<>"C/F"
     Then Loop
  EndIf   

  If [Codigo da Empresa    ]<>WEMP Or
     [Numero da Nota Fiscal]<>WNUM Or
     [Serie da Nota Fiscal ]<>WSER
     Then
        WEMP=[Codigo da Empresa    ]
        WNUM=[Numero da Nota Fiscal]
        WSER=[Serie da Nota Fiscal ]

        Moveto "RegSTemp"
        XREF =XREF+1
        FXREF=StrVal(XREF)
        FXREF=AlinhM(FXREF,8)

        ;**************************************************************************
        ;*Atualiza dados da nota
        ;**************************************************************************
        Moveto "MMFMVIM"
        End Down
        [TIPO                         ]="S"         
        [NFISCAL                      ]=AlinhM(SubStr([RegStemp->Numero da Nota Fiscal],2,6),6);kamila
        [NFISCAL2                     ]=AlinhM(SubStr([RegStemp->Numero Varias Notas  ],2,6),6)   
        [FILIAL                       ]="00"
        [XREF                         ]=FXREF
        [UNIDADE                      ]="01"
        [EMISSAO                      ]=AlinhM(StrVal( Year([RegStemp->Data de Emissao])),4)+
                                        AlinhM(StrVal(Month([RegStemp->Data de Emissao])),2)+
                                        AlinhM(StrVal(  Day([RegStemp->Data de Emissao])),2)
        [ENTRADA                      ]=""
        [CDFISC                       ]=SubStr([RegSTemp->CFO],1,1)+"."+SubStr([RegSTemp->CFO],2,3)
        [CP                           ]=""
        [ESPECIE                      ]=Tira_CharNum([RegStemp->Especie da Nota Fiscal      ])
        [SERIE                        ]="001" 
        [VLCTABIL                     ]=[RegStemp->Totalizador Final]-[RegStemp->Totalizador Inicial]
        [VL_VISTA                     ]=BlankNum()   
        [VLCTBRURAL                   ]=[RegsTemp->Descontos                   ]
        [UF                           ]=[RegSTemp->Estado Cliente              ]
        [VISTAPRAZO                   ]=""
        [ENTRAPROP                    ]=""
        [CXADATA                      ]=""
        [CXAVALOR                     ]=BlankNum()
        [CXAHISTC                     ]=""
        [CXAHIST                      ]=""
        [FATUR_3                      ]=BlankNum()
        [FATUR_35                     ]=BlankNum()
        [FATUR_8                      ]=BlankNum()
        [FATUR_20                     ]=BlankNum()
        [INTEG_TO                     ]=""
        [ITENSCAN                     ]=[RegsTemp->Cancelados                  ]
        [TIPDOC                       ]="P"
        [AUX                          ]=""
        [USER                         ]=""
        [REDUCAO_Z                    ]=[RegsTemp->Numero Cupom Reducao        ]
        [SUBFISC                      ]=""
        [TIPDOCFISC                   ]="2D"
        [AIDF_ANO                     ]=""
        [AIDF_NUM                     ]=""
        [VL_FRETE                     ]=BlankNum()
        [VL_SEG                       ]=BlankNum()
        [VL_DA                        ]=BlankNum()
        [HREMISSAO                    ]=""
        [HR_E_S_PRD                   ]=""
        [SITUACAO                     ]=""
        If Not IsBlank([RegSTemp->Data de Saida  ])
           Then [SAIDA                ]=AlinhM(StrVal( Year([RegSTemp->Data de Saida  ])),4)+
                                        AlinhM(StrVal(Month([RegSTemp->Data de Saida  ])),2)+
                                        AlinhM(StrVal(  Day([RegSTemp->Data de Saida  ])),2)
        EndIf                                
        [COD_DOCIMP                   ]=""
        [NUM_DOCIMP                   ]=""
        [NUMDESPEXD                   ]=""
        [DATAEMBEXD                   ]=""
        [VALDESPEXD                   ]=BlankNum()
        [CODMOEDEXD                   ]=""
        [TIPO_CONTR_PIS_COFINS        ]=""
        [SUBSERIE                     ]=""
        [NUM_DRBACK                   ]=""
        [TP_LIGACAO                   ]=""         
        [COD_GRUTEN                   ]=""
        [TP_ASSINAN                   ]=""
        [VL_LIQUIDO                   ]=BlankNum()
        [IND_FRETE                    ]=""
        [IND_SEGURO                   ]=""
        [IND_DA                       ]=""
        [CP_2                         ]=""
        [NUM_REGEXP                   ]=""
        UnlockRecord

   EndIf

   CFOP=SubStr([RegSTemp->Cfo],1,1)+"."+SubStr([RegSTemp->Cfo],2,3)
   ;**************************************************************************
   ;*Atualiza dados imposto ICMS da nota fiscal
   ;**************************************************************************
   For wi From 1 To 4
     ALIQUO =0
     VRIMP  =0
     Switch
       Case wi=1:
            TRIB   ="1"
            ALIQUO =[RegSTemp->Aliquota de Icms ]
            VROPER =[RegSTemp->Base Calculo Icms]
            VRIMP  =[RegSTemp->Icms Debitado    ]
       Case wi=2:
            TRIB   ="2"
            VROPER =[RegSTemp->Icms ISento      ]
       Case wi=3:
            TRIB   ="9"
            VROPER =[RegSTemp->Icms Outros      ]
       Case wi=4:
            TRIB   ="6"
            Switch
              Case SYS_CODIGO_CLIENTE="0000":
              OtherWise:
                VROPER =[RegSTemp->Substituicao Icms]
            EndSwitch
     EndSwitch
     If VROPER<=0 Then Loop EndIf

     Moveto "MMFMVI2"
     End
     Down
     [TIPO         ]="S"
     [XREF         ]=FXREF
     [KDIMPOSTO    ]="1"
     [BASE         ]=VROPER
     [ALIQ         ]=ALIQUO
     [ALIQ2        ]=BlankNum()
     [IMPOSTO      ]=VRIMP
     [CDFISC       ]=CFOP
     [SUBCD        ]=""
     [CDTRIB       ]=TRIB
     [OBSERVACOES  ]=[RegSTemp->Observacao]
     [CD2TRIB      ]=""
     [SUBFISC      ]=""
     [CFPS         ]=""
     [ICMS_IPI     ]="0"
     UnlockRecord
   EndFor

   Moveto "RegSTemp"
EndScan
Do_It!
ClearAll
EndProc  ; (Gera_ECF)

;*******************************************************************************
;* Rotina p/ gravar dados referente a entrada Itens                            *
;*******************************************************************************
Proc GERA_ENTRADA_ESTOQUE()
If IsEmpty("RegETemp")
   Then Return
EndIf

View   "\\Sistemas\\Cadastro\\Destinat"
View   "\\Sistemas\\Cadastro\\Cidades"
View   "\\Sistemas\\Estoque\\Itens"
View   "\\Sistemas\\Estoque\\NotaEC"
View   "\\Sistemas\\Estoque\\NotaEI"
View   "MMFMVIM"
View   "MMFMVI2"
View   "MMFMVI4"
View   "MMFMVI6"
View   "MMFMVI7"
View   "MMFMVI8"
View   "MMFMVI9"
View   "MMMATER"
View   "MMUNIDM"
View   "MMSRC"
CoEdit "RegETemp"
NR = NRecords("RegETemp")

WEMP="**"
WNUM="**"

Scan
    Barra(NR, RecNo())
    Aguarde("Aguarde, Gerando Entradas/Estoque "+BARRA_STRING)

    If [Emitente da Nota Fiscal]<>"T"
       Then Loop
    EndIf   

    If [Codigo da Empresa    ]<>WEMP Or
       [Numero do Lancamento ]<>WNUM
       Then

        WEMP=[Codigo da Empresa    ]
        WNUM=[Numero do Lancamento ]

        Moveto "\\Sistemas\\Estoque\\NotaEC"
        Moveto [Numero do Lancamento]
        Locate WNUM
        If Not RetVal
           Then Moveto "RegETemp"
                Loop
        EndIf

        Grava_SRC([\Sistemas\Estoque\NotaEC->Tipo],[\Sistemas\Estoque\NotaEC->Codigo],"Regetemp")
        If [\Sistemas\Estoque\NotaEC->Tipo de Operacao]="A"
           Then ConsumidorFinal="S"
           Else ConsumidorFinal="N"
        EndIf

        Moveto "RegETemp"

        XREF=XREF+1
        FXREF=StrVal(XREF)
        FXREF=AlinhM(FXREF,8)

        ;**************************************************************************
        ;*Atualiza dados da nota
        ;**************************************************************************
        Moveto "MMFMVIM"
        End Down
        [TIPO                         ]="E"
        [NFISCAL                      ]= AlinhM(SubStr([RegEtemp->Numero da Nota Fiscal],2,6),8)
        [NFISCAL2                     ]=""
        [FILIAL                       ]="00"
        [XREF                         ]=FXREF
        [UNIDADE                      ]="00"
        [EMISSAO                      ]=AlinhM(StrVal( Year([RegEtemp->Data de Emissao])),4)+
                                        AlinhM(StrVal(Month([RegEtemp->Data de Emissao])),2)+
                                        AlinhM(StrVal(  Day([RegEtemp->Data de Emissao])),2)
        [ENTRADA                      ]=AlinhM(StrVal( Year([RegEtemp->Data de Entrada])),4)+
                                        AlinhM(StrVal(Month([RegEtemp->Data de Entrada])),2)+
                                        AlinhM(StrVal(  Day([RegEtemp->Data de Entrada])),2)
        [CDFISC                       ]=SubStr([RegETemp->CFO],1,1)+"."+SubStr([RegETemp->CFO],2,3)
        [CP                           ]=""
        Switch
          Case VSDGCOD=1 : 
	          If Not IsBlank([RegETemp->CGC])
	             Then CNPJ=Tira_Formato_CGC_CPF([RegETemp->CGC])
	                  If Len([RegETemp->CGC]) = 18
	                     Then [CP]=SubStr(CNPJ,1,8)+ SubStr(CNPJ,11,2)
	                     Else [CP]=SubStr(CNPJ,1,10)
	                  EndIf
	          EndIf
          Case VSDGCOD=2 : [CP]=CodigoMaster
        EndSwitch
        [ESPECIE                      ]=[RegEtemp->Especie da Nota Fiscal      ]
        [SERIE                        ]=[RegEtemp->Serie da Nota Fiscal]
        [VLCTABIL                     ]=[RegETemp->Valor Contabil]
        [VL_VISTA                     ]=BlankNum()   
        [VLCTBRURAL                   ]=BlankNum()
        [UF                           ]=[\Sistemas\Estoque\NotaEC->UF]
        Switch
           Case  [\Sistemas\Estoque\Notaec->Tipo de Pagamento] = "V":[VISTAPRAZO]="1"
           Case  [\Sistemas\Estoque\Notaec->Tipo de Pagamento] = "P":[VISTAPRAZO]="2"
           Case  [\Sistemas\Estoque\Notaec->Tipo de Pagamento] = "O":[VISTAPRAZO]="3"
        EndSwitch
        [ENTRAPROP                    ]=""
        [CXADATA                      ]=""
        [CXAVALOR                     ]=BlankNum()
        [CXAHISTC                     ]=""
        [CXAHIST                      ]=""
        [FATUR_3                      ]=BlankNum()
        [FATUR_35                     ]=BlankNum()
        [FATUR_8                      ]=BlankNum()
        [FATUR_20                     ]=BlankNum()
        [INTEG_TO                     ]=""
        [ITENSCAN                     ]=BlankNum()
        [TIPDOC                       ]=[RegETemp->Emitente da Nota Fiscal     ]
        Switch
          Case [RegETemp->Cancelada]="S"              : [TIPDOC]="CN"
          Case [RegEtemp->Especie da Nota Fiscal]="CTR" And
               [RegEtemp->Frete por Conta     ]="1"   : [TIPDOC]="CI"
          Case [RegEtemp->Especie da Nota Fiscal]="CTR" And
               [RegEtemp->Frete por Conta     ]="2"   : [TIPDOC]="FO"
        EndSwitch
        [AUX                          ]=""
        [USER                         ]=""
        [REDUCAO_Z                    ]=""
        [SUBFISC                      ]=""
        Switch
          Case [RegETemp->Serie da Nota Fiscal]="M1"  : [TIPDOCFISC]="01"
          Case [RegETemp->Serie da Nota Fiscal]="M-1" : [TIPDOCFISC]="01"
          Case [RegETemp->Serie da Nota Fiscal]="S-1" : [TIPDOCFISC]="01"
          Case [RegETemp->Serie da Nota Fiscal]="S1"  : [TIPDOCFISC]="01"
          Case [RegETemp->Serie da Nota Fiscal]="M_1" : [TIPDOCFISC]="01"
          Case [RegETemp->Serie da Nota Fiscal]="D"   : [TIPDOCFISC]="02"
          Case SubStr([RegETemp->Codigo do Documento ],1,3)="NFE": [TIPDOCFISC]="55"
          Case [RegETemp->Codigo do Documento ]="NF-E": [TIPDOCFISC]="55"
          Case [RegETemp->Codigo do Documento ]="TEL" : [TIPDOCFISC]="22"
          Case [RegETemp->Codigo do Documento ]="CEM" : [TIPDOCFISC]="06"
          OtherWise                                   : [TIPDOCFISC]=""
        EndSwitch
        [AIDF_ANO                     ]=""
        [AIDF_NUM                     ]=""
        [VL_FRETE                     ]=BlankNum()
        [VL_SEG                       ]=BlankNum()
        [VL_DA                        ]=BlankNum()
        [HREMISSAO                    ]=""
        [HR_E_S_PRD                   ]=""
        [SITUACAO                     ]=""
        Switch
          Case [RegETemp->Cancelada]="S": 
               [SITUACAO]="S"
        EndSwitch
        [SAIDA                        ]=""
        [COD_DOCIMP                   ]=""
        [NUM_DOCIMP                   ]=""
        [NUMDESPEXD                   ]=""
        [DATAEMBEXD                   ]=""
        [VALDESPEXD                   ]=BlankNum()
        [CODMOEDEXD                   ]=""
        [TIPO_CONTR_PIS_COFINS        ]=""
        [SUBSERIE                     ]=""
        [NUM_DRBACK                   ]=""
        [TP_LIGACAO                   ]=""         
        [COD_GRUTEN                   ]=""
        [TP_ASSINAN                   ]=""
        [VL_LIQUIDO                   ]=BlankNum()
        [IND_FRETE                    ]=""
        [IND_SEGURO                   ]=""
        [IND_DA                       ]=""
        [CP_2                         ]=""
        [NUM_REGEXP                   ]=""
        UnlockRecord

        Moveto "RegETemp"
        If [Cancelada]="S"
           Then Loop
        EndIf


        TXDESCTO_TOTAL  =([\Sistemas\Estoque\NotaEC->Valor Desconto]/[\Sistemas\Estoque\NotaEC->Valor Mercadoria])*100

        VRACRESC_TOTAL  =[\Sistemas\Estoque\NotaEC->Valor Despesas Acessorias]+
                         [\Sistemas\Estoque\NotaEC->Valor do Seguro          ]
        If [\Sistemas\Estoque\NotaEC->Frete Incluso na Nota]="+" 
            Then VRACRESC_TOTAL=VRACRESC_TOTAL+[\Sistemas\Estoque\NotaEC->Valor do Frete]
        EndIf
        TXACRESC_TOTAL=(VRACRESC_TOTAL/[\Sistemas\Estoque\NotaEC->Valor Mercadoria])*100

        wwitem=0
        Moveto "\\Sistemas\\Estoque\\NotaEI"
        Moveto [Numero do Lancamento]
        Locate WNUM
        While [Numero do Lancamento]=WNUM

          Moveto [Tipo do Item]
          If Busca_Lookup("Tipo do Item",[Tipo do Item],"SM")
             Then ItemControlaEstoque=SubStr(REG_BUSCA_LOOKUP["Controla Estoque"],1,1)
             Else ItemControlaEstoque="N"
          EndIf
          UnLockRecord
        
          ;--- C lculo p/ escritura‡Æo -------------------------------------
          CFOP           =[\Sistemas\Estoque\NotaEI->CFO                     ]
          VL_ITEM        =[\Sistemas\Estoque\NotaEI->Preco Total             ]
          VL_DESC        =NDecimal((VL_ITEM*TXDESCTO_TOTAL)/100,2)

          CST_ICMS       =[\Sistemas\Estoque\NotaEI->Tipo Tributacao         ]
          ALIQ_ICMS      =[\Sistemas\Estoque\NotaEI->Aliquota de ICMS        ]
          ALIQ_RD_ICMS   =[\Sistemas\Estoque\NotaEI->Aliquota Reduzida BCICMS]
          ALIQ_ST        =[\Sistemas\Estoque\NotaEC->Aliquota de ICMS        ]
          If IsBlank(ALIQ_ICMS)    Or ALIQ_ICMS<=0    Then ALIQ_ICMS=0    EndIf
          If IsBlank(ALIQ_RD_ICMS) Or ALIQ_RD_ICMS<=0 Then ALIQ_RD_ICMS=0 EndIf
          If IsBlank(ALIQ_ST)      Or ALIQ_ST<=0      Then ALIQ_ST=0      EndIf
          VL_BC_ICMS     =[\Sistemas\Estoque\NotaEI->ICMS_BC                 ]
          VL_ICMS        =[\Sistemas\Estoque\NotaEI->Valor do ICMS           ]
          VL_BC_ICMS_ST  =[\Sistemas\Estoque\NotaEI->ICMS_ST_BC              ]
          VL_ICMS_ST     =[\Sistemas\Estoque\NotaEI->ICMS_ST_Valor           ]
          MVA_ST         =[\Sistemas\Estoque\NotaEI->MVA                     ]
          VL_RED_BC      =0

          CST_IPI        =[\Sistemas\Estoque\NotaEI->IPI_CST                 ]
          COD_ENQ        =""
          ALIQ_IPI       =[\Sistemas\Estoque\NotaEI->Aliquota de IPI         ]
          ALIQ_RD_IPI    =[\Sistemas\Estoque\NotaEI->Aliquota Reduzida BCIPI ]
          If IsBlank(ALIQ_IPI)     Or ALIQ_IPI<=0     Then ALIQ_IPI=0     EndIf
          If IsBlank(ALIQ_RD_IPI)  Or ALIQ_RD_IPI<=0  Then ALIQ_RD_IPI=0  EndIf
          VL_BC_IPI      =[\Sistemas\Estoque\NotaEI->IPI_BC                  ]
          VL_IPI         =[\Sistemas\Estoque\NotaEI->Valor do IPI            ]

          CST_PIS        =[\Sistemas\Estoque\NotaEI->PIS_CST                 ]
          VL_BC_PIS      =[\Sistemas\Estoque\NotaEI->PIS_BC                  ]
          ALIQ_PIS       =[\Sistemas\Estoque\NotaEI->PIS_Aliquota            ]
          QUANT_BC_PIS   =0
          ALIQ_PIS2      =0
          VL_PIS         =[\Sistemas\Estoque\NotaEI->PIS_Valor               ]

          CST_COFINS     =[\Sistemas\Estoque\NotaEI->COFINS_CST              ]
          VL_BC_COFINS   =[\Sistemas\Estoque\NotaEI->COFINS_BC               ]
          ALIQ_COFINS    =[\Sistemas\Estoque\NotaEI->COFINS_Aliquota         ]
          QUANT_BC_COFINS=0
          ALIQ_COFINS2   =0
          VL_COFINS      =[\Sistemas\Estoque\NotaEI->COFINS_Valor            ]

          VL_OPR         =0

          PORC_IT_MERC   =([\Sistemas\Estoque\NotaEI->Preco Total]/[\Sistemas\Estoque\NotaEC->Valor Mercadoria])*100 
          VR_ACRESC      =NDecimal((VRACRESC_TOTAL*PORC_IT_MERC)/100,2)

          VL_OPR=(VL_ITEM-VL_DESC)+
                 (VL_IPI+VL_ICMS_ST)+
                 VR_ACRESC
          ;-----------------------------------------------------------------

          wwitem=wwitem+1
          ;**************************************************************************
          ;*Atualiza dados dos itens da nota
          ;************************************************************************** 
          Moveto "MMFMVI4"
          End Down 
          [XREF              ]=FXREF
          [FILIAL            ]="00"
          [MATERIAL          ]=[\Sistemas\Estoque\NotaEI->Codigo do Item          ]         
          [QUANT             ]=[\Sistemas\Estoque\NotaEI->Quantidade              ]
          [VL_UNIT           ]=[\Sistemas\Estoque\NotaEI->Preco Unitario          ]
          [CDFISC            ]=SubStr([\Sistemas\Estoque\NotaEI->CFO],1,1)+"."+SubStr([\Sistemas\Estoque\NotaEI->CFO],2,3)
          [ALIQICM           ]=ALIQ_ICMS
          [TRIBICM           ]=PegaTpImposto("ICMS","",[\Sistemas\Estoque\NotaEI->Tipo Tributacao])
          [TRIB2ICM          ]=""
          If ALIQ_RD_ICMS>0
             Then [RED_BSCALC        ]=100-ALIQ_RD_ICMS
             Else [RED_BSCALC        ]=100
          EndIf
          [BCALC_ST          ]=VL_BC_ICMS
          [TRIBIPI           ]=PegaTpImposto("IPI","E",[\Sistemas\Estoque\NotaEI->IPI_CST])
          [ALIQIPI           ]=ALIQ_IPI
          [TRIBISS           ]=""
          [ALIQISS           ]=BlankNum()
          [IVA               ]=MVA_ST
          [ICMSNORMAL        ]=VL_ICMS
          If [\Sistemas\Estoque\NotaEI->Tipo do Item]="C"
             Then [IS_SERV           ]="S"
             Else [IS_SERV           ]="M"
          EndIf
          [DESCONTO          ]=VL_DESC
          [CODAPUR           ]=""
          [IND_ESP           ]=""
          [BC_ICMS           ]=VL_BC_ICMS
          [ALIQ_ST           ]=ALIQ_ST
          [VL_ST             ]=VL_ICMS_ST
          [BCALC_IPI         ]=VL_BC_IPI
          [VL_IPI            ]=VL_IPI
          [CFPS              ]=""
          [ACRESCIMO         ]=VR_ACRESC
          [COD_CLASSE        ]=""
          [IND_REC           ]=""
          [TRIBST            ]=""
          [ICMS_IPI          ]=""
          If ItemControlaEstoque="S"
             Then [MOV_ESTOQUE       ]="1"
             Else [MOV_ESTOQUE       ]="0"
          EndIf   
          [BCALC_ISS         ]=BlankNum()
          [VL_ISS            ]=BlankNum()
          [TRIBPIS           ]=""
          [BCALC_PIS         ]=VL_BC_PIS
          [ALIQ_PIS          ]=ALIQ_PIS
          [VL_PIS            ]=VL_PIS
          [TRIBCOFINS        ]=""
          [BCALC_COFINS      ]=VL_BC_COFINS
          [ALIQ_COFINS       ]=ALIQ_COFINS
          [VL_COFINS         ]=VL_COFINS
          [DT_APROP          ]=""
          [COD_MATER2        ]=""
          [UNIDADEMOV        ]=[\Sistemas\Estoque\NotaEI->Unidade Fiscal]
          
          UnlockRecord

          Grava_MATER([\Sistemas\Estoque\NotaEI->Codigo do Item]) 

          Moveto "\\Sistemas\\Estoque\\NotaEI"
          Skip
          If Eot() Then QuitLoop EndIf
        EndWhile


          ;**************************************************************************
          ;*Atualiza dados complementares da nota
          ;**************************************************************************

          If [\Sistemas\Estoque\NotaEC->Codigo do Documento]="NF-E" 
             Then
                  Moveto "MMFMVI7"
                  End Down
                  [XREF                  ]=FXREF
                  [PREPOSTO              ]=""
                  [UF_PSRV               ]=""
                  [MUNIC_PSRV            ]=""
                  [FORM_INI              ]=""
                  [FORM_FIM              ]=""
                  [CHV_NFE               ]=[\Sistemas\Estoque\NotaEC->Chave_Acesso_NFe]
                  [VEIC_ID               ]=""
                  [UF_ID                 ]=""
                  [ATO_EXECUT            ]=""
                  [PREPOST_2             ]=""
                  UnLockRecord
          EndIf
          
          ;**************************************************************************
          ;*Atualiza dados Frete/Seguro/DespAcessorias da Nota
          ;**************************************************************************
          If [\Sistemas\Estoque\NotaEC->Valor do Seguro          ]>0 Or
             [\Sistemas\Estoque\NotaEC->Valor Despesas Acessorias]>0 Or
            ([\Sistemas\Estoque\NotaEC->Valor do Frete           ]>0 And
             [\Sistemas\Estoque\NotaEC->Frete Incluso na Nota    ]="+")
             Then
                  Moveto "MMFMVI9"
                  End Down
                  [XREF                  ]=FXREF
        
                  If [\Sistemas\Estoque\NotaEC->Valor do Seguro]>0
                     Then
                          [CFOP_SEG              ]=[\Sistemas\Estoque\NotaEC->CFO   ]
                          [TRIB_SEG              ]="9"
                          Switch
                            Case [\Sistemas\Estoque\NotaEC->Valor ICMS              ]>0 And
                                 [\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","010")
                              [TRIB_SEG              ]=TRIBICM
                            Case [\Sistemas\Estoque\NotaEC->Valor ICMS              ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","000")
                              [TRIB_SEG              ]=TRIBICM
                            Case [\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","030")
                              [TRIB_SEG              ]=TRIBICM
                          EndSwitch

                          If [\Sistemas\Estoque\NotaEC->Valor ICMS              ]>0 Or
                             [\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS ]>0
                             Then
                              [ALIQ_SEG              ]=[\Sistemas\Estoque\NotaEC->Aliquota de ICMS   ]
                              [IMP_SEG               ]=Round(([\Sistemas\Estoque\NotaEC->Valor do Seguro ]*
                                                              [\Sistemas\Estoque\NotaEC->Aliquota de ICMS])/100,2)
                          EndIf
                  EndIf
                  
                  If [\Sistemas\Estoque\NotaEC->Valor Despesas Acessorias]>0
                     Then
                          [CFOP_DESP             ]=[\Sistemas\Estoque\NotaEC->CFO                ]
                          [TRIB_DESP             ]="9"
                          Switch
                            Case [\Sistemas\Estoque\NotaEC->Valor ICMS              ]>0 And
                                 [\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","010")
                              [TRIB_DESP             ]=TRIBICM
                            Case [\Sistemas\Estoque\NotaEC->Valor ICMS              ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","000")
                              [TRIB_DESP             ]=TRIBICM
                            Case [\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","030")
                              [TRIB_DESP             ]=TRIBICM
                          EndSwitch

                          If [\Sistemas\Estoque\NotaEC->Valor ICMS              ]>0 Or
                             [\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS ]>0
                             Then
                              [ALIQ_DESP             ]=[\Sistemas\Estoque\NotaEC->Aliquota de ICMS   ]
                              [IMP_DESP              ]=Round(([\Sistemas\Estoque\NotaEC->Valor Despesas Acessorias]*
                                                              [\Sistemas\Estoque\NotaEC->Aliquota de ICMS])/100,2)
                          EndIf
                  EndIf
        
                  If [\Sistemas\Estoque\NotaEC->Valor do Frete           ]>0 And
                     [\Sistemas\Estoque\NotaEC->Frete Incluso na Nota    ]="+"
                     Then
                          [CFOP_FRETE            ]=[\Sistemas\Estoque\NotaEC->CFO   ]
                          [TRIB_FRETE            ]="9"
                          Switch
                            Case [\Sistemas\Estoque\NotaEC->Valor ICMS              ]>0 And
                                 [\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","010")
                              [TRIB_FRETE            ]=TRIBICM
                            Case [\Sistemas\Estoque\NotaEC->Valor ICMS              ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","000")
                              [TRIB_FRETE            ]=TRIBICM
                            Case [\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS ]>0:
                              TRIBICM=PegaTpImposto("ICMS","","030")
                              [TRIB_FRETE            ]=TRIBICM
                          EndSwitch

                          If [\Sistemas\Estoque\NotaEC->Valor ICMS              ]>0 Or
                             [\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS ]>0
                             Then
                              [ALIQ_FRETE            ]=[\Sistemas\Estoque\NotaEC->Aliquota de ICMS   ]
                              [IMP_FRETE             ]=Round(([\Sistemas\Estoque\NotaEC->Valor do Frete  ]*
                                                              [\Sistemas\Estoque\NotaEC->Aliquota de ICMS])/100,2)
                          EndIf
                  EndIf
                  
                  UnLockRecord
          EndIf

    EndIf

   CFOP=SubStr([RegETemp->Cfo],1,1)+"."+SubStr([RegETemp->Cfo],2,3)
   ;**************************************************************************
   ;*Atualiza dados imposto ICMS da nota fiscal
   ;**************************************************************************
   For wi From 1 To 4
     ALIQUO =0
     VRIMP  =0
     Switch
       Case wi=1:
            TRIB   ="1"
            ALIQUO =[RegETemp->Aliquota de Icms ]
            VROPER =[RegETemp->Base Calculo Icms]
            VRIMP  =[RegETemp->Icms Debitado    ]
       Case wi=2:
            TRIB   ="2"
            VROPER =[RegETemp->Icms ISento      ]
       Case wi=3:
            TRIB   ="9"
            If SubStr([RegETemp->Cfo],2,1)<>"4"
              Then VROPER =[RegETemp->Icms Outros      ]
            EndIf
       Case wi=4:
            If SubStr([RegETemp->Cfo],2,1)="4"
              Then TRIB   ="S"
              Else TRIB   ="6"
            EndIf
            VROPER =[RegETemp->Substituicao Icms]

            If [RegETemp->Substituicao Icms]>0
               Then VROPER =[RegETemp->Icms Outros      ]+[RegETemp->Substituicao Icms]
            EndIf    
     EndSwitch
     If VROPER<=0 And TRIB <>"S"
        Then Loop 
     EndIf

     Moveto "MMFMVI2"
     End
     Down
     [TIPO         ]="E"
     [XREF         ]=FXREF
     [KDIMPOSTO    ]="1"
     [BASE         ]=VROPER
     [ALIQ         ]=ALIQUO
     [ALIQ2        ]=BlankNum()
     [IMPOSTO      ]=VRIMP
     [CDFISC       ]=CFOP
     [SUBCD        ]=""
     [CDTRIB       ]=TRIB
     [OBSERVACOES  ]=[RegETemp->Observacao]
     [CD2TRIB      ]=""
     [SUBFISC      ]=""
     [CFPS         ]=""
     If ConsumidorFinal="S" And [RegETemp->Ipi Debitado]>0 And [RegETemp->ICMS Debitado]>0 
        Then [ICMS_IPI     ]="1"
        Else [ICMS_IPI     ]="0"
     EndIf   
     UnlockRecord
   EndFor

   ;**************************************************************************
   ;*Atualiza dados - Resumo nota fiscal - IPI
   ;**************************************************************************
   For wi From 1 To 3
     ALIQUO =0
     VRIMP  =0
     Switch
       Case wi=1:
            TRIB   ="1"
            ALIQUO =[RegETemp->Aliquota de Ipi  ]
            VROPER =[RegETemp->Base Calculo Ipi ]
            VRIMP  =[RegETemp->Ipi Debitado     ]
       Case wi=2:
            TRIB   ="2"
            VROPER =[RegETemp->Ipi ISento       ]
       Case wi=3:
            TRIB   ="9"
            VROPER =[RegETemp->Ipi Outros       ]
     EndSwitch
     If VROPER<=0 Then Loop EndIf

     Moveto "MMFMVI2"
     End
     Down
     [TIPO         ]="E"
     [XREF         ]=FXREF
     [KDIMPOSTO    ]="2"
     [BASE         ]=VROPER
     [ALIQ         ]=ALIQUO
     [ALIQ2        ]=BlankNum()
     [IMPOSTO      ]=VRIMP
     [CDFISC       ]=CFOP
     [SUBCD        ]=""
     [CDTRIB       ]=TRIB
     [OBSERVACOES  ]=[RegETemp->Observacao]
     [CD2TRIB      ]=""
     [SUBFISC      ]=""
     [CFPS         ]=""
     If ConsumidorFinal="S" And [RegETemp->Ipi Debitado]>0 And [RegETemp->ICMS Debitado]>0 
        Then [ICMS_IPI     ]="1"
        Else [ICMS_IPI     ]="0"
     EndIf   
     UnlockRecord
   EndFor

   Moveto "RegETemp"
EndScan
Do_It!
ClearAll
EndProc  ; (Gera_Entrada_ESTOQUE)

;*******************************************************************************
;* Rotina p/ gravar dados referente a entrada Itens                            *
;*******************************************************************************
Proc GERA_ENTRADA_VENDAS()
If IsEmpty("RegETemp")
   Then Return
EndIf

View   "\\Sistemas\\Cadastro\\Destinat"
View   "\\Sistemas\\Cadastro\\Cidades"
View   "\\Sistemas\\Estoque\\Itens"
View   "\\Sistemas\\Vendas\\Estados"
View   "\\Sistemas\\Vendas\\Destin"
View   "\\Sistemas\\Vendas\\NotaC"
View   "\\Sistemas\\Vendas\\NotaI"
View   "MMFMVIM"
View   "MMFMVI2"
View   "MMFMVI4"
View   "MMFMVI6"
View   "MMFMVI7"
View   "MMFMVI8"
View   "MMFMVI9"
View   "MMMATER"
View   "MMUNIDM"
View   "MMSRC"
CoEdit "RegETemp"
NR = NRecords("RegETemp")

WEMP="**"
WNUM="**"
WSER="**"

Scan
    Barra(NR, RecNo())
    Aguarde("Aguarde, Gerando Entradas/Faturamento "+BARRA_STRING)

    If [Emitente da Nota Fiscal]<>"P"
       Then Loop
    EndIf   

    If [Codigo da Empresa    ]<>WEMP Or
       [Numero da Nota Fiscal]<>WNUM Or
       [Serie da Nota Fiscal ]<>WSER
       Then

        WEMP=[Codigo da Empresa    ]
        WNUM=[Numero da Nota Fiscal]
        WSER=[Serie da Nota Fiscal ]

        Moveto "\\Sistemas\\Vendas\\NotaC"
        Moveto [Codigo da Empresa]
        Locate WEMP,SubStr(WNUM,2,6),WSER
        If Not RetVal
           Then Moveto "RegETemp"
                Loop
        EndIf

        SEM_RED_BCICMS="1"
        Moveto "\\Sistemas\\Vendas\\Destin"
        Moveto [Codigo da Destinacao]
        Locate [\Sistemas\Vendas\NotaC->Codigo da Destinacao]
        If Not Retval
           Then Mensagem("Destina‡Æo nÆo encontrada-[DESTIN] : "+[\Sistemas\Vendas\NotaC->Codigo da Destinacao])
           Else SEM_RED_BCICMS=[\Sistemas\Vendas\Destin->Sem Reducao BCICMS]
        EndIf  
        Moveto "\\Sistemas\\Vendas\\Estados"
        Moveto [UF]
        Locate [\Sistemas\Vendas\NotaC->UF]
        If RetVal
           Then UF_ALIQUOTA_ICMS_INTERNA =[\Sistemas\Vendas\Estados->Aliquota de ICMS_INTERNA]
           Else UF_ALIQUOTA_ICMS_INTERNA =BlankNum()
        EndIf
        Moveto "\\Sistemas\\Vendas\\NotaC"

        Grava_SRC([\Sistemas\Vendas\NotaC->Tipo],[\Sistemas\Vendas\NotaC->Codigo],"Regetemp")

        NotaAtualizaEstoque=[\Sistemas\Vendas\Notac->Atualiza Estoque]
        ConsumidorFinal    =[\Sistemas\Vendas\Notac->Consumidor Final]

        Moveto "RegETemp"

        XREF=XREF+1
        FXREF=StrVal(XREF)
        FXREF=AlinhM(FXREF,8)

        ;**************************************************************************
        ;*Atualiza dados da nota
        ;**************************************************************************
        Moveto "MMFMVIM"
        End Down
        [TIPO                         ]="E"
        [NFISCAL                      ]=AlinhM(SubStr([RegEtemp->Numero da Nota Fiscal],2,6),8)        
        [NFISCAL2                     ]=""
        [FILIAL                       ]="00"
        [XREF                         ]=FXREF
        [UNIDADE                      ]="00"
        [EMISSAO                      ]=AlinhM(StrVal( Year([RegEtemp->Data de Emissao])),4)+
                                        AlinhM(StrVal(Month([RegEtemp->Data de Emissao])),2)+
                                        AlinhM(StrVal(  Day([RegEtemp->Data de Emissao])),2)
        [ENTRADA                      ]=AlinhM(StrVal( Year([RegEtemp->Data de Entrada])),4)+
                                        AlinhM(StrVal(Month([RegEtemp->Data de Entrada])),2)+
                                        AlinhM(StrVal(  Day([RegEtemp->Data de Entrada])),2)
        [CDFISC                       ]=SubStr([RegETemp->CFO],1,1)+"."+SubStr([RegETemp->CFO],2,3)
        [CP                           ]=""
        Switch
          Case VSDGCOD=1 : 
	          If Not IsBlank([RegETemp->CGC])
	             Then CNPJ=Tira_Formato_CGC_CPF([RegETemp->CGC])
	                  If Len([RegETemp->CGC]) = 18
	                     Then [CP]=SubStr(CNPJ,1,8)+ SubStr(CNPJ,11,2)
	                     Else [CP]=SubStr(CNPJ,1,10)
	                  EndIf
	          EndIf
          Case VSDGCOD=2 : [CP]=CodigoMaster
        EndSwitch
        [ESPECIE                      ]=[RegEtemp->Especie da Nota Fiscal]
        Switch
          Case [RegEtemp->Especie da Nota Fiscal]="CTR": [SERIE]="UN"
          Case [RegEtemp->Serie da Nota Fiscal  ]="M-1": [SERIE]=" -"
          Case [RegEtemp->Serie da Nota Fiscal  ]="S-1": [SERIE]="2"
          OtherWise                                    : [SERIE]=[RegEtemp->Serie da Nota Fiscal]
        EndSwitch
        [VLCTABIL                     ]=[RegETemp->Valor Contabil]
        [VL_VISTA                     ]=BlankNum()   
        [VLCTBRURAL                   ]=BlankNum()
        [UF                           ]=[\Sistemas\Vendas\NotaC->UF]
        Switch
           Case  [\Sistemas\Vendas\Notac->Tipo de Pagamento] = "V":[VISTAPRAZO]="1"
           Case  [\Sistemas\Vendas\Notac->Tipo de Pagamento] = "P":[VISTAPRAZO]="2"
           Case  [\Sistemas\Vendas\Notac->Tipo de Pagamento] = "O":[VISTAPRAZO]="3"
        EndSwitch
        [ENTRAPROP                    ]=""
        [CXADATA                      ]=""
        [CXAVALOR                     ]=BlankNum()
        [CXAHISTC                     ]=""
        [CXAHIST                      ]=""
        [FATUR_3                      ]=BlankNum()
        [FATUR_35                     ]=BlankNum()
        [FATUR_8                      ]=BlankNum()
        [FATUR_20                     ]=BlankNum()
        [INTEG_TO                     ]=""
        [ITENSCAN                     ]=BlankNum()
        [TIPDOC                       ]=[RegETemp->Emitente da Nota Fiscal]
        Switch
          Case [RegETemp->Cancelada]="S"              : [TIPDOC]="CN"
          Case [RegEtemp->Especie da Nota Fiscal]="CTR" And
               [RegEtemp->Frete por Conta     ]="1"   : [TIPDOC]="CI"
          Case [RegEtemp->Especie da Nota Fiscal]="CTR" And
               [RegEtemp->Frete por Conta     ]="2"   : [TIPDOC]="FO"
        EndSwitch
        [AUX                          ]=""
        [USER                         ]=""
        [REDUCAO_Z                    ]=""
        [SUBFISC                      ]=""
        Switch
          Case [RegETemp->Serie da Nota Fiscal]="M1"  : [TIPDOCFISC]="01"
          Case [RegETemp->Serie da Nota Fiscal]="M-1" : [TIPDOCFISC]="01"
          Case [RegETemp->Serie da Nota Fiscal]="S-1" : [TIPDOCFISC]="01"
          Case [RegETemp->Serie da Nota Fiscal]="S1"  : [TIPDOCFISC]="01"
          Case [RegETemp->Serie da Nota Fiscal]="M_1" : [TIPDOCFISC]="01"
          Case [RegETemp->Serie da Nota Fiscal]="D"   : [TIPDOCFISC]="02"
          Case SubStr([RegETemp->Codigo do Documento ],1,3)="NFE": [TIPDOCFISC]="55"
          Case [RegETemp->Codigo do Documento ]="NF-E": [TIPDOCFISC]="55"
          OtherWise                                   : [TIPDOCFISC]=""
        EndSwitch
        [AIDF_ANO                     ]=""
        [AIDF_NUM                     ]=""
        [VL_FRETE                     ]=BlankNum()
        [VL_SEG                       ]=BlankNum()
        [VL_DA                        ]=BlankNum()
        [HREMISSAO                    ]=""
        [HR_E_S_PRD                   ]=""
        [SITUACAO                     ]=""
        Switch
          Case [RegETemp->Cancelada]="S": 
               [SITUACAO]="S"
          Case Search([\Sistemas\Vendas\NotaC->Descricao da Destinacao],"INUTILIZ")>0: 
               [SITUACAO]="4"
        EndSwitch
        [SAIDA                        ]=""
        [COD_DOCIMP                   ]=""
        [NUM_DOCIMP                   ]=""
        [NUMDESPEXD                   ]=""
        [DATAEMBEXD                   ]=""
        [VALDESPEXD                   ]=BlankNum()
        [CODMOEDEXD                   ]=""
        [TIPO_CONTR_PIS_COFINS        ]=""
        [SUBSERIE                     ]=""
        [NUM_DRBACK                   ]=""
        [TP_LIGACAO                   ]=""         
        [COD_GRUTEN                   ]=""
        [TP_ASSINAN                   ]=""
        [VL_LIQUIDO                   ]=BlankNum()
        [IND_FRETE                    ]=""
        [IND_SEGURO                   ]=""
        [IND_DA                       ]=""
        [CP_2                         ]=""
        [NUM_REGEXP                   ]=""
        UnlockRecord

        Moveto "RegETemp"
        If [Cancelada]="S"
           Then Loop
        EndIf 

        TXDESCTO_TOTAL  =([\Sistemas\Vendas\NotaC->Valor Desconto]/[\Sistemas\Vendas\NotaC->Valor Mercadoria])*100

        VRACRESC_TOTAL  =[\Sistemas\Vendas\NotaC->Valor Despesas Acessorias]+
                         [\Sistemas\Vendas\NotaC->Valor do Seguro          ]
        If [\Sistemas\Vendas\NotaC->Frete Incluso na Nota]="+" 
            Then VRACRESC_TOTAL=VRACRESC_TOTAL+[\Sistemas\Vendas\NotaC->Valor do Frete]
        EndIf
        TXACRESC_TOTAL=(VRACRESC_TOTAL/[\Sistemas\Vendas\NotaC->Valor Mercadoria])*100

        wwitem= 0
        Moveto "\\Sistemas\\Vendas\\NotaI"
        Moveto [Codigo da Empresa]
        Locate WEMP,SubStr(WNUM,2,6),WSER
        While [Codigo da Empresa    ]=WEMP  And
              [Numero Do Documento  ]=SubStr(WNUM,2,6)  And
              [Serie Do Documento   ]=WSER 

          If [Situacao_Item]<>"C" Then
              Moveto [Tipo do Item]
              If Busca_Lookup("Tipo do Item",[Tipo do Item],"SM")
                 Then ItemControlaEstoque=SubStr(REG_BUSCA_LOOKUP["Controla Estoque"],1,1)
                 Else ItemControlaEstoque="N"
              EndIf
              UnLockRecord
    
              ;--- C lculo p/ escritura‡Æo -------------------------------------
              CFOP           =[\Sistemas\Vendas\NotaI->CFO                     ]
              VL_ITEM        =[\Sistemas\Vendas\NotaI->Preco Total             ]
              VL_DESC        =NDecimal((VL_ITEM*TXDESCTO_TOTAL)/100,2)
    
              CST_ICMS       =[\Sistemas\Vendas\NotaI->Tipo Tributacao         ]
              ALIQ_ICMS      =[\Sistemas\Vendas\NotaI->Aliquota de ICMS        ]
              ALIQ_RD_ICMS   =[\Sistemas\Vendas\NotaI->Aliquota Reduzida BCICMS]
              ALIQ_ST        =[\Sistemas\Vendas\NotaI->ICMS_ST_Aliquota        ]
              If IsBlank(ALIQ_ICMS)    Or ALIQ_ICMS<=0    Then ALIQ_ICMS=0    EndIf
              If IsBlank(ALIQ_RD_ICMS) Or ALIQ_RD_ICMS<=0 Then ALIQ_RD_ICMS=0 EndIf
              If IsBlank(ALIQ_ST)      Or ALIQ_ST<=0      Then ALIQ_ST=0      EndIf
              VL_BC_ICMS     =[\Sistemas\Vendas\NotaI->ICMS_BC                 ]
              VL_ICMS        =[\Sistemas\Vendas\NotaI->Valor do ICMS           ]
              VL_BC_ICMS_ST  =[\Sistemas\Vendas\NotaI->ICMS_ST_BC              ]
              VL_ICMS_ST     =[\Sistemas\Vendas\NotaI->ICMS_ST_Valor           ]
              MVA_ST         =[\Sistemas\Vendas\NotaI->MVA                     ]
              VL_RED_BC      =0
    
              CST_IPI        =[\Sistemas\Vendas\NotaI->IPI_CST                 ]
              COD_ENQ        =""
              ALIQ_IPI       =[\Sistemas\Vendas\NotaI->Aliquota de IPI         ]
              ALIQ_RD_IPI    =[\Sistemas\Vendas\NotaI->Aliquota Reduzida BCIPI ]
              If IsBlank(ALIQ_IPI)     Or ALIQ_IPI<=0     Then ALIQ_IPI=0     EndIf
              If IsBlank(ALIQ_RD_IPI)  Or ALIQ_RD_IPI<=0  Then ALIQ_RD_IPI=0  EndIf
              VL_BC_IPI      =[\Sistemas\Vendas\NotaI->IPI_BC                  ]
              VL_IPI         =[\Sistemas\Vendas\NotaI->Valor do IPI            ]
    
              CST_PIS        =[\Sistemas\Vendas\NotaI->PIS_CST                 ]
              VL_BC_PIS      =[\Sistemas\Vendas\NotaI->PIS_BC                  ]
              ALIQ_PIS       =[\Sistemas\Vendas\NotaI->PIS_Aliquota            ]
              QUANT_BC_PIS   =0
              ALIQ_PIS2      =0
              VL_PIS         =[\Sistemas\Vendas\NotaI->PIS_Valor               ]
    
              CST_COFINS     =[\Sistemas\Vendas\NotaI->COFINS_CST              ]
              VL_BC_COFINS   =[\Sistemas\Vendas\NotaI->COFINS_BC               ]
              ALIQ_COFINS    =[\Sistemas\Vendas\NotaI->COFINS_Aliquota         ]
              QUANT_BC_COFINS=0
              ALIQ_COFINS2   =0
              VL_COFINS      =[\Sistemas\Vendas\NotaI->COFINS_Valor            ]
    
              VL_OPR         =0
    
              PORC_IT_MERC   =([\Sistemas\Vendas\NotaI->Preco Total]/[\Sistemas\Vendas\NotaC->Valor Mercadoria])*100 
    
              VR_ACRESC      =NDecimal((VRACRESC_TOTAL*PORC_IT_MERC)/100,2)
    
              VL_OPR=(VL_ITEM-VL_DESC)+
                     (VL_IPI+VL_ICMS_ST)+
                     VR_ACRESC
              ;-----------------------------------------------------------------
            
              wwitem=wwitem+1 
              ;**************************************************************************
              ;*Atualiza dados dos itens da nota
              ;************************************************************************** 
              Moveto "MMFMVI4"
              End Down 
              [XREF              ]=FXREF
              [FILIAL            ]="00"
              [MATERIAL          ]=[\Sistemas\Vendas\NotaI->Codigo do Item          ]         
              [QUANT             ]=[\Sistemas\Vendas\NotaI->Quantidade              ]
              [VL_UNIT           ]=[\Sistemas\Vendas\NotaI->Preco Unitario          ]
              [CDFISC            ]=SubStr([\Sistemas\Vendas\NotaI->CFO],1,1)+"."+SubStr([\Sistemas\Vendas\NotaI->CFO],2,3)
    
              [TRIBICM           ]=PegaTpImposto("ICMS","",[\Sistemas\Vendas\NotaI->Tipo Tributacao])
              Switch
                Case SYS_CODIGO_CLIENTE="0193" And [\Sistemas\Vendas\NotaI->Tipo Tributacao]="O": [TRIBICM]="4"
              EndSwitch
              [TRIB2ICM          ]=""
              If ALIQ_RD_ICMS>0
                 Then [RED_BSCALC        ]=100-ALIQ_RD_ICMS
                 Else [RED_BSCALC        ]=100
              EndIf
              [BC_ICMS           ]=VL_BC_ICMS 
              [ALIQICM           ]=ALIQ_ICMS
              [ICMSNORMAL        ]=VL_ICMS
    
              If [\Sistemas\Vendas\NotaI->Tributacao de ICMS]="S"
                Then
                    [TRIBST      ]=PegaTpImposto("ICMS","",[\Sistemas\Vendas\NotaI->Tipo Tributacao])
                    If SubStr([\Sistemas\Vendas\NotaI->Tipo Tributacao],2,2)="10" Or
                       SubStr([\Sistemas\Vendas\NotaI->Tipo Tributacao],2,2)="30" Or
                       SubStr([\Sistemas\Vendas\NotaI->Tipo Tributacao],2,2)="70"
                       Then
                            [BCALC_ST    ]=VL_BC_ICMS_ST
                            [ALIQ_ST     ]=ALIQ_ST
                            [VL_ST       ]=VL_ICMS_ST
                            [IVA         ]=MVA_ST
                    EndIf
    
              EndIf
    
              [TRIBIPI           ]=PegaTpImposto("IPI","S",[\Sistemas\Vendas\NotaI->IPI_CST])
              Switch
                Case SYS_CODIGO_CLIENTE="0193" And[\Sistemas\Vendas\NotaI->Tributacao de IPI]="I": [TRIBIPI]="3"
              EndSwitch
              [BCALC_IPI         ]=VL_BC_IPI
              [ALIQIPI           ]=ALIQ_IPI
              [VL_IPI            ]=VL_IPI
    
              If [\Sistemas\Vendas\NotaI->Tipo do Item]="C"
                 Then
                      [TRIBISS   ]=PegaTpImposto("ISSQN","",[\Sistemas\Vendas\NotaI->Tributacao de ISSQN])
                      [ALIQISS   ]=[\Sistemas\Vendas\NotaI->Aliquota de ISSQN       ]
                      [BCALC_ISS ]=[\Sistemas\Vendas\NotaI->Preco Total             ]
                      [VL_ISS    ]=Round(([\Sistemas\Vendas\NotaI->Preco Total      ]*
                                          [\Sistemas\Vendas\NotaC->Aliquota de ISSQN])/100,2)
                      [CFPS      ]=""
              EndIf
    
              [TRIBPIS           ]=CST_PIS
              [BCALC_PIS         ]=VL_BC_PIS
              [ALIQ_PIS          ]=ALIQ_PIS
              [VL_PIS            ]=VL_PIS
    
              [TRIBCOFINS        ]=CST_COFINS
              [BCALC_COFINS      ]=VL_BC_COFINS
              [ALIQ_COFINS       ]=ALIQ_COFINS
              [VL_COFINS         ]=VL_COFINS 
              [ACRESCIMO         ]=VR_ACRESC 
              [DESCONTO          ]=VL_DESC
              [CODAPUR           ]=""
              [IND_ESP           ]=""
              [COD_CLASSE        ]=""
              [IND_REC           ]=""
              [DT_APROP          ]=""
              [COD_MATER2        ]=""
              [UNIDADEMOV        ]=[\Sistemas\Vendas\NotaI->Unidade Fiscal]
    
              If [\Sistemas\Vendas\NotaI->Tipo do Item]="C"
                 Then [IS_SERV           ]="S"
                 Else [IS_SERV           ]="M"
              EndIf
              If NotaAtualizaEstoque="S" And ItemControlaEstoque="S"
                 Then [MOV_ESTOQUE       ]="1"
                 Else [MOV_ESTOQUE       ]="0"
              EndIf   
              If ConsumidorFinal="S" And 
                 [\Sistemas\Vendas\NotaI->Aliquota de ICMS]>0 And            
                 [\Sistemas\Vendas\NotaI->Valor do IPI    ]>0            
                 Then [ICMS_IPI     ]="1"
                 Else [ICMS_IPI     ]="0"
              EndIf   
              UnlockRecord
    
              Grava_MATER([\Sistemas\Vendas\NotaI->Codigo do Item])
          EndIf

          Moveto "\\Sistemas\\Vendas\\NotaI"
          Skip
          If Eot() Then QuitLoop EndIf
        EndWhile

        ;**************************************************************************
        ;*Atualiza dados complementares da nota
        ;**************************************************************************
          If SubStr([\Sistemas\Vendas\NotaC->Codigo do Documento],1,3)="NFE" 
             Then
                  Moveto "MMFMVI7"
                  End Down
                  [XREF                  ]=FXREF
                  [PREPOSTO              ]=""
                  [UF_PSRV               ]=""
                  [MUNIC_PSRV            ]=""
                  [FORM_INI              ]=""
                  [FORM_FIM              ]=""
                  [CHV_NFE               ]=[\Sistemas\Vendas\NotaC->Chave_Acesso_NFe]
                  [VEIC_ID               ]=""
                  [UF_ID                 ]=""
                  [ATO_EXECUT            ]=""
                  [PREPOST_2             ]=""
                  UnLockRecord
          EndIf
          
        If [\Sistemas\Vendas\NotaC->Frete por Conta]="1" Or
           [\Sistemas\Vendas\NotaC->Frete por Conta]="2" 
           Then
                Moveto "MMFMVI8"
                End Down
                [XREF                  ]=FXREF
                [CP_TRANSP             ]=""
                Switch
                  Case [\Sistemas\Vendas\NotaC->Frete por Conta]="1" : [MOD_FRETE]="0"
                  Case [\Sistemas\Vendas\NotaC->Frete por Conta]="2" : [MOD_FRETE]="1"
                EndSwitch
                [PLACA_VEIC            ]=[\Sistemas\Vendas\NotaC->Placa do Veiculo   ]
                [PLACA_UF              ]=[\Sistemas\Vendas\NotaC->UF Veiculo         ]
                [VOL_TRANSP            ]=[\Sistemas\Vendas\NotaC->Numero de Volumes  ]
                [VOL_ESPEC             ]=""
                [VOL_MARCA             ]=""
                [PESO_LIQ              ]=[\Sistemas\Vendas\NotaC->Peso Liquido       ]
                [PESO_BRT              ]=[\Sistemas\Vendas\NotaC->Peso Bruto         ]
                [FEZ_ENTREG            ]=""
                [LOGR                  ]=""
                [LOGR_NO               ]=""
                [COMPLLOGR             ]=""
                [BAIRRO                ]=""
                [MUNICIPIO             ]=""
                [UF                    ]=""
                [CP_TRANSP2            ]=""
                UnLockRecord
        EndIf

        ;**************************************************************************
        ;*Atualiza dados Frete/Seguro/DespAcessorias da Nota
        ;**************************************************************************
        If [\Sistemas\Vendas\NotaC->Valor do Seguro          ]>0 Or
           [\Sistemas\Vendas\NotaC->Valor Despesas Acessorias]>0 Or
          ([\Sistemas\Vendas\NotaC->Valor do Frete           ]>0 And
           [\Sistemas\Vendas\NotaC->Frete Incluso na Nota    ]="+")
           Then
                Moveto "MMFMVI9"
                End Down
                [XREF                  ]=FXREF
      
                If [\Sistemas\Vendas\NotaC->Valor do Seguro]>0
                   Then
                        [CFOP_SEG              ]=[\Sistemas\Vendas\NotaC->CFO  ]
                        [TRIB_SEG              ]="9"
                        Switch
                          Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 And
                               [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                            TRIBICM=PegaTpImposto("ICMS","","010")
                            [TRIB_SEG              ]=TRIBICM
                          Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0:
                            TRIBICM=PegaTpImposto("ICMS","","000")
                            [TRIB_SEG              ]=TRIBICM
                          Case [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                            TRIBICM=PegaTpImposto("ICMS","","030")
                            [TRIB_SEG              ]=TRIBICM
                        EndSwitch

                        If [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 Or
                           [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0
                           Then
                            [ALIQ_SEG              ]=[\Sistemas\Vendas\NotaC->Aliquota de ICMS   ]
                            [IMP_SEG               ]=Round(([\Sistemas\Vendas\NotaC->Valor do Seguro ]*
                                                            [\Sistemas\Vendas\NotaC->Aliquota de ICMS])/100,2)
                        EndIf
                EndIf
                
                If [\Sistemas\Vendas\NotaC->Valor Despesas Acessorias]>0
                   Then
                        [CFOP_DESP             ]=[\Sistemas\Vendas\NotaC->CFO   ]
                        [TRIB_DESP             ]="9"
                        Switch
                          Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 And
                               [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                            TRIBICM=PegaTpImposto("ICMS","","010")
                            [TRIB_DESP             ]=TRIBICM
                          Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0:
                            TRIBICM=PegaTpImposto("ICMS","","000")
                            [TRIB_DESP             ]=TRIBICM
                          Case [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                            TRIBICM=PegaTpImposto("ICMS","","030")
                            [TRIB_DESP             ]=TRIBICM
                        EndSwitch

                        If [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 Or
                           [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0
                           Then
                            [ALIQ_DESP             ]=[\Sistemas\Vendas\NotaC->Aliquota de ICMS   ]
                            [IMP_DESP              ]=Round(([\Sistemas\Vendas\NotaC->Valor Despesas Acessorias]*
                                                            [\Sistemas\Vendas\NotaC->Aliquota de ICMS])/100,2)
                        EndIf
                EndIf
      
                If [\Sistemas\Vendas\NotaC->Valor do Frete           ]>0 And
                   [\Sistemas\Vendas\NotaC->Frete Incluso na Nota    ]="+"
                   Then
                        [CFOP_FRETE            ]=[\Sistemas\Vendas\NotaC->CFO  ]
                        [TRIB_FRETE            ]="9"
                        Switch
                          Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 And
                               [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                            TRIBICM=PegaTpImposto("ICMS","","010")
                            [TRIB_FRETE            ]=TRIBICM
                          Case [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0:
                            TRIBICM=PegaTpImposto("ICMS","","000")
                            [TRIB_FRETE            ]=TRIBICM
                          Case [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0:
                            TRIBICM=PegaTpImposto("ICMS","","030")
                            [TRIB_FRETE            ]=TRIBICM
                        EndSwitch

                        If [\Sistemas\Vendas\NotaC->Valor ICMS              ]>0 Or
                           [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS ]>0
                           Then
                            [ALIQ_FRETE            ]=[\Sistemas\Vendas\NotaC->Aliquota de ICMS   ]
                            [IMP_FRETE             ]=Round(([\Sistemas\Vendas\NotaC->Valor do Frete  ]*
                                                            [\Sistemas\Vendas\NotaC->Aliquota de ICMS])/100,2)
                        EndIf
                EndIf
                
                UnLockRecord
        EndIf

    EndIf

   CFOP=SubStr([RegETemp->Cfo],1,1)+"."+SubStr([RegETemp->Cfo],2,3)
   ;**************************************************************************
   ;*Atualiza dados imposto ICMS da nota fiscal
   ;**************************************************************************
   For wi From 1 To 4
     ALIQUO =0
     VRIMP  =0
     Switch
       Case wi=1:
            TRIB   ="1"
            ALIQUO =[RegETemp->Aliquota de Icms ]
            VROPER =[RegETemp->Base Calculo Icms]
            VRIMP  =[RegETemp->Icms Debitado    ]
       Case wi=2:
            TRIB   ="2"
            VROPER =[RegETemp->Icms ISento      ]
       Case wi=3:
            TRIB   ="9"
            VROPER =[RegETemp->Icms Outros      ]
       Case wi=4:
            TRIB   ="6"
            VROPER =[RegETemp->Substituicao Icms]
     EndSwitch
     If VROPER<=0 Then Loop EndIf

     Moveto "MMFMVI2"
     End
     Down
     [TIPO         ]="E"
     [XREF         ]=FXREF
     [KDIMPOSTO    ]="1"
     [BASE         ]=VROPER
     [ALIQ         ]=ALIQUO
     [ALIQ2        ]=BlankNum()
     [IMPOSTO      ]=VRIMP
     [CDFISC       ]=CFOP
     [SUBCD        ]=""
     [CDTRIB       ]=TRIB
     [OBSERVACOES  ]=[RegETemp->Observacao]
     [CD2TRIB      ]=""
     [SUBFISC      ]=""
     [CFPS         ]=""
     If ConsumidorFinal="S" And [RegETemp->Ipi Debitado]>0 And [RegETemp->ICMS Debitado]>0 
        Then [ICMS_IPI     ]="1"
        Else [ICMS_IPI     ]="0"
     EndIf   
     UnlockRecord
   EndFor

   ;**************************************************************************
   ;*Atualiza dados - Resumo nota fiscal - IPI
   ;**************************************************************************
   For wi From 1 To 3
     ALIQUO =0
     VRIMP  =0
     Switch
       Case wi=1:
            TRIB   ="1"
            ALIQUO =[RegETemp->Aliquota de Ipi  ]
            VROPER =[RegETemp->Base Calculo Ipi ]
            VRIMP  =[RegETemp->Ipi Debitado     ]
       Case wi=2:
            TRIB   ="2"
            VROPER =[RegETemp->Ipi ISento       ]
       Case wi=3:
            TRIB   ="9"
            VROPER =[RegETemp->Ipi Outros       ]
     EndSwitch
     If VROPER<=0 Then Loop EndIf

     Moveto "MMFMVI2"
     End
     Down
     [TIPO         ]="E"
     [XREF         ]=FXREF
     [KDIMPOSTO    ]="2"
     [BASE         ]=VROPER
     [ALIQ         ]=ALIQUO
     [ALIQ2        ]=BlankNum()
     [IMPOSTO      ]=VRIMP
     [CDFISC       ]=CFOP
     [SUBCD        ]=""
     [CDTRIB       ]=TRIB
     [OBSERVACOES  ]=[RegETemp->Observacao]
     [CD2TRIB      ]=""
     [SUBFISC      ]=""
     [CFPS         ]=""
     If ConsumidorFinal="S" And [RegETemp->Ipi Debitado]>0 And [RegETemp->ICMS Debitado]>0 
        Then [ICMS_IPI     ]="1"
        Else [ICMS_IPI     ]="0"
     EndIf   
     UnlockRecord
   EndFor

   Moveto "RegETemp"
EndScan
Do_It!
ClearAll
EndProc  ; (Gera_Entrada_VENDAS)


;*******************************************************************************
;* Rotina gravar SRC                                    
;*******************************************************************************
Proc Grava_SRC(Tipo,Codigo,Tabela)
Private Tipo, Codigo,Tabela

CodigoMaster=""

Moveto "\\Sistemas\\Cadastro\\Destinat"
Moveto [Codigo]
Locate CODIGO
If Not RetVal
   Then Return
EndIf   
CodigoMaster=[\Sistemas\Cadastro\Destinat->Conta Contabil]

XMun=[\Sistemas\Cadastro\Destinat->Cidade]
xUF =[\Sistemas\Cadastro\Destinat->UF    ]
cMun=""
Moveto "\\Sistemas\\Cadastro\\Cidades"
Moveto [Cidade]
Locate XMun,xUF
If RetVal
   Then cMun =StrVal([Codigo_Cidade])
Endif

Moveto "MMSRC"
Moveto [Codigo]
Locate CODIGO
If RetVal
   Then Return
EndIf   

End Down
[Codigo                  ]=CODIGO                              
Switch
  Case Tipo="F":
    [FORNEC                  ]="S"
    [CLIENTE                 ]="N"

    [Tipo_CP                 ]="1"
    [CP_2                    ]=""

    Switch
      Case VSDGCOD=1 : [BUYPRAZOC]=""           
      Case VSDGCOD=2 : [BUYPRAZOC]=CodigoMaster
    EndSwitch

  Case Tipo="C":
    [CLIENTE                 ]="S"
    [FORNEC                  ]="N"

    [Tipo_CP                 ]="1"
    [CP_2                    ]=""

    Switch
      Case VSDGCOD=1 : [SELPRAZOD]=""           
      Case VSDGCOD=2 : [SELPRAZOD]=CodigoMaster
    EndSwitch

EndSwitch

[CP                        ]=""
Switch
  Case VSDGCOD=1 : 
    If Not IsBlank([\Sistemas\Cadastro\Destinat->CGC])
      Then CNPJ=Tira_Formato_CGC_CPF([\Sistemas\Cadastro\Destinat->CGC])
           If Len([\Sistemas\Cadastro\Destinat->CGC]) = 18
              Then [CP]=SubStr(CNPJ,1,8)+ SubStr(CNPJ,11,2)
              Else [CP]=SubStr(CNPJ,1,10)
           EndIf
    EndIf
  Case VSDGCOD=2 : [CP]=CodigoMaster
EndSwitch

[NOME                    ]=[\Sistemas\Cadastro\Destinat->Razao Social          ]
[ENDERECO                ]=[\Sistemas\Cadastro\Destinat->Endereco              ]
[CIDADE                  ]=[\Sistemas\Cadastro\Destinat->Cidade                ]
[CEP                     ]=SubStr([\Sistemas\Cadastro\Destinat->CEP            ],1,2)+
                           SubStr([\Sistemas\Cadastro\Destinat->CEP            ],4,3)+
                           SubStr([\Sistemas\Cadastro\Destinat->CEP            ],8,3)
[UF                      ]=[\Sistemas\Cadastro\Destinat->UF                    ]
[CGC                     ]=[\Sistemas\Cadastro\Destinat->CGC                   ]
[INSCR_EST               ]=[\Sistemas\Cadastro\Destinat->IE                    ]
If Not IsBlank([\Sistemas\Cadastro\Destinat->Data_Cadastro])
   Then [DATA_INCL       ]= AlinhM(StrVal( Year([\Sistemas\Cadastro\Destinat->Data_Cadastro])),4)+
                            AlinhM(StrVal(Month([\Sistemas\Cadastro\Destinat->Data_Cadastro])),2)+
                            AlinhM(StrVal(  Day([\Sistemas\Cadastro\Destinat->Data_Cadastro])),2)
EndIf                            
[MUNICIPIO               ]=cMun
[INSCR_MUN               ]=[\Sistemas\Cadastro\Destinat->IM                    ]
[TIPO_LOGR               ]=""
[LOGR                    ]=[\Sistemas\Cadastro\Destinat->Endereco              ]
[NO_LOGR                 ]=""
[CPLLOGR                 ]=""
[TPBAIRRO                ]=""
[BAIRRO                  ]=[\Sistemas\Cadastro\Destinat->Bairro                ]
[TELEFONE                ]=[\Sistemas\Cadastro\Destinat->Telefone              ]
[TIPOEMPR                ]="8"
[CNAE                    ]=[\Sistemas\Cadastro\Destinat->CNAE                  ]
[FANTASIA                ]=[\Sistemas\Cadastro\Destinat->Nome Fantasia EmitDest]
[INSCR_SUFR              ]=[\Sistemas\Cadastro\Destinat->ISUFRAMA              ]

If [FANTASIA]="DIVERSOS" And [CLIENTE]="S" And Tabela="Regstemp"
   Then
        [NOME                    ]=[Regstemp->Razao Social          ]
        [ENDERECO                ]=[Regstemp->Endereco              ]
        [CIDADE                  ]=[Regstemp->Cidade                ]
        [CEP                     ]=SubStr([Regstemp->CEP            ],1,2)+
                                   SubStr([Regstemp->CEP            ],4,3)+
                                   SubStr([Regstemp->CEP            ],8,3)
        [UF                      ]=[Regstemp->Estado Cliente        ]
        [CGC                     ]=[Regstemp->CGC                   ]
        [INSCR_EST               ]=[Regstemp->IE                    ]
        [TIPO_LOGR               ]=""
        [LOGR                    ]=[Regstemp->Endereco              ]
        [NO_LOGR                 ]=""
        [CPLLOGR                 ]=""
        [TPBAIRRO                ]=""
        [BAIRRO                  ]=[Regstemp->Bairro                ]
        [TELEFONE                ]=[Regstemp->Telefone              ]
        [TIPOEMPR                ]="8"
EndIf   

Switch
  Case [\Sistemas\Cadastro\Destinat->Regime_Tributario]="SIMPLES NACIONAL" : [CODREGTRIB]="1"
  Case [\Sistemas\Cadastro\Destinat->Regime_Tributario]="SIMPLES NAC. ESRB": [CODREGTRIB]="2"
  OtherWise                                                                : [CODREGTRIB]="3"
EndSwitch
[ORIGEM]="99"

UnlockRecord

EndProc

;*******************************************************************************
;* Rotina gravar MATER                                  
;*******************************************************************************
Proc Grava_MATER(Codigo)
Private Codigo

Moveto "\\Sistemas\\Estoque\\Itens"
Moveto [Codigo do Item]
Locate CODIGO
If Not RetVal
   Then Return
EndIf
   
Moveto "MMMATER"
Moveto [Codigo do Item]
Locate CODIGO
If RetVal
   Then Return
EndIf   

End Down
[Codigo do Item           ]=[\Sistemas\Estoque\Itens->Codigo do Item          ]
[MATERIAL                 ]=[\Sistemas\Estoque\Itens->Codigo do Item          ]
[DESCRICAO                ]=[\Sistemas\Estoque\Itens->Descricao do Item       ]
[CLASSIFICACAO            ]=""                  ;[\Sistemas\Estoque\Itens->NBM]
[UNIDADE                  ]=[\Sistemas\Estoque\Itens->Unidade Fiscal          ]
[ALIQICM                  ]=[\Sistemas\Estoque\Itens->Aliquota de ICMS        ]
If [\Sistemas\Estoque\Itens->Aliquota Reduzida BCICMS]>0
   Then [RED_BSCALC       ]=100-[\Sistemas\Estoque\Itens->Aliquota Reduzida BCICMS]
   Else [RED_BSCALC       ]=100
EndIf
[ALIQIPI                  ]=[\Sistemas\Estoque\Itens->Aliquota de IPI         ]
If Len([\Sistemas\Estoque\Itens->NCM])=8
   Then [NCM              ]=[\Sistemas\Estoque\Itens->NCM                     ]
EndIf
[SIT_TRIB                 ]=[\Sistemas\Estoque\Itens->Tipo Tributacao         ]
If Len([\Sistemas\Estoque\Itens->NCM])=2
   Then [NCM_ESP          ]=[\Sistemas\Estoque\Itens->NCM                     ]
EndIf
[UNID_PADR                ]=""
[FATOR_CV                 ]=BlankNum()
If Search("EAN13",[\Sistemas\Estoque\Itens->Tipo Codigo_Barras])>0
   Then [EAN              ]=[\Sistemas\Estoque\Itens->Codigo de Barras        ]
EndIf   
[GRUPOFISC                ]=""
[IVA                      ]=[\Sistemas\Estoque\Itens->MVA_1                   ]
If [\Sistemas\Estoque\Itens->Tipo do Item]="C"
   Then [IS_SERV          ]="S"
   Else [IS_SERV          ]="M"
EndIf
[GRP_DNF                  ]=""
[INCENTIVO                ]="N"
[CODAPUR                  ]=""
[VOLUME                   ]=[\Sistemas\Estoque\Itens->Volumes                 ]
[DIFALIQICM               ]=BlankNum()
[COD_LST                  ]=StrVal([\Sistemas\Estoque\Itens->Codigo_Servico   ])
[RDINTERICM               ]=BlankNum()
If [\Sistemas\Estoque\Itens->Tipo do Item]="C"
   Then If [ALIQICM]>=0
          Then [TIPOPRDSRV]="2"
          Else [TIPOPRDSRV]="3"
        Endif  
   Else [TIPOPRDSRV       ]="1"
EndIf
Switch
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="A" : [SITUACAO]="07"
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="C" : [SITUACAO]="  "
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="D" : [SITUACAO]="10"
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="E" : [SITUACAO]="05"
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="F" : [SITUACAO]="10"
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="G" : [SITUACAO]="11"
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="H" : [SITUACAO]="11"
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="I" : [SITUACAO]="11"
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="M" : [SITUACAO]="02"
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="O" : [SITUACAO]="07"
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="P" : [SITUACAO]="04"
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="S" : [SITUACAO]="03"
  Case [\Sistemas\Estoque\Itens->Tipo do Item]="T" : [SITUACAO]="01"
  OtherWise                                        : [SITUACAO]="  "
EndSwitch
GetRecord "\\Sistemas\\Estoque\\Iten_Com" CODIGO To REG_ITEMCOMP        
If RetVal
   Then [EX_IPI           ] = REG_ITEMCOMP["EX_TIPI"]
   Else [EX_IPI           ] = ""
EndIf 
[SUBGRALIQ_DIF            ]=""
[MEDICAMENT               ]="N"
[ALIQPRESUNC              ]=""
[COD_MATER2               ]=""

[ORIGEM]="99"

UnlockRecord

EndProc

;*******************************************************************************
;* Rotina gravar UNIDM                                 
;*******************************************************************************
Proc Gera_UNIDM()
Private CONT

View "MMUNIDM"
Coedit "\\Sistemas\\Estoque\\Unidades"

CONT=1
Scan
  CopyToArray REG
  Moveto "MMUNIDM"
  End Down
  [CODUNIDM  ]= CONT
  [DESCRICAO ]= REG["Descricao da Unidade"]
  [SIGLA     ]= REG["Sigla da Unidade"]
  [UN_ATIVA  ]="S"
  
  Moveto "\\Sistemas\\Estoque\\Unidades"
  CONT=CONT+1
EndScan
Do_it!
ClearAll

EndProc  ;Grava_UNIDM()

;*******************************************************************************
;* Rotina p/ Exibir ou Validar CST conforme tributo                            *
;*******************************************************************************
Proc PegaTpImposto(Trib,TpMov,Valor)
Private Array_Trib, Trib, TpMov,Valor,i,ta,opcao

DynArray Array_Trib[]
Switch
  Case Trib="ICMS":
       ta=11
                      ;;; ?=Codigo MasterMaq
       Array_Trib[1] ="00-1 -Tributa‡Æo integralmente"
       Array_Trib[2] ="10-6 -Tributa‡Æo c/ cobran‡a de ICMS por ST"
       Array_Trib[3] ="20-C -Com redu‡Æo da base de c lculo"
       Array_Trib[4] ="30-D -Isenta ou nÆo tributada e com cobran‡a do ICMS por ST"
       Array_Trib[5] ="40-2 -Isenta"
       Array_Trib[6] ="41-3 -NÆo tributada"
       Array_Trib[7] ="50-5 -SuspensÆo"
       Array_Trib[8] ="51-4 -Diferimento"
       Array_Trib[9] ="60-S -Cobrado anteriormente por ST"
       Array_Trib[10]="70-E -Com redu‡Æo da base de c lculo e com cobran‡a do ICMS por ST"
       Array_Trib[11]="90-9 -Outras"
  Case Trib="IPI" And TpMov="E":
       ta=7
       Array_Trib[1] ="00-1 -Entrada c/ recupera‡Æo de cr‚dito"
       Array_Trib[2] ="01-F -Entrada tributada com al¡quota zero"
       Array_Trib[3] ="02-2 -Entrada isenta"
       Array_Trib[4] ="03-3 -Entrada nÆo tributada"
       Array_Trib[5] ="04-G -Entrada imune"
       Array_Trib[6] ="05-5 -Entrada com suspensÆo"
       Array_Trib[7] ="49-9 -Outras entradas"
  Case Trib="IPI" And TpMov="S":
       ta=7
       Array_Trib[1] ="50-1 -Sa¡da tributada"
       Array_Trib[2] ="51-H -Sa¡da tributada com al¡quota zero"
       Array_Trib[3] ="52-2 -Sa¡da isenta"
       Array_Trib[4] ="53-3 -Sa¡da nÆo tributada"
       Array_Trib[5] ="54-J -Sa¡da imune"
       Array_Trib[6] ="55-5 -Sa¡da com suspensÆo"
       Array_Trib[7] ="99-9 -Outras Saidas"
  Case (Trib="PIS" Or Trib="COFINS"):
       ta=8
       Array_Trib[1] ="01-0 -Tribut vel-BC=Vr opera‡Æo al¡quota normal(Cumulativa/NÆo cumulativa)"
       Array_Trib[2] ="02-1 -Tribut vel-BC=Vr da opera‡Æo(Al¡quota diferenciada)"
      ;Array_Trib[ ] ="03-2 -Tribut vel-BC=Qtde vendidaxal¡quota por unidade de produto)"
       Array_Trib[3] ="04-3 -Tribut vel-Tributa‡Æo monof sica - (Al¡quota zero)"
       Array_Trib[4] ="06-4 -Tribut vel-Al¡quota zero"
       Array_Trib[5] ="07-5 -Isenta da contribui‡Æo"
       Array_Trib[6] ="08-6 -Sem incidˆncia da contribui‡Æo"
       Array_Trib[7] ="09-7 -Com suspensÆo da contribui‡Æo"
       Array_Trib[8] ="99-X -Outras opera‡äes"
      ;Array_Trib[9] ="49-  -Outras opera‡äes de sa¡da"
      ;Array_Trib[10]="99-  -Outras opera‡äes"
      ;Array_Trib[11]="50-  -Com direito cr‚dito-Vinc. exclus. receita tributada MI"
      ;Array_Trib[12]="51-  -Com direito cr‚dito-Vinc. exclus. receita nÆo tributada MI"
      ;Array_Trib[13]="52-  -Com direito cr‚dito-Vinc. exclus. receita EXP"
      ;Array_Trib[14]="53-  -Com direito cr‚dito-Vinc. receita trib. e nÆo trib. MI"
      ;Array_Trib[15]="54-  -Com direito cr‚dito-Vinc. receita trib. MI e EXP"
      ;Array_Trib[16]="55-  -Com direito cr‚dito-Vinc. receita nÆo trib. MI E EXP"
      ;Array_Trib[17]="56-  -Com direito cr‚dito-Vinc. receita trib. e nÆo trib. MI e EXP"
      ;Array_Trib[18]="60-  -Cr‚d. presumido-Aquis. vinc. exclus. a receita trib. MI"
      ;Array_Trib[19]="61-  -Cr‚d. presumido-Aquis. vinc. exclus. a receita nÆo trib. MI"
      ;Array_Trib[20]="62-  -Cr‚d. presumido-Aquis. vinc. exclus. a receita EXP"
      ;Array_Trib[21]="63-  -Cr‚d. presumido-Aquis. vinc. a receitas trib. e nÆo trib. MI"
      ;Array_Trib[22]="64-  -Cr‚d. presumido-Aquis. vinc. a receitas trib. MI e EXP"
      ;Array_Trib[23]="65-  -Cr‚d. presumido-Aquis. vinc. a receitas nÆo trib. MI e EXP"
      ;Array_Trib[24]="66-  -Cr‚d. presumido-Aquis. vinc. a receitas trib. e nÆo trib. MI e EXP"
      ;Array_Trib[25]="67-  -Cr‚d. presumido-Outras opera‡äes"
      ;Array_Trib[26]="70-  -Opera‡Æo de aquisi‡Æo sem direito a cr‚dito"
      ;Array_Trib[27]="71-  -Opera‡Æo de aquisi‡Æo com isen‡Æo"
      ;Array_Trib[28]="72-  -Opera‡Æo de aquisi‡Æo com suspensÆo"
      ;Array_Trib[29]="73-  -Opera‡Æo de aquisi‡Æo a al¡quota zero"
      ;Array_Trib[30]="74-  -Opera‡Æo de aquisi‡Æo sem incidˆncia da contribui‡Æo"
      ;Array_Trib[31]="75-  -Opera‡Æo de aquisi‡Æo por substitui‡Æo tribut ria"
      ;Array_Trib[32]="98-  -Outras opera‡äes de entrada"
      ;Array_Trib[33]="99-  -Outras opera‡äes"
  Case Trib="ISSQN":
       ta=2
       Array_Trib[1] ="D -1 -Tributado"
       Array_Trib[2] ="N -8 -NÆo Incidˆncia"
  OtherWise:
       Return ""
EndSwitch

opcao=""
For i From 1 to ta
    Switch
      Case Trib="ICMS": 
        If SubStr(valor,2,2)=SubStr(Array_Trib[i],1,2)
           Then opcao=RTrim(SubStr(Array_Trib[i],4,1))
                QuitLoop
        EndIf   
      Case Trib="ISSQN": 
        If valor=SubStr(Array_Trib[i],1,1)
           Then opcao=RTrim(SubStr(Array_Trib[i],4,1))
                QuitLoop
        EndIf   
      OtherWise       : 
        If valor=SubStr(Array_Trib[i],1,2)
           Then opcao=RTrim(SubStr(Array_Trib[i],4,1))
                QuitLoop
        EndIf   
    EndSwitch          
EndFor

Return opcao

EndProc

;*******************************************************************************
;* Rotina que gera o arquivo padrao texto para receita
;*******************************************************************************
Proc GERA_ARQUIVO_TEXTO()
Aguarde("Aguarde, Exportando Dados")
gerou_arquivos=False
arquivos=""
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Grava registro FMVIM

If DirExists("\\Sistemas\\Exporta\\Dados\\Mastermc")=0
   Then Cria_Pasta("\\Sistemas\\Exporta\\Dados\\Mastermc")
EndIf

ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\DATA.TXT"
Deleta_Arquivo(ARQ)

Print File ARQ AlinhM(StrVal(Day(VSDGDTINI)),2)+"/"+AlinhM(StrVal(Month(VSDGDTINI)),2)+"/"+AlinhM(StrVal(Year(VSDGDTINI)),4)
Print File ARQ AlinhM(StrVal(Day(VSDGDTFIM)),2)+"/"+AlinhM(StrVal(Month(VSDGDTFIM)),2)+"/"+AlinhM(StrVal(Year(VSDGDTFIM)),4)
Print File ARQ "\n"
Close Printer
arquivos=arquivos+Completa(ARQ,62," ")+"//"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Grava Registro SRC
ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\SRC.TXT"
Deleta_Arquivo(ARQ)
If Not IsEmpty("MMSRC")
   Then
        gerou_arquivos=True
        arquivos=arquivos+Completa(ARQ,62," ")+"//"

        View "MMSRC"
        Scan
          Print File ARQ Completa([E_CDFISC                 ],05," ")
          Print File ARQ Completa([E_ESPECIE                ],03," ")
          Print File ARQ Completa([E_SERIE                  ],03," ")
          Print File ARQ Completa([S_CDFISC                 ],05," ")
          Print File ARQ Valor_Str([BASE_RED                ],10,6)
          Print File ARQ Completa([ONDERESTO                ],01," ")
          Print File ARQ Completa([ONDERCLI                 ],01," ")
          Print File ARQ Valor_Str([ALIQ_IPI                ],5,2)
          Print File ARQ Completa([IS_RURAL                 ],01," ")
          Print File ARQ Completa([DO_CTB                   ],01," ")
          Print File ARQ Completa([BUYPRAZOC                ],08," ")
          Print File ARQ Completa([BUYCAIXAH                ],50," ")
          Print File ARQ Completa([SELPRAZOD                ],08," ")
          Print File ARQ Completa([SELCAIXAH                ],50," ")
          Print File ARQ Valor_Str([BASE_REDCL              ],10,6)
          Print File ARQ Completa([CP                       ],10," ")
          Print File ARQ Completa([NOME                     ],40," ")
          Print File ARQ Completa([CLIENTE                  ],01," ")
          Print File ARQ Completa([FORNEC                   ],01," ")
          Print File ARQ Completa([ENDERECO                 ],40," ")
          Print File ARQ Completa([CIDADE                   ],20," ")
          Print File ARQ Completa([CEP                      ],08," ")
          Print File ARQ Completa([UF                       ],02," ")
          Print File ARQ Completa([CGC                      ],18," ")
          Print File ARQ Completa([INSCR_EST                ],18," ")
          Print File ARQ Completa([Tipo_CP                  ],01," ")
          Print File ARQ Completa([DATA_INCL                ],08,"0")
          Print File ARQ Completa([MUNICIPIO                ],06," ")
          Print File ARQ Completa([BUYCAIXAHC               ],03," ")
          Print File ARQ Completa([SELCAIXAHC               ],03," ")
          Print File ARQ Completa([E_CDFISC2                ],05," ")
          Print File ARQ Completa([S_CDFISC2                ],05," ")
          Print File ARQ Completa([TIPODOC                  ],02," ")
          Print File ARQ Completa([INSCR_MUN                ],15," ")
          Print File ARQ Completa([TIPO_LOGR                ],10," ")
          Print File ARQ Completa([LOGR                     ],40," ")
          Print File ARQ Completa([NO_LOGR                  ],06," ")
          Print File ARQ Completa([CPLLOGR                  ],20," ")
          Print File ARQ Completa([TPBAIRRO                 ],10," ")
          Print File ARQ Completa([BAIRRO                   ],30," ")
          Print File ARQ Completa([TELEFONE                 ],14," ")
          Print File ARQ Completa([BENEFIC                  ],06,"0")
          Print File ARQ AlinhM(StrVal([RETENCS             ]),2)
          Print File ARQ Completa([TIPOEMPR                 ],01,"0")
          Print File ARQ Completa([CNAE                     ],08,"0")
          Print File ARQ Completa([FANTASIA                 ],50," ")
          Print File ARQ Valor_Str([DIFALIQICM1             ],5,2)
          Print File ARQ Valor_Str([DIFALIQICM2             ],5,2)
          Print File ARQ Completa([INSCR_SUFR               ],14," ")
          Print File ARQ Completa([CP_2                     ],20," ")
          Print File ARQ Completa([INTERDEPEN               ],01," ")
          Print File ARQ Completa([CODREGTRIB               ],01," ")
          Print File ARQ Completa([DTINIREGTB               ],08,"0")
          Print File ARQ Completa([ORIGEM                   ],02,"9")
          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Grava Registro MATER
ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\MATER.TXT"
Deleta_Arquivo(ARQ)
If Not IsEmpty("MMMATER")
   Then
        gerou_arquivos=True
        arquivos=arquivos+Completa(ARQ,62," ")+"//"

        View "MMMATER"
        Scan
          Print File ARQ Completa([MATERIAL     ],14," ")
          Print File ARQ Completa([DESCRICAO    ],50," ")
          Print File ARQ Completa([CLASSIFICACAO],12," ")
          Print File ARQ Completa([UNIDADE      ],03," ")
          Print File ARQ Valor_Str([ALIQICM     ],05,2)
          Print File ARQ Valor_Str([RED_BSCALC  ],10,6)
          Print File ARQ Valor_Str([ALIQIPI     ],05,2)
          Print File ARQ Completa([NCM          ],08," ")
          Print File ARQ Completa([SIT_TRIB     ],03," ")
          Print File ARQ Completa([NCM_ESP      ],02," ")
          Print File ARQ Completa([UNID_PADR    ],02," ")
          Print File ARQ Valor_Str([FATOR_CV    ],13,3)
          Print File ARQ Completa([EAN          ],13," ")
          Print File ARQ Completa([GRUPOFISC    ],09," ")
          Print File ARQ Valor_Str([IVA         ],06,2)
          Print File ARQ Completa([IS_SERV      ],01," ")
          Print File ARQ Completa([GRP_DNF      ],03," ")
          Print File ARQ Completa([INCENTIVO    ],01," ")
          Print File ARQ Completa([CODAPUR      ],02," ")
          Print File ARQ Valor_Str([VOLUME      ],05,0)
          Print File ARQ Valor_Str([DIFALIQICM  ],05,2)
          Print File ARQ Completa([COD_LST      ],04," ")
          Print File ARQ Valor_Str([RDINTERICM  ],06,2)
          Print File ARQ Completa([TIPOPRDSRV   ],01," ")
          Print File ARQ Completa([SITUACAO     ],02," ")
          Print File ARQ Completa([EX_IPI       ],03," ")
          Print File ARQ Completa([SUBGRALIQ_DIF],02,"0")
          Print File ARQ Completa([MEDICAMENT   ],01," ")
          Print File ARQ Completa([ALIQPRESUNC  ],01," ")
          Print File ARQ Completa([COD_MATER2   ],60," ")
          Print File ARQ Completa([CATEGORIA    ],02," ")
          Print File ARQ Completa([CODIGO_ANP   ],09," ")
          Print File ARQ Completa([IND_ARMA     ],01," ")
          Print File ARQ Completa([DESC_COMP    ],255," ")
          Print File ARQ Completa([CODSELOIPI   ],06," ")
          Print File ARQ Completa([INDMEDICA    ],01," ")
          Print File ARQ Completa([TIPOPROD     ],01," ")
          Print File ARQ Valor_Str([VLRTABELA   ],14,3)
          Print File ARQ Completa([ENQUADIPI    ],05," ")
          Print File ARQ Completa([DESCRICAO2   ],255," ")
          Print File ARQ Completa("",45," ")
          
          Print File ARQ Completa([INCREGESP    ],02," ")
          Print File ARQ Completa([MARCACOM     ],60," ")
          Print File ARQ Completa([GRUPO        ],02," ")
          Print File ARQ Completa([CCMERCENTR   ],60," ")
          Print File ARQ Completa([CCMERCSAID   ],60," ")
          Print File ARQ Completa([CODBCCRED    ],02," ")
          Print File ARQ Completa([CODNATREC    ],03," ")

          Print File ARQ Completa([TRIB_IPI     ],02," ")
          Print File ARQ Valor_Str([RED_BCIPI   ],10,6)

          Print File ARQ Completa([TRIB_ST      ],03," ")
          Print File ARQ Valor_Str([RED_BCST    ],10,6)
          Print File ARQ Valor_Str([ALIQ_ST     ],05,2)
          
          Print File ARQ Completa([TRIB_PIS     ],02," ")
          Print File ARQ Valor_Str([RED_BCPIS   ],10,6)
          Print File ARQ Valor_Str([ALIQ_PIS    ],08,4)
          
          Print File ARQ Completa([TRIB_COF     ],02," ")
          Print File ARQ Valor_Str([RED_BCCOF   ],10,6)
          Print File ARQ Valor_Str([ALIQ_COF    ],08,4)

          Print File ARQ Completa([TRIB_ISS     ],02," ")
          Print File ARQ Valor_Str([RED_BCISS   ],10,6)
          Print File ARQ Valor_Str([ALIQ_ISS    ],05,2)
          
          Print File ARQ Completa([ORIGEM       ],02,"9")
          Print File ARQ Completa("",08," ")
          Print File ARQ Completa("",60," ")
          Print File ARQ Completa("",09," ")
          
          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf

ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\"+"FMVIM"+PREFIXO+".TXT"
Deleta_Arquivo(ARQ)
If Not IsEmpty("MMFMVIM")
   Then
        gerou_arquivos=True
        arquivos=arquivos+Completa(ARQ,62," ")+"//"

        View "MMFMVIM"
        Scan
          Print File ARQ Completa([TIPO                 ],01," ")
          Print File ARQ Completa([NFISCAL              ],08," ")
          Print File ARQ Completa([NFISCAL2             ],06," ")
          Print File ARQ Completa([FILIAL               ],02," ")
          Print File ARQ Completa([XREF                 ],08," ")
          Print File ARQ Completa([UNIDADE              ],02," ")
          Print File ARQ Completa([EMISSAO              ],08,"0")
          Print File ARQ Completa([ENTRADA              ],08,"0")
          Print File ARQ Completa([CDFISC               ],05," ")
          Print File ARQ Completa([CP                   ],10," ")
          Print File ARQ Completa([ESPECIE              ],03," ")
          Print File ARQ Completa([SERIE                ],03," ")
          Print File ARQ Valor_Str([VLCTABIL            ],13,2)
          Print File ARQ Valor_Str([VL_VISTA            ],13,2)
          Print File ARQ Valor_Str([VLCTBRURAL          ],13,2)
          Print File ARQ Completa([UF                   ],02," ")
          Print File ARQ Completa([VISTAPRAZO           ],01," ")
          Print File ARQ Completa([ENTRAPROP            ],01," ")
          Print File ARQ Completa([CXADATA              ],08,"0")
          Print File ARQ Valor_Str([CXAVALOR            ],13,2)
          Print File ARQ Completa([CXAHISTC             ],03," ")
          Print File ARQ Completa([CXAHIST              ],50," ")
          Print File ARQ Valor_Str([FATUR_3             ],13,2)
          Print File ARQ Valor_Str([FATUR_35            ],13,2)
          Print File ARQ Valor_Str([FATUR_8             ],13,2)
          Print File ARQ Valor_Str([FATUR_20            ],13,2)
          Print File ARQ Completa([INTEG_TO             ],01," ")
          Print File ARQ Valor_Str([ITENSCAN            ],13,2)
          Print File ARQ Completa([TIPDOC               ],02," ")
          Print File ARQ Completa([AUX                  ],03," ")
          Print File ARQ Completa([USER                 ],02," ")
          Print File ARQ Completa([REDUCAO_Z            ],06," ")
          Print File ARQ Completa([SUBFISC              ],02," ")
          Print File ARQ Completa([TIPDOCFISC           ],02," ")
          Print File ARQ Completa([AIDF_ANO             ],04," ")
          Print File ARQ Completa([AIDF_NUM             ],10," ")
          Print File ARQ Valor_Str([VL_FRETE            ],13,2)
          Print File ARQ Valor_Str([VL_SEG              ],13,2)
          Print File ARQ Valor_Str([VL_DA               ],13,2)
          Print File ARQ Completa([HREMISSAO            ],08,"0")
          Print File ARQ Completa([HR_E_S_PRD           ],08,"0")
          Print File ARQ Completa([SITUACAO             ],01," ")
          Print File ARQ Completa([SAIDA                ],08,"0")
          Print File ARQ Completa([COD_DOCIMP           ],01," ")
          Print File ARQ Completa([NUM_DOCIMP           ],10," ")
          Print File ARQ Completa([NUMDESPEXD           ],11,"0")
          Print File ARQ Completa([DATAEMBEXD           ],08,"0")
          Print File ARQ Valor_Str([VALDESPEXD          ],14,2)
          Print File ARQ Completa([CODMOEDEXD           ],03,"0")
          Print File ARQ Completa([TIPO_CONTR_PIS_COFINS],02," ")
          Print File ARQ Completa([SUBSERIE             ],03," ")
          Print File ARQ Completa([NUM_DRBACK           ],20," ")
          Print File ARQ Completa([TP_LIGACAO           ],01," ")
          Print File ARQ Completa([COD_GRUTEN           ],02," ")
          Print File ARQ Completa([TP_ASSINAN           ],01," ")
          Print File ARQ Valor_Str([VL_LIQUIDO          ],13,2)
          Print File ARQ Completa([IND_FRETE            ],01," ")
          Print File ARQ Completa([IND_SEGURO           ],01," ")
          Print File ARQ Completa([IND_DA               ],01," ")
          Print File ARQ Completa([CP_2                 ],20," ")
          Print File ARQ Completa([NUM_REGEXP           ],12," ")
          
          Print File ARQ Completa([TIPOOPER             ],01," ")
          Print File ARQ Completa([UFICMSST             ],02," ")
          Print File ARQ Completa([TIPOCTE              ],01," ")
          Print File ARQ Completa([UFCONSUMO            ],02," ")
          Print File ARQ Completa([NUM_DOC              ],20," ")
          Print File ARQ Completa([NUM_DOC2             ],20," ")
          Print File ARQ Completa([SUBCFOP              ],03," ")
             
          Print File ARQ Completa(SubStr([OBSDOCFISC],001,200),200," ")
          Print File ARQ Completa(SubStr([OBSDOCFISC],201,200),200," ")
          Print File ARQ Completa("",200," ")
          Print File ARQ Completa("",200," ")
          Print File ARQ Completa("",199," ")
          
          Print File ARQ Completa([DTPRESSERV           ],08,"0")
          Print File ARQ Completa([CODCONSUMO           ],02," ")
          Print File ARQ Valor_Str([TOT_FORNEC          ],13,2)
          Print File ARQ Valor_Str([CONSUM_KWH          ],13,0)
          Print File ARQ Valor_Str([SERV_NTRIB          ],13,2)
          Print File ARQ Valor_Str([SERV_TRIB           ],13,2)
          Print File ARQ Valor_Str([SERV_TERC           ],13,2)
          Print File ARQ Completa([IND_TIPREC           ],01," ")
          Print File ARQ Completa([NOMEMESTRE           ],15," ")
          Print File ARQ Completa([CHV_MESTRE           ],32," ")
          Print File ARQ Completa([DTREDUCAOZ           ],08,"0")
          Print File ARQ Completa([ORIGEM               ],02,"9")
          Print File ARQ Completa([DTDOCEXTEM           ],08,"0")
          Print File ARQ Completa([DT_FIM_CON           ],08,"0")
          Print File ARQ Valor_Str([VL_DESC             ],13,2)
          Print File ARQ Valor_Str([VL_ABAT_NT          ],13,2)
          Print File ARQ Completa([IE_EMPRESA           ],18," ")
          Print File ARQ Completa([IE_CP                ],18," ")
          Print File ARQ Completa("",015," ")
          Print File ARQ Completa("",065," ")
          Print File ARQ Completa("",003," ")
          Print File ARQ Completa("",250," ")

          ;Print File ARQ Completa([COD_DOCEXP           ],01," ")
          ;Print File ARQ Completa([N_DEC_EXP            ],11," ")
          ;Print File ARQ Completa([DT_DEC_EXP           ],08,"0")
          ;Print File ARQ Completa([NAT_DECEXP           ],01," ")
          ;Print File ARQ Completa([DT_REGEXP            ],08,"0")
          ;Print File ARQ Completa([N_EMBARQUE           ],18," ")
          ;Print File ARQ Completa([DTCONHECTO           ],08,"0")
          ;Print File ARQ Completa([TPCONHECTO           ],02," ")
          ;Print File ARQ Completa([PAIS                 ],05," ")
          ;Print File ARQ Completa([DT_AVERBA            ],08,"0")
          
          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Grava registro FMVI2
ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\"+"FMVI2"+PREFIXO+".TXT"
Deleta_Arquivo(ARQ)
If Not IsEmpty("MMFMVI2")
   Then
        gerou_arquivos=True
        arquivos=arquivos+Completa(ARQ,62," ")+"//"

        View "MMFMVI2"
        Scan
          Print File ARQ Completa([TIPO                 ],01," ")
          Print File ARQ Completa([XREF                 ],08," ")
          Print File ARQ Completa([KDIMPOSTO            ],01," ")
          Print File ARQ Valor_Str([BASE                ],13,2)
          Print File ARQ Valor_Str([ALIQ                ],05,2)
          Print File ARQ Valor_Str([ALIQ2               ],05,2)
          Print File ARQ Valor_Str([IMPOSTO             ],13,2)
          Print File ARQ Completa([CDFISC               ],05," ")
          Print File ARQ Completa([SUBCD                ],01," ")
          Print File ARQ Completa([CDTRIB               ],01," ")
          Print File ARQ Completa([OBSERVACOES          ],27," ")
          Print File ARQ Completa([CD2TRIB              ],02," ")
          Print File ARQ Completa([SUBFISC              ],02," ")
          Print File ARQ Completa([CFPS                 ],05," ")
          Print File ARQ Completa([ICMS_IPI             ],01," ")
          Print File ARQ Completa([SUBCFOP              ],03," ")
          Print File ARQ Completa([SUBCDCONT            ],04," ")
          Print File ARQ Completa([CSOSN                ],03," ")
          Print File ARQ Completa("",05," ")
          
          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Grava Registro FMVI4

ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\"+"FMVI4"+PREFIXO+".TXT"
Deleta_Arquivo(ARQ)
If Not IsEmpty("MMFMVI4")
   Then
        gerou_arquivos=True
        arquivos=arquivos+Completa(ARQ,62," ")+"//"

        View "MMFMVI4"
        Scan
          Print File ARQ Completa([XREF                 ],08," ")
          Print File ARQ Completa([FILIAL               ],02," ")
          Print File ARQ Completa([MATERIAL             ],14," ")
          Print File ARQ Valor_Str([QUANT               ],16,6)
          Print File ARQ Valor_Str([VL_UNIT             ],16,6)
          Print File ARQ Completa([CDFISC               ],05," ")
          Print File ARQ Valor_Str([ALIQICM             ],05,2)
          Print File ARQ Completa([TRIBICM              ],01," ")
          Print File ARQ Completa([TRIB2ICM             ],02," ")
          Print File ARQ Valor_Str([RED_BSCALC          ],10,6)
          Print File ARQ Valor_Str([BCALC_ST            ],13,2)
          Print File ARQ Completa([TRIBIPI              ],01," ")
          Print File ARQ Valor_Str([ALIQIPI             ],05,2)
          Print File ARQ Completa([TRIBISS              ],01," ")
          Print File ARQ Valor_Str([ALIQISS             ],05,2)
          Print File ARQ Valor_Str([IVA                 ],06,2)
          Print File ARQ Valor_Str([ICMSNORMAL          ],11,2)
          Print File ARQ Completa([IS_SERV              ],01," ")
          Print File ARQ Valor_Str([DESCONTO            ],13,2)
          Print File ARQ Completa([CODAPUR              ],02," ")
          Print File ARQ Completa([IND_ESP              ],02," ")
          Print File ARQ Valor_Str([BC_ICMS             ],13,2)
          Print File ARQ Valor_Str([ALIQ_ST             ],05,2)
          Print File ARQ Valor_Str([VL_ST               ],13,2)
          Print File ARQ Valor_Str([BCALC_IPI           ],13,2)
          Print File ARQ Valor_Str([VL_IPI              ],13,2)
          Print File ARQ Completa([CFPS                 ],05," ")
          Print File ARQ Valor_Str([ACRESCIMO           ],13,2)
          Print File ARQ Completa([COD_CLASSE           ],04," ")
          Print File ARQ Completa([IND_REC              ],01," ")
          Print File ARQ Completa([TRIBST               ],01," ")
          Print File ARQ Completa([ICMS_IPI             ],01," ")
          Print File ARQ Completa([MOV_ESTOQUE          ],01," ")
          Print File ARQ Valor_Str([BCALC_ISS           ],13,2)
          Print File ARQ Valor_Str([VL_ISS              ],13,2)
          Print File ARQ Completa([TRIBPIS              ],02," ")
          Print File ARQ Valor_Str([BCALC_PIS           ],13,2)
          Print File ARQ Valor_Str([ALIQ_PIS            ],08,4)
          Print File ARQ Valor_Str([VL_PIS              ],13,2)
          Print File ARQ Completa([TRIBCOFINS           ],02," ")
          Print File ARQ Valor_Str([BCALC_COFINS        ],13,2)
          Print File ARQ Valor_Str([ALIQ_COFINS         ],08,4)
          Print File ARQ Valor_Str([VL_COFINS           ],13,2)
          Print File ARQ Completa([DT_APROP             ],08,"0")
          Print File ARQ Completa([COD_MATER2           ],60," ")
          Print File ARQ Completa([NSERIEARM            ],20," ")
          Print File ARQ Completa([TIPOOPER             ],01," ")
          Print File ARQ Completa([CP_CONCESS           ],10," ")
          Print File ARQ Completa([CP_CONCES2           ],20," ")
          Print File ARQ Completa([CHASSI_VEI           ],17," ")
          Print File ARQ Completa([LOTEMEDIC            ],20," ")
          Print File ARQ Valor_Str([QTDLOTE             ],14,3)
          Print File ARQ Completa([DATA_FABRI           ],08,"0")
          Print File ARQ Completa([DATA_VALID           ],08,"0")
          Print File ARQ Completa([DESC_COMP            ],255," ")
          Print File ARQ Completa([IND_TPARMA           ],01," ")
          Print File ARQ Completa([ITEMCANCEL           ],01," ")
          Print File ARQ Completa([ORIGEMMERC           ],01," ")
          Print File ARQ Completa([UNIDADEMOV           ],06," ")
          Print File ARQ Valor_Str([FATOR_CV            ],13,6)
          Print File ARQ Completa([CSOSN_ICMS           ],03," ")
          Print File ARQ Completa([CSOSN_ST             ],03," ")
          Print File ARQ Completa([SUBCFOP              ],03," ")
          Print File ARQ Valor_Str([IPI_P_ICMS          ],13,2)

          Print File ARQ Completa([COD_BCCRED           ],02," ")
          Print File ARQ Completa([CODCPISCOF           ],02," ")
          Print File ARQ Completa([CODIGOITEM           ],06," ")
          Print File ARQ Valor_Str([FRETE_RAT           ],13,2)
          Print File ARQ Valor_Str([SEG_RAT             ],13,2)
          Print File ARQ Valor_Str([DESP_RAT            ],13,2)
          Print File ARQ Valor_Str([DESC_RAT            ],13,2)
          Print File ARQ Completa([IDENTCUPOM           ],06," ")
          Print File ARQ Completa([INDTIPOREC           ],01," ")

          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Grava registro FMVI5
ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\"+"FMVI5"+PREFIXO+".TXT"
Deleta_Arquivo(ARQ)
If Not IsEmpty("MMFMVI5")
   Then
        gerou_arquivos=True
        arquivos=arquivos+Completa(ARQ,62," ")+"//"

        View "MMFMVI5"
        Scan
          Print File ARQ Completa([ANO           ],02," ")
          Print File ARQ Completa([XREF          ],08," ")
          Print File ARQ Completa([DUPLICATA     ],09," ")
          Print File ARQ Completa([VENCIMENTO    ],08," ")
          Print File ARQ Valor_Str([VALOR        ],12,2)
          Print File ARQ Completa([PAGAMENTO     ],08," ")
          Print File ARQ Valor_Str([MULTAS       ],11,2)
          Print File ARQ Valor_Str([DESCONTOS    ],11,2)
          Print File ARQ Completa([CONTACTBO     ],08," ")
          Print File ARQ Completa([HISTORICO     ],50," ")
          Print File ARQ Completa([HISTMULTA     ],50," ")
          Print File ARQ Completa([HISTDESCO     ],50," ")
          Print File ARQ Completa([CTACAIXA      ],01," ")
          Print File ARQ Completa([CONTABXDUP    ],08," ")
          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Grava registro FMVI6
ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\"+"FMVI6"+PREFIXO+".TXT"
Deleta_Arquivo(ARQ)
If Not IsEmpty("MMFMVI6")
   Then
        gerou_arquivos=True
        arquivos=arquivos+Completa(ARQ,62," ")+"//"

        View "MMFMVI6"
        Scan
          Print File ARQ Completa([XREF          ],08," ")
          Print File ARQ Completa([TOMADOR       ],01," ")
          Print File ARQ Completa([CONTRAPART    ],10," ")
          Print File ARQ Completa([NF_EMISS      ],08," ")
          Print File ARQ Completa([NF_MODELO     ],02," ")
          Print File ARQ Completa([NF_SERIE      ],02," ")
          Print File ARQ Completa([NF_SUBSER     ],02," ")
          Print File ARQ Completa([NF_NUMERO     ],06," ")
          Print File ARQ Valor_Str([NF_VALOR     ],13,2)
          Print File ARQ Valor_Str([VL_FRETE     ],13,2)
          Print File ARQ Valor_Str([VL_MERC      ],13,2)
          Print File ARQ Completa([NAT_VOL       ],20," ")
          Print File ARQ Valor_Str([QTD_VOL      ],13,0)
          Print File ARQ Completa([VOL           ],20," ")
          Print File ARQ Completa([ESPECIE       ],20," ")
          Print File ARQ Completa([MARCA         ],20," ")
          Print File ARQ Valor_Str([NUM          ],13,0)
          Print File ARQ Valor_Str([PESO_BRT     ],13,3)
          Print File ARQ Valor_Str([PESO_LIQ     ],13,3)
          Print File ARQ Completa([UFDESTINO     ],02," ")
          Print File ARQ Completa([MUNDESTINO    ],06," ")
          Print File ARQ Valor_Str([QTD_MERC     ],13,2)
          Print File ARQ Completa([UNIDTRANS     ],02," ")
          Print File ARQ Completa([CHV_NFE       ],44," ")
          Print File ARQ Completa([UFORIGEM      ],02," ")
          Print File ARQ Completa([MUNORIGEM     ],06," ")
          Print File ARQ Completa([INDVEITRAN    ],01," ")
          Print File ARQ Completa([VEICULOID     ],10," ")
          Print File ARQ Completa([INDTIPNAVE    ],01," ")
          Print File ARQ Completa([NUMEROVIAG    ],10," ")
          Print File ARQ Valor_Str([VL_DESP_PO   ],13,2)
          Print File ARQ Valor_Str([VL_DESP_CD   ],13,2)
          Print File ARQ Valor_Str([VL_OUTROS    ],13,2)
          Print File ARQ Valor_Str([VL_FRETEBR   ],13,2)
          Print File ARQ Valor_Str([VL_FRETEMM   ],13,2)
          Print File ARQ Completa([CONTRAPA2     ],20," ")
          Print File ARQ Completa([COD_DEST      ],10," ")
          Print File ARQ Completa([COD_DEST2     ],20," ")

          Print File ARQ Completa([PAIS          ],06," ")
          Print File ARQ Completa([UF_EX         ],60," ")
          Print File ARQ Completa([MUNIC_EX      ],60," ")

          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Grava registro FMVI7
ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\"+"FMVI7"+PREFIXO+".TXT"
Deleta_Arquivo(ARQ)
If Not IsEmpty("MMFMVI7")
   Then
        gerou_arquivos=True
        arquivos=arquivos+Completa(ARQ,62," ")+"//"

        View "MMFMVI7"
        Scan
          Print File ARQ Completa([XREF          ],08," ")
          Print File ARQ Completa([PREPOSTO      ],10," ")
          Print File ARQ Completa([UF_PSRV       ],02," ")
          Print File ARQ Completa([MUNIC_PSRV    ],06," ")
          Print File ARQ Completa([FORM_INI      ],10," ")
          Print File ARQ Completa([FORM_FIM      ],10," ")
          Print File ARQ Completa([CHV_NFE       ],44," ")
          Print File ARQ Completa([VEIC_ID       ],08," ")
          Print File ARQ Completa([UF_ID         ],02," ")
          Print File ARQ Completa([ATO_EXECUT    ],50," ")
          Print File ARQ Completa([PREPOST_2     ],20," ")

          Print File ARQ Completa([PAIS          ],06," ")
          Print File ARQ Completa([UF_EX         ],60," ")
          Print File ARQ Completa([MUNIC_EX      ],60," ")
          Print File ARQ Completa("",1," ")
          Print File ARQ Completa("",2," ")
          Print File ARQ Completa("",2," ")
          Print File ARQ Completa("",2," ")

          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Grava registro FMVI8
ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\"+"FMVI8"+PREFIXO+".TXT"
Deleta_Arquivo(ARQ)
If Not IsEmpty("MMFMVI8")
   Then
        gerou_arquivos=True
        arquivos=arquivos+Completa(ARQ,62," ")+"//"

        View "MMFMVI8"
        Scan
          Print File ARQ Completa([XREF          ],08," ")
          Print File ARQ Completa([CP_TRANSP     ],10," ")
          Print File ARQ Completa([MOD_FRETE     ],01," ")
          Print File ARQ Completa([PLACA_VEIC    ],08," ")
          Print File ARQ Completa([PLACA_UF      ],02," ")
          Print File ARQ Valor_Str([VOL_TRANSP   ],17,2)
          Print File ARQ Completa([VOL_ESPEC     ],60," ")
          Print File ARQ Completa([VOL_MARCA     ],60," ")
          Print File ARQ Completa([VOL_NUMER     ],60," ")
          Print File ARQ Valor_Str([PESO_LIQ     ],17,3)
          Print File ARQ Valor_Str([PESO_BRT     ],17,3)
          Print File ARQ Completa([FEZ_ENTREG    ],01," ")
          Print File ARQ Completa([LOGR          ],60," ")
          Print File ARQ Completa([LOGR_NO       ],06," ")
          Print File ARQ Completa([COMPLLOGR     ],60," ")
          Print File ARQ Completa([BAIRRO        ],60," ")
          Print File ARQ Completa([MUNICIPIO     ],06," ")
          Print File ARQ Completa([UF            ],02," ")
          Print File ARQ Completa([HORASAIDA     ],06," ")
          Print File ARQ Completa([TEMPERAT      ],03," ")
          Print File ARQ Completa([NOMEMOTO      ],50," ")
          Print File ARQ Completa([CPFMOTO       ],11," ")
          Print File ARQ Completa([COD_AUT       ],60," ")
          Print File ARQ Completa([NR_PASSE      ],60," ")
          Print File ARQ Completa([CP_TRANSP2    ],20," ")

          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Grava registro FMVI9
ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\"+"FMVI9"+PREFIXO+".TXT"
Deleta_Arquivo(ARQ)
If Not IsEmpty("MMFMVI9")
   Then
        gerou_arquivos=True
        arquivos=arquivos+Completa(ARQ,62," ")+"//"

        View "MMFMVI9"
        Scan
          Print File ARQ Completa([XREF          ],08," ")
          Print File ARQ Completa([CFOP_FRETE    ],05," ")
          Print File ARQ Completa([CFOP_SEG      ],05," ")
          Print File ARQ Completa([CFOP_DESP     ],05," ")
          Print File ARQ Completa([TRIB_FRETE    ],01," ")
          Print File ARQ Completa([TRIB_SEG      ],01," ")
          Print File ARQ Completa([TRIB_DESP     ],01," ")
          Print File ARQ Valor_Str([ALIQ_FRETE   ],05,2)
          Print File ARQ Valor_Str([ALIQ_SEG     ],05,2)
          Print File ARQ Valor_Str([ALIQ_DESP    ],05,2)
          Print File ARQ Valor_Str([IMP_FRETE    ],13,2)
          Print File ARQ Valor_Str([IMP_SEG      ],13,2)
          Print File ARQ Valor_Str([IMP_DESP     ],13,2)
          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Grava Registro UNIDM
ARQ = DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\UNIDM.TXT"
Deleta_Arquivo(ARQ)
If Not IsEmpty("MMUNIDM")
   Then
        gerou_arquivos=True
        arquivos=arquivos+Completa(ARQ,62," ")+"//"

        View "MMUNIDM"
        Scan
          Print File ARQ AlinhM(StrVal([CODUNIDM   ]),06)
          Print File ARQ Completa([DESCRICAO],50," ")
          Print File ARQ Completa([SIGLA    ],05," ")
          Print File ARQ Completa([UN_ATIVA ],01," ")
          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf


Aguarde("Aguarde, Compactando pacote de transa‡„o")
SetDir "\\Sistemas\\Exporta\\Dados\\Mastermc\\"

cmd="REN \""+NewARQ+"\" MASTER.ARJ"
ExecVise(cmd)
Sleep 2000
Deleta_Arquivo("MASTER.ARJ")

Sleep 2000
cmd="c:\\vise\\Varj.exe a MASTER DATA.TXT SRC.TXT MATER.TXT UNIDM.TXT FMVI*.TXT"
Executa_Programa(cmd)
Sleep 2000

cmd="REN MASTER.ARJ \""+NewARQ+"\""
ExecVise(cmd)
Sleep 1000

NewARQ=DRIVE+"\\Sistemas\\Exporta\\Dados\\Mastermc\\"+NewARQ
arquivos=arquivos+"//"+Completa("Arquivo pacote a enviar p/ contabilidade: ",62," ")+"//"
arquivos=arquivos+Completa(NewARQ,62," ")+"//"

Deleta_Arquivo("MASTER.ARJ")

Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\MASTER.ARJ")
Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\DATA.TXT")
Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\FMVI*.TXT")
Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\MATER.TXT")
Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\UNIDM.TXT")
Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\SRC.TXT")

SetDir "\\Sistemas\\Exporta\\"
LimpAguarde()
If gerou_arquivos
  Then Mensagem("Gerado os arquivos abaixo: // //"+arquivos)
  Else Mensagem("Arquivos nÆo gerados!")
EndIf

ClearAll
EndProc  ; (Gera_Arquivo_Texto)

;********************************************************************************
;* CONVERTE VALOR PARA STRING                                                  *
;********************************************************************************
Proc Valor_Str(Valor,Tam,Dec)
Private VrTit,Valor,Tam,Dec,Part1,Part2
If IsBlank(Valor)
   Then Valor=0.000
Endif
VrTit=StrVal(Valor)
If SearchFrom(".",VrTit,1)>0
   Then Part1=SubStr(VrTit,1,SearchFrom(".",VrTit,1)-1)
        Part2=SubStr(VRTit,SearchFrom(".",VrTit,1)+1,Dec)
        Part2=PART2+Fill(0,DEC-Len(Part2))
   Else Part1=VrTit
        Part2=Fill(0,Dec)
EndIf
Vrtit=Part1+"."+Part2
VrTit=Fill("0",Tam-Len(VrTit))+VrTit
Return VrTit
EndProc  ; (Valor_Str)

;******************************************************************************
;*Procedimento responsavel pela montagem do cgc/cpf
;******************************************************************************
Proc MONTA_STRING(MSTRING,NUMALF)
M_NOVO = ""
Switch
   Case NUMALF = "N":
        For I From 1 to Len(MSTRING)
            If (Asc(SubStr(MSTRING,I,1)) >= 48) And
               (Asc(SubStr(MSTRING,I,1)) <= 57)
               Then M_NOVO = M_NOVO + SubStr(MSTRING,I,1)
            EndIf
        EndFor
   Case NUMALF = "A":
        For I From 1 to Len(MSTRING)
            If (Asc(SubStr(MSTRING,I,1)) >= 065) And
               (Asc(SubStr(MSTRING,I,1)) <= 122)
               Then M_NOVO = M_NOVO + SubStr(MSTRING,I,1)
            EndIf
        EndFor
   Case NUMALF = "AN":
        For I From 1 to Len(MSTRING)
            If (Asc(SubStr(MSTRING,I,1)) >= 065) And
               (Asc(SubStr(MSTRING,I,1)) <= 122) Or
               (Asc(SubStr(MSTRING,I,1)) >= 48) And
               (Asc(SubStr(MSTRING,I,1)) <= 57)
               Then M_NOVO = M_NOVO + SubStr(MSTRING,I,1)
            EndIf
        EndFor
EndSwitch
Return(M_NOVO)
EndProc ; (Monta_String)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA    =""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_DTINI"         : Campo="TG_EMPRESA"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPCOES"        : Campo="TG_DTFIM"
            Case Campo="TG_OPCOD"         : Campo="TG_OPCOES"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"    :
                         If Not IsBlank(VSDGEMPRESA)
                            Then Campo="TG_DTINI"
                            Else VSDGNOMEMP=""
                         EndIf
                    Case Campo="TG_DTINI"      :
                         If Not IsBlank(VSDGDTINI)
                            Then Campo="TG_DTFIM"
                         EndIf
                    Case Campo="TG_DTFIM"      : Campo="TG_OPCOES"
                    Case Campo="TG_OPCOES"     : Campo="TG_OPCOD"
                    Case Campo="TG_OPCOD"     : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe uma Empresa"
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a Data Inicial"
  Case Campo="TG_OPCOES":
       MensagemCheckBoxes()
  Case Campo="TG_OPCOD":
       MensagemRadioButtons()
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"

If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf

LimpAguarde()
VSDGEMPRESA  =""
VSDGDTINI    =BlankDate()
VSDGDTFIM    =BlankDate()
VSDGESTADO   = ""
VSDGEST_TODOS=True
VSDGOPCOD    =1

PTREF=""

Array VSDGOPCAO[3]

ATIVIDADE  = ""
ESTEMPRESA = ""

If Not IsFile("c:\\vise\\Varj.exe")
   Then MSG="Compactador/Descompactador ARJ n„o encontrado !// //"
        MSG=MSG+"Verificar com o Suporte!// //"
        MSG=MSG+"Esta rotina n„o podera ser executada !"
        Mensagem(MSG)
EndIf

While True
  ShowDialog "Exporta‡„o de dados para MASTERMAQ" Proc "SD_Dialog"
    Trigger "OPEN","ARRIVE"
    Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140    
     @ 02,19   Height 14 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

    Label  @ 02,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 03,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 03,16 "at‚" For "TG_DTFIM"
    Accept @ 03,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 05,00 "Op‡”es de Movimentos " For "TG_OPCOES"
    CheckBoxes @6,00 Height 3 Width 24 Tag "TG_OPCOES"
    "Registro de Entrada " to VSDGOPCAO[1],
    "Registro de Saida   " to VSDGOPCAO[2],
    "Geral               " to VSDGOPCAO[3]

    Label @ 05,30 "C¢digos Clientes/Fornecedores" For "TG_OPCOD"
    RadioButtons @ 06,30 Height 2 Width 38
      "~1~ usar CNPJ/CPF do documento",
      "~2~ usar C¢digo escrit¢rio contabil"
        Tag "TG_OPCOD"
        To VSDGCOD

     Pushbutton @ 10,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
     Pushbutton @ 10,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGEMPRESA)
     Then Mensagem("Empresa Invalida !")
          Loop
  EndIf

  If VSDGDTFIM=BlankDate() or VSDGDTINI=BlankDate()
     Then Mensagem("Data Invalida !")
          Loop
  EndIf

  View "\\Sistemas\\Cadastro\\Empresas"
  Moveto [Codigo da Empresa]
  Locate VSDGEMPRESA
  If Not RetVal
     Then MENSAGEM("Empresa n„o Cadastrada")
          ClearAll
          Loop
     Else PREFIXO    = Substr([Conta Contabil Empresa],1,3)
          REGIME_TRIB= [Tipo da Empresa]
  EndIf

  View "\\Sistemas\\ICMS_IPI\\ReceitaE"
  Moveto [Codigo da Empresa]
  Locate VSDGEMPRESA
  If Not RetVal
     Then MENSAGEM("Dados p/ Receita Estadual desta Empresa nÆo foi informado")
          ClearAll
          Loop
  EndIf
  ClearAll

  If (VSDGOPCAO[1]=False) AND (VSDGOPCAO[2]=False) AND (VSDGOPCAO[3]= False)
     Then
          Mensagem("Escolha uma das Op‡äes de Movimentos!")
          Loop
  EndIF

  If VSDGOPCAO[3]=True
     Then
          VSDGOPCAO[1]=True
          VSDGOPCAO[2]=True
  EndIf

  If VSDGOPCAO[1]=True or VSDGOPCAO[3]=True
     Then Monta_Entrada()
  EndIf

  If VSDGOPCAO[2]=True or VSDGOPCAO[3]=True
     Then Monta_Saida()
  EndIf

  If IsEmpty("\\Sistemas\\Estoque\\RegEntra") And
     IsEmpty("\\Sistemas\\Vendas\\RegSaida")
     Then Mensagem("N„o existe movimenta‡„o para este per¡odo !")
          ClearAll
          Loop
  EndIf

  DRIVE=SubStr(Directory(),1,2)
  PTREF="_"+AlinhM(StrVal(Month(VSDGDTFIM)),2)+AlinhM(StrVal(Year(VSDGDTFIM)),4)
  NewARQ="Mastermaq_"+PREFIXO+PTREF+".ARJ"

  Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\MASTER.ARJ")
  Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\DATA.TXT")
  Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\FMVI*.TXT")
  Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\MATER.TXT")
  Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\UNIDM.TXT")
  Deleta_Arquivo("\\Sistemas\\Exporta\\Dados\\Mastermc\\SRC.TXT")

  Gera_Reg()
  
  If IsTable("RegSTemp") Then Delete("RegSTemp") EndIf
  If IsTable("RegETemp") Then Delete("RegETemp") EndIf
  If IsTable("Answer")   Then Delete("Answer")   EndIf

 ;Empty("MMFMVIM")
 ;Empty("MMFMVI2")
 ;Empty("MMFMVI4")
 ;Empty("MMFMVI5")
 ;Empty("MMFMVI7")
 ;Empty("MMFMVI8")
 ;Empty("MMFMVI9")
 ;Empty("MMMATER")
 ;Empty("MMSRC")

  LimpaRodape(0)

EndWhile
ClearAll
Release Vars All
Release Procs All
