;** 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                                  

;*******************************************************************************
;* 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("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_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   "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,WNUM,WSER
          If Not RetVal
             Then Moveto "RegSTemp"
                  Loop
          EndIf

          CALCULA_ST="N"
          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 CALCULA_ST=[\Sistemas\Vendas\Destin->Calcula Substituicao]
          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]

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

          ;**************************************************************************
          ;*Atualiza dados da nota
          ;**************************************************************************
          Moveto "MMFMVIM"
          End Down
          [TIPO                         ]="S"
          [NFISCAL                      ]=AlinhM([RegSTemp->Numero da Nota Fiscal],6)
          [NFISCAL2                     ]=AlinhM([RegSTemp->Numero da Nota Fiscal],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 [RegSTemp->Codigo do Documento ]="NFE0": [TIPDOCFISC]="55"
            Case [RegSTemp->Codigo do Documento ]="NFE1": [TIPDOCFISC]="55"
            Case [RegSTemp->Codigo do Documento ]="NFE9": [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

          SOMA_ITENS_ST      =0
          SOMA_ITENS_PIS     =0
          SOMA_ITENS_COFINS  =0
          Moveto "\\Sistemas\\Vendas\\NotaI"
          Moveto [Codigo da Empresa]
          Locate [\Sistemas\Vendas\NotaC->Codigo da Empresa  ],
                 [\Sistemas\Vendas\NotaC->Numero do Documento],
                 [\Sistemas\Vendas\NotaC->Serie do Documento ]
          If RetVal
             Then While [\Sistemas\Vendas\NotaI->Codigo da Empresa  ]=[\Sistemas\Vendas\NotaC->Codigo da Empresa  ] And
                        [\Sistemas\Vendas\NotaI->Numero do Documento]=[\Sistemas\Vendas\NotaC->Numero do Documento] And
                        [\Sistemas\Vendas\NotaI->Serie do Documento ]=[\Sistemas\Vendas\NotaC->Serie do Documento ]
             
                    If [\Sistemas\Vendas\NotaI->Tributacao de ICMS]="S"
                       Then SOMA_ITENS_ST    =SOMA_ITENS_ST    +[\Sistemas\Vendas\NotaI->Preco Total]
                    EndIf    
        
                    If [\Sistemas\Vendas\NotaI->PIS_Aliquota]>0   
                       Then SOMA_ITENS_PIS   =SOMA_ITENS_PIS   +[\Sistemas\Vendas\NotaI->Preco Total]
                    EndIf
        
                    If [\Sistemas\Vendas\NotaI->COFINS_Aliquota]>0   
                       Then SOMA_ITENS_COFINS=SOMA_ITENS_COFINS+[\Sistemas\Vendas\NotaI->Preco Total]
                    EndIf
        
                    Moveto "\\Sistemas\\Vendas\\NotaI" 
                    Skip
                    If EOT() Then QuitLoop EndIf
                  EndWhile
          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

          VRACRESC_TOTAL_ST=[\Sistemas\Vendas\NotaC->Valor Despesas Acessorias]+
                            [\Sistemas\Vendas\NotaC->Valor do Seguro          ]+
                            [\Sistemas\Vendas\NotaC->Valor do Frete           ]
          TXACRESC_TOTAL_ST=(VRACRESC_TOTAL_ST/[\Sistemas\Vendas\NotaC->Valor Mercadoria])*100

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

            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        =UF_ALIQUOTA_ICMS_INTERNA
            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     =0
            VL_ICMS        =0
            VL_BC_ICMS_ST  =0
            VL_ICMS_ST     =0
            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      =0
            VL_IPI         =0

            CST_PIS        =[\Sistemas\Vendas\NotaI->PIS_CST                 ]
            VL_BC_PIS      =0
            ALIQ_PIS       =[\Sistemas\Vendas\NotaI->PIS_Aliquota            ]
            QUANT_BC_PIS   =0
            ALIQ_PIS2      =0
            VL_PIS         =0

            CST_COFINS     =[\Sistemas\Vendas\NotaI->COFINS_CST              ]
            VL_BC_COFINS   =0
            ALIQ_COFINS    =[\Sistemas\Vendas\NotaI->COFINS_Aliquota         ]
            QUANT_BC_COFINS=0
            ALIQ_COFINS2   =0
            VL_COFINS      =0

            VL_OPR         =0

            PORC_IT_ST     =([\Sistemas\Vendas\NotaI->Preco Total]/SOMA_ITENS_ST)*100 
            PORC_IT_MERC   =([\Sistemas\Vendas\NotaI->Preco Total]/[\Sistemas\Vendas\NotaC->Valor Mercadoria])*100 
            PORC_IT_PIS_COF=(100*[\Sistemas\Vendas\NotaC->Valor Nota Fiscal])/[\Sistemas\Vendas\NotaC->Valor Mercadoria]
            PORC_IT_PIS_COF=PORC_IT_PIS_COF-100

            VR_ACRESC      =NDecimal((VRACRESC_TOTAL*PORC_IT_MERC)/100,2)

            If ALIQ_IPI>0
               Then VL_BC_IPI =VL_ITEM
                    VL_BC_IPI =VL_BC_IPI -NDecimal((VL_BC_IPI*ALIQ_RD_IPI)/100,2)                            
                    VL_IPI    =NDecimal((VL_BC_IPI *ALIQ_IPI)/100,2)
               Else VL_IPI    =[\Sistemas\Vendas\NotaI->Valor do IPI ]
            EndIf

            If ALIQ_ICMS>0 
               Then VL_BC_ICMS=VL_ITEM
                    VL_BC_ICMS=VL_BC_ICMS-VL_DESC
                    VL_RED_BC =NDecimal((VL_BC_ICMS*ALIQ_RD_ICMS)/100,2)
                    VL_BC_ICMS=VL_BC_ICMS-VL_RED_BC                   

                    If [\Sistemas\Vendas\NotaC->Consumidor Final]="S"
                       Then VL_BC_ICMS=VL_BC_ICMS+VR_ACRESC+VL_IPI
                    EndIf   

                    VL_ICMS   =NDecimal((VL_BC_ICMS*ALIQ_ICMS)/100,2)
               Else VL_ICMS   =[\Sistemas\Vendas\NotaI->Valor do ICMS]
            EndIf

						If [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS]>0 And
						   [\Sistemas\Vendas\NotaI->Tributacao de ICMS     ]="S"
						   Then If CALCULA_ST="S" And MVA_ST>0 And VL_ITEM>0
             	         Then 
						                VL_BC_ICMS_ST=VL_ITEM
						                VL_BC_ICMS_ST=Round(VL_BC_ICMS_ST+((VL_ITEM*TXACRES_ST)/100),2)
						                VL_BC_ICMS_ST=VL_BC_ICMS_ST+VL_IPI
						                VL_BC_ICMS_ST=VL_BC_ICMS_ST+Round((VL_BC_ICMS_ST*MVA_ST)/100,2)
						                VL_ICMS_ST   =Round((VL_BC_ICMS_ST*ALIQ_ICMS_ST)/100,2)
						                VL_ICMS_ST   =VL_ICMS_ST-VL_ICMS
						
                       Else VL_BC_ICMS_ST=NDecimal(([\Sistemas\Vendas\NotaC->Valor BCSubstituicao ICMS]*PORC_IT_ST)/100,2)
                            VL_ICMS_ST   =NDecimal(([\Sistemas\Vendas\NotaC->Valor Substituicao ICMS  ]*PORC_IT_ST)/100,2)
                    EndIf
						EndIf

            If Search("VENDA",[\Sistemas\Vendas\NotaC->Descricao da Destinacao])>0 And
               [\Sistemas\Vendas\NotaI->PIS_Aliquota]>0
               Then VL_BC_PIS=VL_ITEM
                    Switch
                      Case PORC_IT_PIS_COF>0: VL_BC_PIS   =Round(VL_BC_PIS   +((VL_BC_PIS   * PORC_IT_PIS_COF    )/100),2)
                      Case PORC_IT_PIS_COF<0: VL_BC_PIS   =Round(VL_BC_PIS   -((VL_BC_PIS   *(PORC_IT_PIS_COF*-1))/100),2)
                    EndSwitch
                    VL_PIS   =Round(VL_PIS   +((VL_BC_PIS   *ALIQ_PIS   )/100),2)
            EndIf
            If Search("VENDA",[\Sistemas\Vendas\NotaC->Descricao da Destinacao])>0 And
               [\Sistemas\Vendas\NotaI->COFINS_Aliquota]>0
               Then VL_BC_COFINS=VL_ITEM
                    Switch
                      Case PORC_IT_PIS_COF>0: VL_BC_PIS   =Round(VL_BC_COFINS+((VL_BC_COFINS* PORC_IT_PIS_COF    )/100),2)
                      Case PORC_IT_PIS_COF<0: VL_BC_PIS   =Round(VL_BC_COFINS-((VL_BC_COFINS*(PORC_IT_PIS_COF*-1))/100),2)
                    EndSwitch
                    VL_COFINS=Round(VL_COFINS+((VL_BC_COFINS*ALIQ_COFINS)/100),2)
            EndIf

            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           ]=VLBC_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    ]=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           ]=PegaTpImposto("PIS","",[\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        ]=PegaTpImposto("COFINS","",[\Sistemas\Vendas\NotaI->PIS_CST])
            If [\Sistemas\Vendas\NotaI->COFINS_Aliquota]>0
               Then
                    [BCALC_COFINS      ]=VL_BC_PIS 
                    [ALIQ_COFINS       ]=ALIQ_PIS
                    [VL_COFINS         ]=VL_COFINS 
            EndIf

            [ACRESCIMO         ]=VR_ACRESC
            [DESCONTO          ]=VL_DESC
            [CODAPUR           ]=""
            [IND_ESP           ]=""
            [COD_CLASSE        ]=""
            [IND_REC           ]=""
            [DT_APROP          ]=""
            [COD_MATER2        ]=""

            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])

            Moveto "\\Sistemas\\Vendas\\NotaI"
            Skip
            If Eot() Then QuitLoop EndIf
          EndWhile
  
          ;**************************************************************************
          ;*Atualiza dados complementares da nota
          ;**************************************************************************

          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([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      ]
                                                  
            If SubStr([RegSTemp->Observacao],1,10)="FRETE ALIQ"
               Then TRIB   ="A"
            EndIf   
            
            Switch
              Case SYS_CODIGO_CLIENTE="0193": TRIB   ="4"
            EndSwitch
            
       Case wi=4:
            TRIB   ="6"
            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 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   
     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([RegStemp->Numero da Nota Fiscal],8)
        [NFISCAL2                     ]=AlinhM([RegStemp->Numero Varias Notas  ],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                      ]=[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   "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")
        ConsumidorFinal=[\Sistemas\Estoque\NotaEC->ICMS sobre Total NF]

        Moveto "RegETemp"

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

        ;**************************************************************************
        ;*Atualiza dados da nota
        ;**************************************************************************
        Moveto "MMFMVIM"
        End Down
        [TIPO                         ]="E"
        [NFISCAL                      ]=AlinhM([RegEtemp->Numero da Nota Fiscal],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 [RegETemp->Codigo do Documento ]="NFE0": [TIPDOCFISC]="55"
          Case [RegETemp->Codigo do Documento ]="NFE1": [TIPDOCFISC]="55"
          Case [RegETemp->Codigo do Documento ]="NFE9": [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

        SOMA_ITENS_ST          =0
        If [\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS]>0
           Then Moveto "\\Sistemas\\Estoque\\NotaEI"
                Moveto [Numero do Lancamento]
                Locate [\Sistemas\Estoque\NotaEC->Numero do Lancamento]
                If RetVal
                   Then While [Numero do Lancamento]=[\Sistemas\Estoque\NotaEC->Numero do Lancamento]
                          If [\Sistemas\Estoque\NotaEI->Tributacao de ICMS]="S"
                             Then SOMA_ITENS_ST    =SOMA_ITENS_ST    +[\Sistemas\Estoque\NotaEI->Preco Total]
                          EndIf    
              
                          Moveto "\\Sistemas\\Estoque\\NotaEI" 
                          Skip
                          If EOT() Then QuitLoop EndIf
                        EndWhile
                EndIf
        EndIf

        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        ]
          If [\Sistemas\Estoque\NotaEC->ICMS sobre Total NF]="1" 
             Then ALIQ_ICMS=[\Sistemas\Estoque\NotaEC->Aliquota de ICMS      ]
          EndIf
          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     =0
          VL_ICMS        =0
          VL_BC_ICMS_ST  =0
          VL_ICMS_ST     =0
          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      =0
          VL_IPI         =0

          CST_PIS        ="99"
          VL_BC_PIS      =0
          ALIQ_PIS       =0
          QUANT_BC_PIS   =0
          ALIQ_PIS2      =0
          VL_PIS         =0

          CST_COFINS     ="99"
          VL_BC_COFINS   =0
          ALIQ_COFINS    =0
          QUANT_BC_COFINS=0
          ALIQ_COFINS2   =0
          VL_COFINS      =0

          VL_OPR         =0

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

          If ALIQ_IPI>0
             Then VL_BC_IPI =VL_ITEM
                  VL_BC_IPI =VL_BC_IPI -NDecimal((VL_BC_IPI*ALIQ_RD_IPI)/100,2)                            
                  VL_IPI    =NDecimal((VL_BC_IPI *ALIQ_IPI)/100,2)
             Else VL_IPI    =[\Sistemas\Estoque\NotaEI->Valor do IPI ]
          EndIf

          If ALIQ_ICMS>0 
             Then VL_BC_ICMS=VL_ITEM
                  VL_BC_ICMS=VL_BC_ICMS-VL_DESC
                  VL_RED_BC =NDecimal((VL_BC_ICMS*ALIQ_RD_ICMS)/100,2)
                  VL_BC_ICMS=VL_BC_ICMS-VL_RED_BC                   
                  Switch
                    Case [\Sistemas\Estoque\NotaEC->ICMS sobre Total NF]="1":
                      VL_BC_ICMS=VL_BC_ICMS+VR_ACRESC+VL_IPI
                    Case [\Sistemas\Estoque\NotaEC->ICMS sobre Total NF]="2":
                      VL_BC_ICMS=VL_BC_ICMS+VR_ACRESC
                  EndSwitch
                  VL_ICMS   =NDecimal((VL_BC_ICMS*ALIQ_ICMS)/100,2)
             Else VL_ICMS   =[\Sistemas\Estoque\NotaEI->Valor do ICMS]
          EndIf

          If [\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS]>0 And
             [\Sistemas\Estoque\NotaEI->Tributacao de ICMS]="S"
             Then VL_BC_ICMS_ST=NDecimal(([\Sistemas\Estoque\NotaEC->Valor BCSubstituicao ICMS]*PORC_IT_ST)/100,2)
                  VL_ICMS_ST   =NDecimal(([\Sistemas\Estoque\NotaEC->Valor Substituicao ICMS  ]*PORC_IT_ST)/100,2)
          EndIf   

          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        ]=""
          UnlockRecord

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

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


          ;**************************************************************************
          ;*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"
            VROPER =[RegETemp->Icms Outros      ]
       Case wi=4:
            TRIB   ="6"
            VROPER =[RegETemp->Substituicao Icms]

            If [RegETemp->Substituicao Icms]>0
               Then VROPER =[RegETemp->Icms Outros      ]+[RegETemp->Substituicao Icms]
            EndIf    
     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="1" 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="1" 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   "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,WNUM,WSER
        If Not RetVal
           Then Moveto "RegETemp"
                Loop
        EndIf

        CALCULA_ST="N"
        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 CALCULA_ST=[\Sistemas\Vendas\Destin->Calcula Substituicao]
        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([RegEtemp->Numero da Nota Fiscal],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 [RegETemp->Codigo do Documento ]="NFE0": [TIPDOCFISC]="55"
          Case [RegETemp->Codigo do Documento ]="NFE1": [TIPDOCFISC]="55"
          Case [RegETemp->Codigo do Documento ]="NFE9": [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 

        SOMA_ITENS_ST      =0
        SOMA_ITENS_PIS     =0
        SOMA_ITENS_COFINS  =0
        Moveto "\\Sistemas\\Vendas\\NotaI"
        Moveto [Codigo da Empresa]
        Locate [\Sistemas\Vendas\NotaC->Codigo da Empresa  ],
               [\Sistemas\Vendas\NotaC->Numero do Documento],
               [\Sistemas\Vendas\NotaC->Serie do Documento ]
        If RetVal
           Then While [\Sistemas\Vendas\NotaI->Codigo da Empresa  ]=[\Sistemas\Vendas\NotaC->Codigo da Empresa  ] And
                      [\Sistemas\Vendas\NotaI->Numero do Documento]=[\Sistemas\Vendas\NotaC->Numero do Documento] And
                      [\Sistemas\Vendas\NotaI->Serie do Documento ]=[\Sistemas\Vendas\NotaC->Serie do Documento ]
           
                  If [\Sistemas\Vendas\NotaI->Tributacao de ICMS]="S"
                     Then SOMA_ITENS_ST    =SOMA_ITENS_ST    +[\Sistemas\Vendas\NotaI->Preco Total]
                  EndIf    
      
                  If [\Sistemas\Vendas\NotaI->PIS_Aliquota]>0   
                     Then SOMA_ITENS_PIS   =SOMA_ITENS_PIS   +[\Sistemas\Vendas\NotaI->Preco Total]
                  EndIf
      
                  If [\Sistemas\Vendas\NotaI->COFINS_Aliquota]>0   
                     Then SOMA_ITENS_COFINS=SOMA_ITENS_COFINS+[\Sistemas\Vendas\NotaI->Preco Total]
                  EndIf
      
                  Moveto "\\Sistemas\\Vendas\\NotaI" 
                  Skip
                  If EOT() Then QuitLoop EndIf
                EndWhile
        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

        VRACRESC_TOTAL_ST=[\Sistemas\Vendas\NotaC->Valor Despesas Acessorias]+
                          [\Sistemas\Vendas\NotaC->Valor do Seguro          ]+
                          [\Sistemas\Vendas\NotaC->Valor do Frete           ]
        TXACRESC_TOTAL_ST=(VRACRESC_TOTAL_ST/[\Sistemas\Vendas\NotaC->Valor Mercadoria])*100

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

          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        =UF_ALIQUOTA_ICMS_INTERNA
          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     =0
          VL_ICMS        =0
          VL_BC_ICMS_ST  =0
          VL_ICMS_ST     =0
          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      =0
          VL_IPI         =0

          CST_PIS        =[\Sistemas\Vendas\NotaI->PIS_CST                 ]
          VL_BC_PIS      =0
          ALIQ_PIS       =[\Sistemas\Vendas\NotaI->PIS_Aliquota            ]
          QUANT_BC_PIS   =0
          ALIQ_PIS2      =0
          VL_PIS         =0

          CST_COFINS     =[\Sistemas\Vendas\NotaI->COFINS_CST              ]
          VL_BC_COFINS   =0
          ALIQ_COFINS    =[\Sistemas\Vendas\NotaI->COFINS_Aliquota         ]
          QUANT_BC_COFINS=0
          ALIQ_COFINS2   =0
          VL_COFINS      =0

          VL_OPR         =0

          PORC_IT_ST     =([\Sistemas\Vendas\NotaI->Preco Total]/SOMA_ITENS_ST)*100 
          PORC_IT_MERC   =([\Sistemas\Vendas\NotaI->Preco Total]/[\Sistemas\Vendas\NotaC->Valor Mercadoria])*100 
          PORC_IT_PIS_COF=(100*[\Sistemas\Vendas\NotaC->Valor Nota Fiscal])/[\Sistemas\Vendas\NotaC->Valor Mercadoria]
          PORC_IT_PIS_COF=PORC_IT_PIS_COF-100

          VR_ACRESC      =NDecimal((VRACRESC_TOTAL*PORC_IT_MERC)/100,2)

          If ALIQ_IPI>0
             Then VL_BC_IPI =VL_ITEM
                  VL_BC_IPI =VL_BC_IPI -NDecimal((VL_BC_IPI*ALIQ_RD_IPI)/100,2)                            
                  VL_IPI    =NDecimal((VL_BC_IPI *ALIQ_IPI)/100,2)
             Else VL_IPI    =[\Sistemas\Vendas\NotaI->Valor do IPI ]
          EndIf

          If ALIQ_ICMS>0 
             Then VL_BC_ICMS=VL_ITEM
                  VL_BC_ICMS=VL_BC_ICMS-VL_DESC
                  VL_RED_BC =NDecimal((VL_BC_ICMS*ALIQ_RD_ICMS)/100,2)
                  VL_BC_ICMS=VL_BC_ICMS-VL_RED_BC                   

                  If [\Sistemas\Vendas\NotaC->Consumidor Final]="S"
                     Then VL_BC_ICMS=VL_BC_ICMS+VR_ACRESC+VL_IPI
                  EndIf   

                  VL_ICMS   =NDecimal((VL_BC_ICMS*ALIQ_ICMS)/100,2)
             Else VL_ICMS   =[\Sistemas\Vendas\NotaI->Valor do ICMS]
          EndIf

					If [\Sistemas\Vendas\NotaC->Valor Substituicao ICMS]>0 And
					   [\Sistemas\Vendas\NotaI->Tributacao de ICMS     ]="S"
					   Then If CALCULA_ST="S" And MVA_ST>0 And VL_ITEM>0
           	         Then 
					                VL_BC_ICMS_ST=VL_ITEM
					                VL_BC_ICMS_ST=Round(VL_BC_ICMS_ST+((VL_ITEM*TXACRES_ST)/100),2)
					                VL_BC_ICMS_ST=VL_BC_ICMS_ST+VL_IPI
					                VL_BC_ICMS_ST=VL_BC_ICMS_ST+Round((VL_BC_ICMS_ST*MVA_ST)/100,2)
					                VL_ICMS_ST   =Round((VL_BC_ICMS_ST*ALIQ_ICMS_ST)/100,2)
					                VL_ICMS_ST   =VL_ICMS_ST-VL_ICMS
					
                     Else VL_BC_ICMS_ST=NDecimal(([\Sistemas\Vendas\NotaC->Valor BCSubstituicao ICMS]*PORC_IT_ST)/100,2)
                          VL_ICMS_ST   =NDecimal(([\Sistemas\Vendas\NotaC->Valor Substituicao ICMS  ]*PORC_IT_ST)/100,2)
                  EndIf
					EndIf

          If Search("VENDA",[\Sistemas\Vendas\NotaC->Descricao da Destinacao])>0 And
             [\Sistemas\Vendas\NotaI->PIS_Aliquota]>0
             Then VL_BC_PIS=VL_ITEM
                  Switch
                    Case PORC_IT_PIS_COF>0: VL_BC_PIS   =Round(VL_BC_PIS   +((VL_BC_PIS   * PORC_IT_PIS_COF    )/100),2)
                    Case PORC_IT_PIS_COF<0: VL_BC_PIS   =Round(VL_BC_PIS   -((VL_BC_PIS   *(PORC_IT_PIS_COF*-1))/100),2)
                  EndSwitch
                  VL_PIS   =Round(VL_PIS   +((VL_BC_PIS   *ALIQ_PIS   )/100),2)
          EndIf
          If Search("VENDA",[\Sistemas\Vendas\NotaC->Descricao da Destinacao])>0 And
             [\Sistemas\Vendas\NotaI->COFINS_Aliquota]>0
             Then VL_BC_COFINS=VL_ITEM
                  Switch
                    Case PORC_IT_PIS_COF>0: VL_BC_PIS   =Round(VL_BC_COFINS+((VL_BC_COFINS* PORC_IT_PIS_COF    )/100),2)
                    Case PORC_IT_PIS_COF<0: VL_BC_PIS   =Round(VL_BC_COFINS-((VL_BC_COFINS*(PORC_IT_PIS_COF*-1))/100),2)
                  EndSwitch
                  VL_COFINS=Round(VL_COFINS+((VL_BC_COFINS*ALIQ_COFINS)/100),2)
          EndIf

          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           ]=PegaTpImposto("PIS","",CST_PIS)
          [BCALC_PIS         ]=VL_BC_PIS
          [ALIQ_PIS          ]=ALIQ_PIS
          [VL_PIS            ]=VL_PIS

          [TRIBCOFINS        ]=PegaTpImposto("COFINS","",CST_PIS)
          [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        ]=""

          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])

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

        ;**************************************************************************
        ;*Atualiza dados complementares da nota
        ;**************************************************************************
        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->UF                    ]
        [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   
 
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
[EX_IPI                   ]=[\Sistemas\Estoque\Itens->EX_TIPI                 ]
[SUBGRALIQ_DIF            ]=""
[MEDICAMENT               ]="N"
[ALIQPRESUNC              ]=""
[COD_MATER2               ]=""
UnlockRecord

EndProc


;*******************************************************************************
;* 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," ")+"//"


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           ],11," ")
          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 "\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 "\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          ],07,3)
          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              ],01," ")
          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           ],01," ")
          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           ],20," ")
          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 "\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 "\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([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 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  ],07,3)
          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   ],20," ")
          Print File ARQ "\n"
        EndScan
        ClearAll
        Close Printer
EndIf
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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 "\n"
        EndScan
        ClearAll
        Close Printer
EndIf

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

cmd="Execvise Renomeia \""+NewARQ+"\" MASTER.ARJ"
Executa_Programa(cmd)
Sleep 2000
Deleta_Arquivo("MASTER.ARJ")

Sleep 2000
cmd="arj a MASTER DATA.TXT SRC.TXT MATER.TXT FMVI*.TXT"
Executa_Programa(cmd)
Sleep 2000

cmd="Execvise Renomeia MASTER.ARJ \""+NewARQ+"\""
Executa_Programa(cmd)

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")

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 PARA LIMPAR AGUARDE       *
;************************************
Proc LimpAguarde2L()
@ 23,0 ?? Fill(" ",80)
PaintCanvas Attribute 31 23,0,23,79
@ 24,0 ?? Fill(" ",80)
PaintCanvas Attribute 31 24,0,24,79
EndProc ; (LimpAguarde2L)

;*******************************************************************************
;* 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":
       MSG_CAMPO="Selecione uma ou mais op‡oes se desejar !"
       TECLA    ="=Mover  Barra de espa‡o=Marca/Desmarca  "
  Case Campo="TG_OPCOD":
       MSG_CAMPO="Selecione uma op‡„o !"
       TECLA    ="=Selecionar  "
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
If Not IsAssigned(SYS_CLIENTE_CONFEC)  Then SYS_CLIENTE_CONFEC=""  EndIf

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

PTREF=""

Array VSDGOPCAO[3]

ATIVIDADE  = ""
ESTEMPRESA = ""

If Not IsFile("C:\\Vise\\Util\\Arj.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 15 Width 72

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

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

    Frame Single From 05,01 to 09,27
    Label  @ 05,02 "Op‡”es de Movimentos " For "TG_OPCOES"
    CheckBoxes @6,02 Height 3 Width 24 Tag "TG_OPCOES"
    "Registro de Entrada " to VSDGOPCAO[1],
    "Registro de Saida   " to VSDGOPCAO[2],
    "Geral               " to VSDGOPCAO[3]

    Frame Single From 05,29 to 09,69
    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 @ 11,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
     Pushbutton @ 11,35 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)
  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\\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")

  LimpAguarde2L()

EndWhile
ClearAll
Release Vars All
Release Procs All
