;** ENFCE53 ********************************************************************
;*  Exportacao de dados p/ ECF ID Brasil  NFCE   Layout 027                    *
;*******************************************************************************
;Desenvolvido  em: 27/06/2019 por Kamila Gomes
;Ultima Alteracao: 05/08/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes limpar View answer SDCarrega_F1()
;Ultima Alteracao: 12/08/2019 por Kamila Gomes
;Motivo Alteracao: Ajustes limpar View answer SDCarrega_F1()
;Ultima Alteracao: 14/08/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gerar remessa no privdir e depois copiar para destino 
;Ultima Alteracao: 13/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CheckTG_OPOF[1]
;Ultima Alteracao: 22/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes csosn 101->102 
;Ultima Alteracao: 10/11/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes IsRegimeSimplesNacional, IsRegimeSimplesNacionalESRB

;*******************************************************************************
;* Carrega F1 Personalizado do ShowDialog                                      *
;*******************************************************************************
Proc SDCarrega_F1()

;----- Se existe ECF's cadastradas para a EMPRESA ------------------------------
{Ask} {\\Sistemas\\Vendas\\Opaf_ecf} Check 
Moveto [Codigo da Empresa   ] TypeIn "~VSDGEMPRESA.."
Moveto [Inativo             ] TypeIn "not S"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then MSG = "N„o h  ECF cadastrada para a empresa "+VSDGEMPRESA+"!" 
        Return False
EndIf

;----- Verifica se tem mais um N§ de ECF cadastrado para a mesma EMPRESA -------
{Ask} {\\Sistemas\\Vendas\\Opaf_ecf} 
Moveto [Numero de Serie     ] TypeIn "Calc Count as Calculo"
Moveto [Numero ECF          ] Check
Moveto [Codigo da Empresa   ] TypeIn "~VSDGEMPRESA.."
Moveto [Inativo             ] TypeIn "not S"
Do_It!
ClearAll

View  "Answer"
Scan
  If [Calculo]>1
     Then ClearAll
          MSG = "H  mais de um n§ de ECF cadastrada para a empresa "+VSDGEMPRESA+"!" 
          Return False
  EndIf   
EndScan
ClearAll

;---- Monta os ECF's de acordo com a EMPRESA -----------------------------------  
{Ask} {\\Sistemas\\Vendas\\Opaf_ecf}
Moveto [Numero de Serie     ] Check
Moveto [Numero ECF          ] Check
Moveto [Modelo Impressora   ] Check
Moveto [Reinicio operacao   ] Check
Moveto [Codigo do Usuario   ] Check
Moveto [Codigo da Empresa   ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Inativo             ]       TypeIn "not S"
Do_It!
ClearAll

view "Answer"
Monta_Opcoes("ECF","F1_Temp")
ClearAll

Return True

EndProc ;SDCarrega_F1()                     
                                                                                                        
;*******************************************************************************
;* Proximo arquivo RM                                                          *
;*******************************************************************************
Proc ArqRM(tipo)
Private num, tipo, narqr, narql, wcc, cc, ccr, ccp, num1, num2,s

If Not IsAssigned(AuxTabela) Or Not Istable(AuxTabela)
   Then Mensagem("N„o foi gerado a tabela [AuxTabela]!")
        Return
EndIf

Sort AuxTabela On "Registro","Grupo","Sequencia"
ClearAll

Aguarde("Gerando a remessa para o INTEGRADOR/OPAF")

FileWrite ARQ from ""
View NOWINDOW AuxTabela
Scan
  FileWrite Append ARQ from [Campo]+"\n"
EndScan
ClearAll

If IsTable(PrivDir()+"Temp_LWR") Then Delete PrivDir()+"Temp_LWR" EndIf

{Tools} {Info} {Inventory} {Files} TypeIn VSDGCAMINHOW+"\\RM0*.R"  Enter ClearImage
Rename "List" PrivDir()+"Temp_LWR"

{Tools} {Info} {Inventory} {Files} TypeIn VSDGCAMINHOW+"\\RM0*.L*" Enter ClearImage
Add "List"  PrivDir()+"Temp_LWR"

{Tools} {Info} {Inventory} {Files} TypeIn VSDGCAMINHO +"\\RM0*.R*" Enter ClearImage
Add "List"  PrivDir()+"Temp_LWR"

{Tools} {Info} {Inventory} {Files} TypeIn VSDGCAMINHO +"\\RM0*.L*" Enter ClearImage
Add "List"  PrivDir()+"Temp_LWR"
ClearAll

if istable("Keyviol") then delete "Keyviol" endif

num=0

View  PrivDir()+"Temp_LWR"
Scan          
  CopyToArray REG

  narqr=REG["Name"]

  If [Date]<=(Today()-2)
     Then 
          Deleta_Arquivo(VSDGCAMINHO +"\\"+narqr)
          Deleta_Arquivo(VSDGCAMINHOW+"\\"+narqr)
  EndIf

  s=SubStr(REG["Name"],3,6)
  If E_Numerico(s)
     Then num=Numval(s)
  EndIf   

EndScan   
ClearAll
Delete PrivDir()+"Temp_LWR"

num=num+1

if search("OPAF_INT",VSDGCAMINHOW)>0
   then ARQR  =VSDGCAMINHOW+"\\"+"RM"+AlinhM(STrVal(num),6)+".R"
   Else ARQR  =VSDGCAMINHO +"\\"+"RM"+AlinhM(STrVal(num),6)+".R"
endif

Copia_Arquivo(ARQ+" "+ARQR)

COR_MENSAGEM="1"
MSG    ="Arquivo remessa gerado em: // //"
MSG=MSG+ARQR+"// //"
MSG=MSG+"Verificar:                                                         //"
MSG=MSG+"- INTEGRADOR do OPAF j  executou ou esta executando alguma remessa;//"
MSG=MSG+"- Resultado do arquivo LOG desta remessa se esta Ok ou algum erro. ////"
MSG=MSG+"Dura‡„o: "+Tempohrs(tini)
Mensagem(MSG)

Return True
EndProc

;*******************************************************************************
;* Gera Cabecalho                                                              *
;*******************************************************************************
Proc Cabecalho()
ClearAll

LINHA = "001"
LINHA = LINHA + AlinhM(Tira_CharNum(CNPJ_Empr),14)
LINHA = LINHA + "REM"
LINHA = LINHA + AlinhM(StrVal(Day(Today())),2)+AlinhM(StrVal(Month(Today())),2)+AlinhM(StrVal(Year(Today())),4)
LINHA = LINHA + SubStr(Time(),1,2)+SubStr(Time(),4,2)+SubStr(Time(),7,2)
LINHA = LINHA + "0000"
LINHA = LINHA + "027"
SeqReg=0

Edit AuxTabela
GravaReg("")
Do_it!
ClearAll

EndProc

;*******************************************************************************
;* Gera Rodape                                                                 *
;*******************************************************************************
Proc Rodape()
ClearAll

LINHA = "099"
LINHA = LINHA + AlinhM(StrVal(SeqReg),10)
        
Edit AuxTabela
GravaReg("")
Do_it!
ClearAll                                 

EndProc

;*******************************************************************************
;* Gera Usuarios                                                               *
;*******************************************************************************
Proc Usuarios()
ClearAll

NR=NRecords("Opaf_Us")

View AuxTabela
CoEdit "Opaf_Us"
Scan
  Barra(NR, RecNo())
  AGUARDE("Aguarde, Exportando Usu rios "+BARRA_STRING)

  ;***** Nivel de Acesso ******************************************
  Switch
    Case Upper([Nivel de Acesso])="OPERADOR"   : NV_ACESSO = "1"
    Case Upper([Nivel de Acesso])="SUPERVISOR" : NV_ACESSO = "2"
    Case Upper([Nivel de Acesso])="GERENTE"    : NV_ACESSO = "3"
    OtherWise                                  : NV_ACESSO = " "  
  EndSwitch
  
  ;***** Status ***************************************************
  Switch
    Case Upper([Status])="ATIVO"   : STATUS = "A"
    Case Upper([Status])="INATIVO" : STATUS = "I"
    OtherWise                      : STATUS = " "  
  EndSwitch

  LINHA = "002"
  LINHA = LINHA + Completa([Chapa],15," ")
  LINHA = LINHA + Completa([Senha],60," ")
  LINHA = LINHA + Completa(STATUS,1," ")
  LINHA = LINHA + Completa(NV_ACESSO,1," ")
  LINHA = LINHA + "A"
                  
  GravaReg("")
EndScan
Do_it!
ClearAll

EndProc ;Usuarios()

;*******************************************************************************
;* Gera Arquivo Texto -- Clientes                                              *
;*******************************************************************************
Proc Clientes()
ClearAll
         
;ConsumidorFinal()

NR=NRecords("\\Sistemas\\Cadastro\\Destinat")

View AuxTabela
View "\\Sistemas\\Cadastro\\Cidades"
CoEdit "\\Sistemas\\Cadastro\\Destinat" 
Scan
  Barra(NR, RecNo())
  AGUARDE("Aguarde, Exportando Clientes "+BARRA_STRING)

  If IsBlank([CGC])                   Then Loop EndIf
  If [CGC]="00.000.000/0000-00"       Then Loop EndIf
  If [CGC]="000.000.000-00"           Then Loop EndIf
  If [CGC]="00000.000/0000-00"        Then Loop EndIf
  If [CGC]="99.999.999/9999-99"       Then Loop EndIf
  If [CGC]="999.999.999-99"           Then Loop EndIf
  If [CGC]="11.111.111/1111-11"       Then Loop EndIf
  If [CGC]="111.111.111-11"           Then Loop EndIf
  If [CGC]="11111.111/1111-11"        Then Loop EndIf
  If Tipo_CGC_CPF([CGC])=""           Then Loop EndIf
  If IsBlank([Razao Social])          Then Loop EndIf
  If [Tipo]<>"C"                      Then Loop EndIf
  
  If [Data da Manutencao]<>BlankDate() And [Inativo]="S"
     Then If [Data da Manutencao] < (Today()-30)
             Then Loop
          EndIf   
  EndIf
  If [Data da Manutencao]=BlankDate()
     Then If (VSDGDTINI2<>BlankDate() And [Data_Cadastro] < VSDGDTINI2) Or [Data_Cadastro] > VSDGDTFIM2
             Then Loop  
          EndIf
     Else If (VSDGDTINI2<>BlankDate() And [Data da Manutencao] < VSDGDTINI2) Or [Data da Manutencao] > VSDGDTFIM2
             Then Loop  
          EndIf
  EndIf        
  
       
  LINHA = "004"
  LINHA = LINHA + Completa(AlinhM([Codigo],4),15," ") 
  LINHA = LINHA + Completa(Tira_CharNum([CGC]),14," ")
  LINHA = LINHA + Format("W60,AL",Tira_charEspecial([Razao Social]))
  
  PegaEndereco([Endereco])

  LINHA = LINHA + Format("W60,AL",Tira_charEspecial(End_Logradouro))
  LINHA = LINHA + Format("W30,AL",Tira_charEspecial([Cidade]))
  LINHA = LINHA + Format("W60,AL",Tira_charEspecial([Bairro]))
  LINHA = LINHA + Format("W02,AL",[UF])
  LINHA = LINHA + Format("W15,AL",Tira_charEspecial([Telefone]))
  LINHA = LINHA + Format("W60,AL",[Endereco_Eletronico])
  
  If [Inativo]="N" 
    Then LINHA = LINHA + "A"
         LINHA = LINHA + Completa(" ",25," ")  
    Else LINHA = LINHA + "I"
         LINHA = LINHA + "Verificar com a Gerencia!" 
  EndIf
  
  ; Complemento de 01 a 04 = 20.20.40.40   
  LINHA = LINHA + Completa(" ",20," ")
  LINHA = LINHA + Completa(" ",20," ")
  LINHA = LINHA + Completa(" ",40," ")
  LINHA = LINHA + Completa(" ",40," ")
  
  If [Tipo Pessoa]="JURIDICA"
    Then LINHA = LINHA + Format("W14,AL",Monta_String([IE])) 
    Else LINHA = LINHA + Format("W14,AL",Monta_String([RG])) 
  EndIf   
  
  LINHA = LINHA + AlinhM(Tira_CharNum([Cep]),8)
  LINHA = LINHA + Completa(End_Numero,10," ")

  GetRecord "\\Sistemas\\Cadastro\\Cidades" [Cidade] To RegCidade
  If RetVal
     Then If RegCidade["UF"]<>"EX"
             Then LINHA = LINHA + Completa(StrVal(RegCidade["Codigo_Cidade"]),7," ") 
             Else LINHA = LINHA + Completa(" ",7," ")
          EndIf
     Else LINHA = LINHA + Completa(" ",7," ")         
  EndIf  
  
  LINHA = LINHA + Completa(Tira_charEspecial(End_Complemento),60," ")
  LINHA = LINHA + Completa(Monta_String([ISUFRAMA]),9," ")
  LINHA = LINHA + Completa([Endereco_Eletronico],200," ")
  LINHA = LINHA + Completa(" ",100," ")
  LINHA = LINHA + Completa("",13,"0")  ;kamila
  LINHA = LINHA + "N"
  
  If [Data de Nascimento]<>BlankDate()
     then DataNasc   = [Data de Nascimento]
          DiaNasc    = AlinhM(StrVal(Day(DataNasc)),2)
          MesNasc    = AlinhM(StrVal(Month(DataNasc)),2)
          AnoNasc    = AlinhM(StrVal( Year(DataNasc)),4)
          LINHA = LINHA + DiaNasc + MesNasc + AnoNasc
          LINHA = LINHA + DiaNasc + MesNasc
     else LINHA = LINHA + Completa(" ",12," ")
  EndIf
   
   LINHA = LINHA + Completa(" ",200," ")   ;ver qual obs ‚ pra mandar
   LINHA = LINHA + Completa(" ",120," ")
  
  GravaReg("")
EndScan
Do_It!
ClearAll

EndProc ;Clientes()

;*******************************************************************************
;* Consumidor Final                                                            *
;*******************************************************************************
Proc ConsumidorFinal()
 
LINHA = "004"
LINHA = LINHA  + "123456789012345"
LINHA = LINHA  + "12345678901234"
LINHA = LINHA  + Format("W30,AL",Tira_charEspecial("CONSUMIDOR FINAL"))
LINHA = LINHA  + Format("W30,AL",Tira_charEspecial(""))
LINHA = LINHA  + Format("W30,AL",Tira_charEspecial(""))
LINHA = LINHA  + Format("W20,AL",Tira_charEspecial(""))
LINHA = LINHA  + Format("W02,AL","MG")
LINHA = LINHA  + Format("W15,AL","")
LINHA = LINHA  + Format("W60,AL","")
        
Edit AuxTabela
GravaReg("")
Do_it!
ClearAll

EndProc ;ConsumidorFinal()

;*******************************************************************************
;* Fun‡Æo para Pegar Endere‡o                                                  *
;*******************************************************************************
Proc PegaEndereco(s)
Private s,posl,posn

End_Logradouro =""
End_Numero     =""
End_Complemento=""

posl=SearchFrom(",",s,1)
If posl<2
   Then End_Logradouro =s
   Else End_Logradouro=LTrim(RTrim(SubStr(s,1,posl-1)))
       
        posn=SearchFrom(",",s,posl+1)
        If posn>1
           Then End_Numero     =LTrim(RTrim(SubStr(s,posl+1,(posn-posl)-1)))
                End_Complemento=LTrim(RTrim(SubStr(s,posn+1,40)))
           Else End_Numero     =LTrim(RTrim(SubStr(s,posl+1,40)))     
        EndIf
EndIf   

EndProc ;PegaEndereco()

;*******************************************************************************
;* Fun‡Æo para Montar String                                                   *
;*******************************************************************************
Proc Monta_String(MSTRING)
M_NOVO = ""

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

Return(M_NOVO)

EndProc ; (Monta_String)       

;*******************************************************************************
;* Gera Arquivo Texto p/ Produtos                                              *
;*******************************************************************************
Proc Produtos()                      
Private DESC_NCM,REG_ITEM, DATA_ITENS_INATIVOS
ClearAll

If IsEmpty(TabelaREF)
   Then Return
EndIf  

;---- C¢digos de barras inativos serao enviados antes do envio dos itens -------
If IsBlank(VSDGDTINI2)
   Then DATA_ITENS_INATIVOS = Today()-90   ;Ultimos 90 Dias
   Else DATA_ITENS_INATIVOS = VSDGDTINI2 
EndIf

View AuxTabela
Coedit "\\Sistemas\\Estoque\\Bar_Inat"
Scan For [Data da Manutencao]>=DATA_ITENS_INATIVOS And [Data da Manutencao]<=VSDGDTFIM2
  LINHA = "033"
  LINHA = LINHA + Completa([Codigo do Item],20," ")
  LINHA = LINHA + Completa([Codigo de Barras],20," ")
  LINHA = LINHA + "S"
  LINHA = LINHA + Completa("",200," ")  ;Kamila Verificar
  GravaReg("0")
EndScan
do_it! 
ClearAll
Release Vars DATA_ITENS_INATIVOS

;VSDGOPCAO[2] PROCESSO = "PRODUTO"
;VSDGOPCAO[3] PROCESSO = "PRECO" 
;VSDGOPCAO[4] PROCESSO = "INVENT" 
;VSDGOPCAO[2] PROCESSO = "VINCULADO"
;VSDGOPCAO[8] PROCESSO = "ESTOQUE"

NR=NRecords(TabelaREF)

View AuxTabela
View "\\Sistemas\\Estoque\\Bar_Inat"
View "\\Sistemas\\Estoque\\Iten_Bar"
CoEdit TabelaREF                                                   
Scan
  Barra(NR, RecNo())
  AGUARDE("Aguarde, Exportando Produtos"+BARRA_STRING)
      
  ;---- Produtos ---------------------------------------------------------------
  If VSDGOPCAO[2] And [Flag]<>"X"
     Then 
          if IsRegimeSimplesNacional(TP_Empr)
             then 
                  if [Tributacao de ICMS]="D"
                     then 
                          [Tributacao de ICMS      ]="O"
                          [Tipo Tributacao         ]=SubStr([Tipo Tributacao],1,1)+"90"
                          [Aliquota de ICMS        ]=0
                          [Aliquota Reduzida BCICMS]=0
                  endif
                  [PIS_CST        ]="99"
                  [PIS_Aliquota   ]=0
                  [COFINS_CST     ]="99"
                  [COFINS_Aliquota]=0
          endif

          if IsRegimeSimplesNacionalESRB(TP_Empr)
             then 
                  [PIS_CST        ]="99"
                  [PIS_Aliquota   ]=0
                  [COFINS_CST     ]="99"
                  [COFINS_Aliquota]=0
          endif

          DESC_NCM="NCM: "+[NCM] 
  
          LINHA = "005"
          LINHA = LINHA + Completa([Codigo do Item  ],20," ")
          LINHA = LINHA + Completa(Tira_CharEspecial([Descricao do Item]),40," ")
          LINHA = LINHA + Completa(Tira_CharEspecial([Unidade Fiscal   ]),3," ")
          If Sys_Codigo_Cliente="0000"
             Then LINHA = LINHA + Completa(Tira_CharEspecial(SubStr([Descricao Complementar],1,30)),30," ")
             Else LINHA = LINHA + Completa(Tira_CharEspecial(SubStr(DESC_NCM,1,30)),30," ")
          EndIf
          LINHA = LINHA + Completa(Tira_CharEspecial([Referencia]),30," ")
          
          If PARAM_CODBAR_PESO>0 And [Peso Variavel]="S"
             Then ;---- Regra para Produto Pes vel e conforme Cliente ----------
                  LINHA = LINHA + Completa(SubStr([Codigo do Item],Len([Codigo do Item])-PARAM_CODBAR_PESO+1,PARAM_CODBAR_PESO),30," ")
             Else If [Tipo Codigo_Barras]<>""
                     Then LINHA = LINHA + Completa(Tira_CharEspecial([Codigo de Barras]),30," ")
                     Else LINHA = LINHA + Completa(Tira_CharEspecial(" "),30," ")
                  EndIf
          EndIf
           
          Switch
            Case [Inativo]="S" : LINHA = LINHA + "I"
            OtherWise          : LINHA = LINHA + "A"
          EndSwitch
          
          if IsRegimeSimplesNacional(TP_Empr)
            Then 
                 if [CSOSN]="101" then [CSOSN]="102" endif
                 LINHA = LINHA + AlinhM([CSOSN],3)
            Else LINHA = LINHA + AlinhM(Substr([Tipo Tributacao],2,3),3)
          EndIf
            
          Switch
           Case [Tributacao de ICMS]="D" :LINHA = LINHA + "T"
           Case [Tributacao de ICMS]="S" :LINHA = LINHA + "F"
           Case [Tributacao de ICMS]="I" :LINHA = LINHA + "I"
           Case [Tributacao de ICMS]="N" :LINHA = LINHA + "N"
           Case [Tributacao de ICMS]="O" :LINHA = LINHA + "N"
           OtherWise                     :LINHA = LINHA + " "
          EndSwitch
          
          If [Tributacao de ICMS]="D"
             Then If [Aliquota Reduzida BCICMS]>0
                    Then res  = Round(([Aliquota de ICMS] * [Aliquota Reduzida BCICMS])/100,2)
                         aliq = [Aliquota de ICMS] - res
                         LINHA = LINHA + AlinhM(StrVal(Int(aliq*100)),4)
                    Else LINHA = LINHA + AlinhM(StrVal(Int([Aliquota de ICMS]*100)),4)
                  EndIf  
             Else LINHA = LINHA + "0000"
          EndIf
          
          ;Switch
           ;Case [Tipo do Item]="T" : LINHA = LINHA + "T"
           ;OtherWise               : LINHA = LINHA + "P"
          ;EndSwitch
          
          LINHA = LINHA + "T"
                    
          LINHA = LINHA + AlinhM("0",13)
          If [Peso Variavel]="S"
             Then LINHA = LINHA + "S" 
             Else LINHA = LINHA + "U"
          EndIf   
          LINHA = LINHA + "F"         
          
          If [Tipo do Item]="C"
            Then LINHA = LINHA + "S"
            Else LINHA = LINHA + " "
          EndIf  
          
          LINHA = LINHA + Completa(Substr([Tipo Tributacao],1,1),1," ")
          
          If [Tipo do Item]="C"
            Then 
                Switch
                 Case [Tributacao de ISSQN]="D" :LINHA = LINHA + "N"
                 Case [Tributacao de ISSQN]="N" :LINHA = LINHA + "N"
                 Case [Tributacao de ISSQN]="I" :LINHA = LINHA + "I"
                 Case [Tributacao de ISSQN]="R" :LINHA = LINHA + "R"
                 Case [Tributacao de ISSQN]="S" :LINHA = LINHA + "S"
                EndSwitch
            Else LINHA = LINHA + " "
          EndIf
          
          LINHA = LINHA + "N"   
          
          If [Tipo do Item]="C"
            Then LINHA = LINHA + Completa(StrVal([Codigo_Servico]),10," ")
                 LINHA = LINHA + "00"
            Else LINHA = LINHA + Completa([NCM           ],10," ")
              If [EX_TIPI] = "" 
                Then LINHA = LINHA + "00"
                Else LINHA = LINHA + Completa([EX_TIPI],2,"0")
              EndIf              
          EndIf
          
          If [Fracionado]="S"
             Then LINHA = LINHA + "S"
             Else LINHA = LINHA + "N"
          EndIf
          LINHA = LINHA + Completa("",13,"0")
          LINHA = LINHA + Completa([CEST],7,"0")
          LINHA = LINHA + Completa("",4,"0")      ;kamila verificar
          LINHA = LINHA + Completa("",13,"0")     ;kamila verificar
          
          GravaReg("")
          
          ;---- C¢digo de Barras (Vinculado) -----------------------------------
          CodigoVinculado("EXCLUSAO")
          CodigoVinculado("INCLUSAO")    
  
          ;---- DADOS NFCe PRODUTO ---------------------------------------------
          LINHA = "036"
          LINHA = LINHA + Completa([Codigo do Item  ],20," ")
          If [Tipo Codigo_Barras]="A-EAN13" or
             [Tipo Codigo_Barras]="B-EAN8"      
             then LINHA = LINHA + Completa([Codigo de Barras],14," ")
             else LINHA = LINHA + spaces(14)
          endif   
          LINHA = LINHA + Completa([NCM             ],10," ")
          LINHA = LINHA + AlinhM(Tira_CharNum(LTrim(Rtrim(Format("W13.2",[Aliquota Reduzida BCICMS])))),13)
          LINHA = LINHA + Completa([PIS_CST         ],2," ")
          LINHA = LINHA + AlinhM(StrVal(Int([PIS_Aliquota]*100)),4)
          LINHA = LINHA + Completa([COFINS_CST      ],2," ")
          LINHA = LINHA + AlinhM(StrVal(Int([COFINS_Aliquota]*100)),4)
          If [Tipo Codigo_Barras]="A-EAN13" or
             [Tipo Codigo_Barras]="B-EAN8"      
             then LINHA = LINHA + Completa([Codigo de Barras],14," ")
             else LINHA = LINHA + spaces(14)
          endif   
          LINHA = LINHA + Completa(Tira_CharEspecial([Unidade Fiscal   ]),3," ")
          LINHA = LINHA + AlinhM(StrVal(Int(1*1000)),13) ;;QUANTIDADE TRIBUTAVEL
          LINHA = LINHA + AlinhM(Tira_CharNum(LTrim(Rtrim(Format("W13.2",[Preco Unitario1])))),13) ;;VALOR UNITµRIO TRIBUTAVEL
          LINHA = LINHA + Completa("",2,"0") ;;MOTIVO DA DESONERACAO
          LINHA = LINHA + Completa([CEST],7,"0")
          
          GravaReg("")
  EndIf        

  ;---- Pre‡o dos Itens --------------------------------------------------------
  If VSDGOPCAO[3]
      Then GravaPreco()
  EndIf
  
  ;---- Invent rio - Estoque de Ontem ------------------------------------------  
  If VSDGOPCAO[4]
     Then Inventario()        
  EndIf

  ;---- Estoque Atual ----------------------------------------------------------
  If VSDGOPCAO[8]    
     Then EstoqueAtual()
  EndIf
EndScan
Do_it!
ClearAll

EndProc ;Produtos()

;*******************************************************************************
;* Tabela de Pre‡o                                                             *
;*******************************************************************************
Proc GravaPreco()
Private wx, valor, DesTbPreco, Preco

If [Data Ultimo Reajuste]<>BlankDate()
   Then If (VSDGDTINI2<>BlankDate() And [Data Ultimo Reajuste] < VSDGDTINI2) Or [Data Ultimo Reajuste] > VSDGDTFIM2
           Then Return  
        EndIf
EndIf
                                             
For wx From 1 To 2
 Switch
   Case wx=1 : If IsBlank([Preco Unitario1]) Or [Preco Unitario1]=0
                  Then Loop
                  Else DesTbPreco = VSDGTABELA+"VISTA" 
                       Preco      = [Preco Unitario1]
               EndIf
   Case wx=2 : If IsBlank([Preco Unitario2]) Or [Preco Unitario2]=0
                  Then Loop 
                  Else DesTbPreco = VSDGTABELA2+"PRAZO"
                       Preco      = [Preco Unitario2]
               EndIf
 EndSwitch
 
 If [TbPreco]="X" 
    Then Valor = AlinhM(Tira_CharNum(LTrim(Rtrim(Format("W13.2",Preco)))),13)
         
         LINHA = "006"
         LINHA = LINHA + Completa([Codigo do Item  ],20," ")
         LINHA = LINHA + DesTbPreco
         LINHA = LINHA + Valor  
         
         GravaReg("")
 EndIf      
EndFor       
         
EndProc ;GravaPreco()

;*******************************************************************************
;* C¢digo Vinculado - ExclusÆo/InclusÆo                                        *
;*******************************************************************************
Proc CodigoVinculado(PARAM)
Private PARAM,COD_ITEM,INATIVO,AUX_COD_BAR

COD_ITEM  = [Codigo do Item  ]
INATIVO   = [Inativo         ]
COD_BARRA = [Codigo de Barras]

If PARAM_CODBAR_PESO>0 And [Peso Variavel]="S"
   Then COD_BARRA = Rtrim(SubStr(COD_ITEM,Len(COD_ITEM)-PARAM_CODBAR_PESO+1,PARAM_CODBAR_PESO))
EndIf

Switch
  Case PARAM = "EXCLUSAO" :
      ;---- Adicionado em 04/01/2019 -------------------------------------------
      Moveto "\\Sistemas\\Estoque\\Bar_Inat"
      Moveto [Codigo do Item]      
      Locate COD_ITEM
      If RetVal
         Then While [Codigo do Item] = COD_ITEM
                LINHA = "033"
                LINHA = LINHA + Completa(COD_ITEM,20," ")
                LINHA = LINHA + Completa([Codigo de Barras],20," ")
                LINHA = LINHA + "S"
                LINHA = LINHA + Completa("",200," ")  ;Kamila Verificar
                       
                GravaReg("0")
                Skip
                If Eot() Then QuitLoop EndIf
                Locate Next COD_ITEM
                If Not RetVal Then QuitLoop EndIf
              EndWhile
      EndIf
      Moveto TabelaREF
      
      If INATIVO="S" And Not IsBlank(COD_BARRA)
         Then LINHA = "033"
              LINHA = LINHA + Completa([Codigo do Item],20," ")
              LINHA = LINHA + Completa(COD_BARRA,20," ")
              LINHA = LINHA + "S"
              LINHA = LINHA + Completa("",200," ")  ;Kamila Verificar
              
              GravaReg("0")
      EndIf
      
  Case PARAM = "INCLUSAO" :  
  
       OK = False
       If [Inativo]<>"S" 
          Then 
               OK=True
          
          
             ; For wx From 1 To 2
             ; Switch
             ;   Case wx=1 : If Not IsBlank([Preco Unitario1]) And [Preco Unitario1]>0 
             ;                  Then OK=True
             ;                       QuitLoop
             ;               EndIf
             ;   Case wx=2 : If Not IsBlank([Preco Unitario2]) And [Preco Unitario2]>0 
             ;                  Then OK=True
             ;                       QuitLoop
             ;               EndIf
             ; EndSwitch
             ; EndFor
       EndIf
      
      If Ok
         Then AUX_COD_BAR = ""
              If Not IsBlank(COD_BARRA)
                 Then AUX_COD_BAR = COD_BARRA
                      LINHA = "033"
                      LINHA = LINHA + Completa([Codigo do Item],20," ")
                      LINHA = LINHA + Completa(COD_BARRA,20," ")
                      LINHA = LINHA + " "
                      LINHA = LINHA + Completa("",200," ")  ;Kamila Verificar
                      
                      GravaReg("1")
              EndIf   
               
              Moveto "\\Sistemas\\Estoque\\Iten_Bar"
              Moveto [Codigo do Item]      
              Locate COD_ITEM
              If RetVal
                 Then While COD_ITEM=[Codigo do Item]
                       If AUX_COD_BAR<>[Codigo de Barras]
                          Then LINHA = "033"
                               LINHA = LINHA + Completa(COD_ITEM,20," ")
                               LINHA = LINHA + Completa([Codigo de Barras],20," ")
                               LINHA = LINHA + " "
                               LINHA = LINHA + Completa("",200," ")  ;Kamila Verificar
                               
                               GravaReg("1")
                       EndIf         
                       Skip
                       If Eot() Then QuitLoop EndIf
                       Locate Next COD_ITEM
                       If Not RetVal
                          Then QuitLoop
                       EndIf   
                     EndWhile
              EndIf
              ;---- Adicionado em 04/01/2019 -------------------------------------------
              Moveto "\\Sistemas\\Estoque\\Bar_Inat"
              Moveto [Codigo do Item]      
              Locate COD_ITEM
              If RetVal
                 Then While [Codigo do Item] = COD_ITEM
                        LINHA = "033"
                        LINHA = LINHA + Completa(COD_ITEM,20," ")
                        LINHA = LINHA + Completa([Codigo de Barras],20," ")
                        LINHA = LINHA + "S"
                        LINHA = LINHA + Completa("",200," ")  ;Kamila Verificar
                               
                        GravaReg("1")
                        Skip
                        If Eot() Then QuitLoop EndIf
                        Locate Next COD_ITEM
                        If Not RetVal Then QuitLoop EndIf
                      EndWhile
              EndIf                       
              Moveto TabelaREF     
      EndIf
Endswitch

EndProc ;CodigoVinculado()

;*******************************************************************************
;* Invent rio do Estoque                                                       *
;*******************************************************************************
Proc Inventario()
Private QT,CT

LINHA = "020"
LINHA = LINHA + VSDGDIAREF + VSDGMESREF + VSDGANO
LINHA = LINHA + Completa([Codigo do Item],20," ")
LINHA = LINHA + Completa(Tira_CharEspecial([Descricao do Item]),40," ")
If [Saldo Atual]>0
    Then QT = NDecimal([Saldo Atual],3)
         LINHA = LINHA + AlinhM(StrVal(Int(QT*1000)),13)
    Else LINHA = LINHA + AlinhM("0",13)
EndIf   
If ([Custo Total Atual]/[Saldo Atual])>0
   Then CT = NDecimal([Custo Total Atual]/[Saldo Atual],2)
        LINHA = LINHA + AlinhM(StrVal(Int(CT*100)),13)
   Else LINHA = LINHA + AlinhM("0",13)
EndIf
LINHA = LINHA + "1"
LINHA = LINHA + Completa("",14,"0")
LINHA = LINHA + Completa("",14," ")
LINHA = LINHA + Completa(Tira_CharEspecial(UF_Empr),2," ")
LINHA = LINHA + Completa(Tira_CharEspecial([Unidade Fiscal]),3," ")

; novos campos versÆo 7.0
LINHA = LINHA + Completa("",20,"0")
LINHA = LINHA + Completa("",20,"0")
LINHA = LINHA + Completa("",20,"0")
LINHA = LINHA + Completa("",20,"0")
LINHA = LINHA + Completa("",20,"0")

GravaReg("")

EndProc ;Inventario()

;*******************************************************************************
;* Estoque Atual                                                               *
;*******************************************************************************
Proc EstoqueAtual()

If [Sdestq]<>"X" 
   Then Return 
EndIf
 
LINHA = "041"
LINHA = LINHA + Completa([Codigo do Item  ],20," ")
If [Saldo Atual Hoje]>0
  Then LINHA = LINHA + AlinhM(StrVal(Int([Saldo Atual Hoje]*1000)),13)
  Else LINHA = LINHA + AlinhM("0",13)
EndIf   
LINHA = LINHA + VSDGDIA + VSDGMES + VSDGANO
LINHA = LINHA + HORA     

GravaReg("")

EndProc ;EstoqueAtual()

;*******************************************************************************
;* Gera Arquivo Texto -- Vendedores                                            *
;*******************************************************************************
Proc Vendedores()
ClearAll

NR=NRecords("\\Sistemas\\Cadastro\\Represen")

View AuxTabela
CoEdit "\\Sistemas\\Cadastro\\Represen"
Scan
  Barra(NR, RecNo())
  AGUARDE("Aguarde, Exportando Vendedores"+BARRA_STRING)

  LINHA = "003"
  LINHA = LINHA + Completa([Codigo do Representante],10," ")
  LINHA = LINHA + Completa([Nome Fantasia Represent],30," ")
  Switch
    Case [Inativo Represent]="S" : LINHA = LINHA + "I"
    OtherWise                    : LINHA = LINHA + "A"
  EndSwitch  
                 
  GravaReg("")
EndScan
Do_it!
ClearAll

EndProc ; Vendedores()

;*******************************************************************************
;* Verifica Cond.Pagamento                                                     *
;*******************************************************************************
Proc VerCondPagto()
Private AUX

AUX = [Condicao de Pagamento]
If Type(NumVal(SubStr(AUX,1,1)))<>"N"
   Then LETRA = Asc(SubStr(AUX,1,1))
        LETRA = LETRA - 64
        Switch
          Case LETRA=1  : LETRA = "10" ;A
          Case LETRA=2  : LETRA = "11" ;B
          Case LETRA=3  : LETRA = "12" ;C
          Case LETRA=4  : LETRA = "13" ;D
          Case LETRA=5  : LETRA = "14" ;E
          Case LETRA=6  : LETRA = "15" ;F
          Case LETRA=7  : LETRA = "16" ;G
          Case LETRA=8  : LETRA = "17" ;H
          Case LETRA=9  : LETRA = "18" ;I
          Case LETRA=10 : LETRA = "19" ;J
          Case LETRA=11 : LETRA = "20" ;K
          Case LETRA=12 : LETRA = "21" ;L
          Case LETRA=13 : LETRA = "22" ;M
          Case LETRA=14 : LETRA = "23" ;N
          Case LETRA=15 : LETRA = "24" ;O
          Case LETRA=16 : LETRA = "25" ;P
          Case LETRA=17 : LETRA = "26" ;Q
          Case LETRA=18 : LETRA = "27" ;R
          Case LETRA=19 : LETRA = "28" ;S
          Case LETRA=20 : LETRA = "29" ;T
          Case LETRA=21 : LETRA = "30" ;U
          Case LETRA=22 : LETRA = "31" ;V
          Case LETRA=23 : LETRA = "32" ;W
          Case LETRA=24 : LETRA = "33" ;X
          Case LETRA=25 : LETRA = "34" ;Y
          Case LETRA=26 : LETRA = "35" ;Z
          OtherWise     : LETRA = (999935 * LETRA) + (65*LETRA)
                          LETRA = SubStr(LETRA,1,2)
        EndSwitch  
        CONDPAGTO = LETRA + SubStr(AUX,2,1)
   Else CONDPAGTO = AUX
EndIf

EndProc ;VerCondPagto()

;*******************************************************************************
;* Gera Arquivo Texto -- Cond.Pagamento                                        *
;*******************************************************************************
Proc CondPagtos(wa)
Private wa
ClearAll

Switch
  Case wa=1 : ;;;**** Forma de Pagamento  ******
              NR=NRecords("\\Sistemas\\Vendas\\OPAF_FP")
              
              View AuxTabela
              CoEdit "\\Sistemas\\Vendas\\OPAF_FP"
              Barra(NR, RecNo())
              AGUARDE("Aguarde, Exportando Formas de Pagamento "+BARRA_STRING)
  Case wa=2 : ;;;**** Condi‡Æo de Pagamento  ******
              NR=NRecords("\\Sistemas\\Vendas\\CondPgto")
              
              View AuxTabela
              CoEdit "\\Sistemas\\Vendas\\CondPgto"
              Barra(NR, RecNo())
              AGUARDE("Aguarde, Exportando Cond.Pagamento "+BARRA_STRING)
EndSwitch

Scan 
  Switch
    Case wa=1 : ;;;**** Forma de Pagamento  ******
        LINHA = "009"
        LINHA = LINHA + AlinhM([Codigo Operacao],2)
        LINHA = LINHA + Completa([Descricao Operacao],30," ")
        LINHA = LINHA + Completa([Descricao ECF],20," ")
        LINHA = LINHA + Completa([Tipo],1," ")
        LINHA = LINHA + Completa([Condicao de Pagamento],1," ")
        LINHA = LINHA + AlinhM([Numero Maximo de Parcelas],3)
        LINHA = LINHA + Completa([Gerenciador Padrao TEF],1," ")
        LINHA = LINHA + Completa([Ativo],1," ")
        ; posso limitar o troco se informar nos parametros do configurador
        If [Tipo]<>"E"
          Then LINHA = LINHA + "9999999999999"
          Else LINHA = LINHA + "0000000000000"  
        EndIf 
        If [Tipo] = "C" Or [Tipo] = "E"
          Then LINHA = LINHA + "NS" 
          Else LINHA = LINHA + "NN"      
        EndIf
        If [Tipo] = "C" Or [Tipo] = "E"
          Then LINHA = LINHA + "SN" 
          Else LINHA = LINHA + "NN"      
        EndIf      
        
        GravaReg("")
         
    Case wa=2 :  ;;;**** Condi‡Æo de Pagamento  ******
        If [Tipo de Pagamento]="O"  Then Loop EndIf
        If [Utiliza_ECF      ]<>"S" Then Loop EndIf
        If [Codigo_FP_ECF    ]<>"" And [Composicao de Dias]="" Then Loop EndIf 
      
        VerCondPagto()
      
        LINHA = "024"
        LINHA = LINHA + AlinhM(CONDPAGTO,4)
        LINHA = LINHA + Completa([Descricao CondPagto],30," ")
        LINHA = LINHA + "0000000000001"
      
        ;Transforma composi‡Æo de dias
        COMPDIAS=""
        If [Codigo_FP_ECF]<>""
         Then NP=[Numero de Parcelas]
              j=1
              i=1
              While i<=NP
                pos_s=SearchFrom("/",[Composicao de Dias],j)
                If pos_s=0
                  Then If i>1
                        Then NDIAS=NumVal(SubStr([Composicao de Dias],j,(Len([Composicao de Dias])-(j-1))))
                         Else If Not IsBlank([Composicao de Dias])
                                Then NDIAS=NumVal(SubStr([Composicao de Dias],j,Len([Composicao de Dias])))
                                Else NDIAS=0
                              EndIf
                       EndIf
                  Else NDIAS=NumVal(SubStr([Composicao de Dias],j,pos_s-j))
                       j=pos_s+1
                EndIf
                i=i+1
                If pos_s=0
                  Then COMPDIAS = COMPDIAS + AlinhM(StrVal(NDIAS),3)
                       QuitLoop 
                  Else COMPDIAS = COMPDIAS + AlinhM(StrVal(NDIAS),3)+ "/"
                EndIf  
              EndWhile
        EndIf  
        
        LINHA = LINHA + Completa(COMPDIAS,200," ")
        
        If [Taxa Desconto]>0
          Then LINHA = LINHA + AlinhM(Tira_CharNum(LTrim(Rtrim(Format("W13.2",[Taxa Desconto])))),13)
               LINHA = LINHA + "0000000000000"
               LINHA = LINHA + "0000000000000"
               LINHA = LINHA + "0000000000000"
               LINHA = LINHA + "999"
               LINHA = LINHA + AlinhM([Codigo_FP_ECF],2)
          Else 
              LINHA = LINHA + "0000000000000"
              LINHA = LINHA + "0000000000000" 
              LINHA = LINHA + "0000000000000"
              LINHA = LINHA + "0000000000000"
              LINHA = LINHA + "999"
              LINHA = LINHA + AlinhM([Codigo_FP_ECF],2)
        EndIf     
        
        LINHA = LINHA + "N"
        LINHA = LINHA + "A"  ;kamila
        LINHA = LINHA + "0000000000000"
        
        GravaReg("")
  EndSwitch
EndScan
Do_it!
ClearAll

Return

EndProc ; CondPagtos()

;*******************************************************************************
;* ROTINA PARA Ler/Gravacao Opcao                                              *
;*******************************************************************************
Proc ConfOpcoes(Opcao)
Private Opcao

Switch
  Case Opcao="Ler":
       If IsFile("EX_IDBR.sc")
           Then Play "EX_IDBR"
       EndIf

       If Not IsAssigned(VSDGCAMINHO)   Then VSDGCAMINHO ="C:\\OPAF\\MONITORA\\REMESSA"     EndIf
       If Not IsAssigned(VSDGCAMINHOW)  Then VSDGCAMINHOW="C:\\OPAF\\INTEGR~1\\WORK\\REM" EndIf

  Case Opcao="Gravar":
       FileWrite        "EX_IDBR.sc" From ";****** Variaveis de Configura‡„o Caminho Vise Informatica"+"\n"

       NCAMINHO=""
       For i From 1 to Len(VSDGCAMINHO)
         If SubStr(VSDGCAMINHO,i,1)=Chr(92)
            Then NCAMINHO=NCAMINHO+Chr(92)
         EndIf
         NCAMINHO=NCAMINHO+SubStr(VSDGCAMINHO,i,1)
       EndFor
       FileWrite Append "EX_IDBR.sc" From "VSDGCAMINHO="+Chr(34)+NCAMINHO+Chr(34)+"\n"

       NCAMINHO=""
       For i From 1 to Len(VSDGCAMINHOW)
         If SubStr(VSDGCAMINHOW,i,1)=Chr(92)
            Then NCAMINHO=NCAMINHO+Chr(92)
         EndIf
         NCAMINHO=NCAMINHO+SubStr(VSDGCAMINHOW,i,1)
       EndFor
       FileWrite Append "EX_IDBR.sc" From "VSDGCAMINHOW="+Chr(34)+NCAMINHO+Chr(34)+"\n"
       
EndSwitch

EndProc ;ConfOpcoes()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Gera_Tabela()
Private i,ii,prec,AUX_DATA,CODTAB,PARAM_ASK

ItemInativo              = ""
AuxItem                  = ""
ItemPrecoV               = ""
ItemPrecoP               = ""
ItemEstoqueAtual         = ""
ItemAExcluirDtManutencao = ""

For i From 1 To 4
  Switch
    Case i = 1 : ;---- Itens Inativos por mais de 30 Dias ----------------------
                 {Ask} {\\Sistemas\\Estoque\\Itens} 
                 Moveto [Codigo do Item          ] Check TypeIn "_CodI"
                 Moveto [Tipo do Item            ]       TypeIn "P Or C Or T Or E"
                 Moveto [Inativo                 ]       TypeIn "S"
                 {Ask} {\\Sistemas\\Estoque\\EstqPrm}
                 Moveto [Codigo da Empresa       ] TypeIn "~VSDGEMPRESA"
                 Moveto [Codigo do Item          ] TypeIn "_CodI"
                 Moveto [Data de Inatividade     ] Check TyPein "Not Blank"
                 Do_it!
                 ClearAll
                 
                 If Not IsEmpty("Answer")
                    Then AUX_DATA = Today()-30
                         {Ask} {Answer}
                         Moveto [Codigo do Item     ] Check
                         Moveto [Data de Inatividade] TyPein "<=~AUX_DATA"
                         Do_it!
                         CleaRall
                 EndIf                            
                 
                 ItemInativo = Adiciona_Indice_Temp("Codigo do Item")
                 
    Case i = 2 : If Not VSDGOPCAO[2]                                    Then Loop EndIf
                 If VSDGDTINI2 = BlankDate() And VSDGDTFIM2=BlankDate() Then Loop EndIf    
                 ;---- Data de Manuten‡Æo --------------------------------------
                 {Ask} {\\Sistemas\\Estoque\\Itens} 
                 Moveto [Codigo do Item          ] Check
                 Moveto [Tipo do Item            ]       TypeIn "P Or C Or T Or E" 
                 Moveto [Data_Cadastro           ] Check
                 Moveto [Data da Manutencao      ] Check
                 Do_it!
                 ClearAll
                 
                 AuxItem = Adiciona_Indice_Temp("Codigo do Item")        
                 
                 For ii From 1 To 2
                    Switch
                      Case ii = 1 : 
                                    ;{Ask} TypeIn AuxItem Enter Check
                                    ;Moveto [Data da Manutencao] TypeIn "Blank"
                                    ;Moveto [Data_Cadastro     ] TypeIn "<~VSDGDTINI2 Or >~VSDGDTFIM2"
                                    ;Do_it!
                                    ;ClearAll
                                    
                                    ;ItemAExcluirDtManutencao = Adiciona_Indice_Temp("Codigo do Item")
                                     
                      Case ii = 2 : {Ask} TypeIn AuxItem Enter Check
                                    Moveto [Data da Manutencao] TypeIn "Not Blank, <~VSDGDTINI2 Or >~VSDGDTFIM2"
                                    Do_it!
                                    ClearAll
                                    
                                    If ItemAExcluirDtManutencao=""
                                       Then ItemAExcluirDtManutencao = Adiciona_Indice_Temp("Codigo do Item")
                                       Else Add "Answer" ItemAExcluirDtManutencao
                                    EndIf
                    EndSwitch
                 EndFor
                 If Istable(AuxItem) Then Delete AuxItem EndIf
                 Release Vars AuxItem   
    
    Case i = 3 : If Not VSDGOPCAO[3] Then Loop EndIf
                 For prec From 1 To 2
                  Switch
                    Case prec=1 : CODTAB=VSDGTABELA
                    Case prec=2 : CODTAB=VSDGTABELA2
                  EndSwitch
                  If IsBlank(CODTAB) Then Loop EndIf
                  
                  For ii From 1 To 2
                    {Ask} {\\Sistemas\\Vendas\\TbPrIte}
                    Moveto [Codigo da Tabela    ] TypeIn "~CODTAB" 
                    Moveto [Codigo do Item      ] Check 
                    Moveto [Preco Unitario      ] Check TypeIn ">0"
                    Switch
                      Case ii=1 : Moveto [Data Ultimo Reajuste] Check TyPeIn "Blank"

                      Case ii=2 : Moveto [Data Ultimo Reajuste] Check TyPeIn "Not Blank, >=~VSDGDTINI2,<=~VSDGDTFIM2"
                    EndSwitch  
                    Do_It!
                    ClearAll
                    Switch
                      Case prec=1 : If ii=1
                                       Then ItemPrecoV = Adiciona_Indice_Temp("Codigo do Item")
                                       Else Add "Answer" ItemPrecoV
                                    EndIf   
                      Case prec=2 : If ii=1
                                       Then ItemPrecoP = Adiciona_Indice_Temp("Codigo do Item")
                                       Else Add "Answer" ItemPrecoP
                                    EndIf
                    EndSwitch
                  EndFor   
                Endfor            
                
                If Not IsEmpty(ItemInativo)
                   Then
                        For i From 1 To 2
                        
                          switch
                            case i=1 and ItemPrecoV<>"" :
                              {Ask} TypeIn ItemInativo Enter 
                              Moveto [Codigo do Item] Example "Ite"
                              {Ask} TypeIn ItemPrecoV Enter TypeIn "Fast Delete" Enter   
                              Moveto [Codigo do Item] Example "Ite"
                              Do_it!
                              Clearall     
                            
                            case i=2 and ItemPrecoP<>"" :
                              {Ask} TypeIn ItemInativo Enter 
                              Moveto [Codigo do Item] Example "Ite"
                              {Ask} TypeIn ItemPrecoP Enter TypeIn "Fast Delete" Enter
                              Moveto [Codigo do Item] Example "Ite"
                              Do_it!
                              Clearall     
                            
                          endswitch
                          
                        EndFor
                EndIf
   Case i = 4 : If Not VSDGOPCAO[8] Then Loop EndIf
                {Ask} {\\Sistemas\\Estoque\\SdEstq}
                Moveto [Codigo da Empresa] Check TypeIn "~VSDGEMPRESA" 
                Moveto [Codigo do Item   ] Check 
                Moveto [Ano Referencia   ] TypeIn "~VSDGANO"
                Moveto [Mes Referencia   ] TypeIn "~VSDGMES"
                Moveto [Saldo Atual      ] Check
                Do_It!
                ClearAll
                 
                ItemEstoqueAtual = Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item")
  EndSwitch     
EndFor  

;**** Itens ***************************************************** 
{Ask} {\\Sistemas\\Estoque\\Itens} 
Moveto [Codigo do Item          ] Check TypeIn "_Ite!" 
Moveto [Descricao do Item       ] Check
Moveto [Unidade Fiscal          ] Check
Moveto [Tipo do Item            ] Check TypeIn "P Or C Or T Or E" 
Moveto [Descricao Tipo do Item  ] Check
Moveto [Codigo da Familia       ] Check
Moveto [Descricao da Familia    ] Check
Moveto [Codigo do Grupo         ] Check
Moveto [Descricao do Grupo      ] Check
Moveto [Codigo da Marca         ] Check
Moveto [Descricao da Marca      ] Check
Moveto [Tributacao de ICMS      ] Check
Moveto [Aliquota de ICMS        ] Check  
Moveto [Tipo Tributacao         ] Check 
Moveto [Descricao Complementar  ] Check  
Moveto [Codigo Fornecedor       ] Check
Moveto [Inativo                 ] Check
Moveto [Referencia              ] Check  
Moveto [Codigo da Grade         ] Check  
Moveto [Tipo Codigo_Barras      ] Check  
Moveto [Codigo de Barras        ] Check  
Moveto [CSOSN                   ] Check  
Moveto [Aliquota Reduzida BCICMS] Check  
Moveto [Tributacao de ISSQN     ] Check  
Moveto [Codigo_Servico          ] Check  
Moveto [NCM                     ] Check  
Moveto [Data da Manutencao      ] Check  
Moveto [Data_Cadastro           ] Check  
Moveto [PIS_CST                 ] Check  
Moveto [PIS_Aliquota            ] Check  
Moveto [COFINS_CST              ] Check  
Moveto [COFINS_Aliquota         ] Check  
{Ask} {\\Sistemas\\Estoque\\Iten_Com}
moveto [Codigo do Item          ] TypeIn "_Ite" 
moveto [CEST                    ] Check
Moveto [EX_TIPI                 ] Check
Moveto [Peso Variavel           ] Check
Moveto [Situacao                ] Check
Moveto [Fracionado              ] Check
Do_It!
ClearAll
                       
CRIAR_TABELA = False
Adiciona_Campo("Answer","Codigo da Empresa(A4),"+
                        "Preco Unitario1($),"+
                        "Preco Unitario2($),"+     
                        "Saldo Atual Hoje(N),"+
                        "Saldo Atual(N),"+
                        "Valor Unitario($),"+
                        "Custo Total Atual($),"+
                        "Sdestq(A1),"+
                        "Data Ultimo Reajuste(D),"+
                        "Data de Inatividade(D),"+
                        "Flag(A1),"+
                        "TbPreco(A1)")
                                                
TabelaREF=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item")

{Ask} TypeIn TabelaREF Enter
Moveto [Codigo da Empresa] TypeIn "Changeto ~VSDGEMPRESA"
Do_It!
ClearAll 

{Ask} TypeIn TabelaRef Enter TypeIn "Fast Delete"
Moveto [Tributacao de ICMS] TypeIn "D"
Moveto [Aliquota de ICMS  ] TypeIn "<=0"
Do_It!
ClearAll

{Ask} TypeIn TabelaRef Enter TypeIn "Fast Delete"
Moveto [Tipo Tributacao   ] TypeIn "Blank"
Do_It!
ClearAll 

;----- Excluindo Itens Inativos a partir de determinado per¡odo ----------------
{Ask} TypeIn ItemInativo Enter 
Moveto [Codigo do Item] Example "Ite"
{Ask} TypeIn TabelaRef Enter TypeIn "Fast Delete" Enter
Moveto [Codigo do Item] Example "Ite"
Do_it!
Clearall

;---- Desprezando Itens com Data de Manuten‡Æo inferior ao informado -----------
If IsTable(ItemAExcluirDtManutencao)
   Then {Ask} TypeIn ItemAExcluirDtManutencao Enter 
        Moveto [Codigo do Item] Example "Ite"
        {Ask} TypeIn TabelaRef Enter 
        Moveto [Codigo do Item] Example "Ite"
        Moveto [Flag          ] TypeIn "Changeto X"
        Do_it!
        Clearall
EndIf
  
;Habilitar quando Lei Transparencia fiscal obrigatoria
;{Ask} TypeIn TabelaRef Enter TypeIn "Fast Delete"
;Moveto [Codigo do Item    ] TypeIn "_Cod"
;{Ask} {\\Sistemas\\Estoque\\Itens}
;Moveto [Codigo do Item    ] TypeIn "_Cod"  
;Moveto [NCM               ] TypeIn "Blank"
;Do_It!
;ClearAll          
  
If VSDGOPCAO[4] 
   Then ;*****Invent rio do dia anterior *******************
         SetDir "\\Sistemas\\Estoque"
         Play "RM_0011C"
         SetDir "\\Sistemas\\Vendas"
EndIf 
  
If VSDGOPCAO[8]
   Then {Ask} TypeIn ItemEstoqueAtual Enter
        Moveto [Codigo da Empresa] Example "Cemp" 
        Moveto [Codigo do Item   ] Example "CodI"
        Moveto [Saldo Atual      ] Example "Sald" 
        {Ask} TypeIn TabelaREF Enter TypeIn "Fast"
        Moveto [Codigo da Empresa] Example "Cemp" 
        Moveto [Codigo do Item   ] Example "CodI"
        Moveto [Saldo Atual Hoje ] TypeIn "Changeto _Sald"
        Moveto [Sdestq           ] TypeIn "Changeto X" 
        Do_It!
        ClearAll
EndIf

If VSDGOPCAO[3]  
   Then For i From 1 To 2
          Switch 
            Case i=1 : If Not IsTable(ItemPrecoV) Or (IsTable(ItemPrecoV) And IsEmpty(ItemPrecoV)) Then Loop EndIf
                       {Ask} TypeIn ItemPrecoV Enter
                       Moveto [Preco Unitario] TypeIn "_PrUn"
            Case i=2 : If Not IsTable(ItemPrecoP) Or (IsTable(ItemPrecoP) And IsEmpty(ItemPrecoP)) Then Loop EndIf
                       {Ask} TypeIn ItemPrecoP Enter
                       Moveto [Preco Unitario] TypeIn "_PrUn"
          EndSwitch   
          Moveto [Codigo do Item      ] TypeIn "_CodI"
          Moveto [Data Ultimo Reajuste] TypeIn "_datp"
          {Ask} TypeIn TabelaREF Enter
          Moveto [Codigo do Item      ] TypeIn "_CodI"
          Moveto [TbPreco             ] TypeIn "Changeto X"
          Moveto [Data Ultimo Reajuste] TypeIn "Changeto _datp"
          Switch
            Case i=1 : Moveto [Preco Unitario1] TypeIn "Changeto _PrUn"
            Case i=2 : Moveto [Preco Unitario2] TypeIn "Changeto _PrUn"
          EndSwitch
          Do_It!
          ClearAll
        EndFor
EndIf          
   
If IsTable(ItemInativo)              Then Delete ItemInativo              EndIf         
If IsTable(ItemPrecoV)               Then Delete ItemPrecoV               EndIf               
If IsTable(ItemPrecoP)               Then Delete ItemPrecoP               EndIf 
If IsTable(ItemEstoqueAtual)         Then Delete ItemEstoqueAtual         EndIf

Release Vars ItemInativo, ItemPrecoV, ItemPrecoP, ItemEstoqueAtual  

EndProc ;Gera_Tabela()         

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog_DtExp(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_DTINI2"         : Campo="NO"
            Case Campo="TG_DTFIM2"         : Campo="TG_DTINI2"
            Case Campo="YES" Or Campo="NO": Campo="TG_DTINI2"
          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_DTINI2"           : Campo="TG_DTFIM2"
                    Case Campo="TG_DTFIM2"           : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
 Case Campo="TG_DTINI2" : MSG_CAMPO="Em Branco = Data desde do Inicio"
 Case Campo="TG_DTFIM2" : MSG_CAMPO="Informe a Data Final"
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_Dialog_DtExp()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Data_Exp()
Private Temp1
LimpAguarde()

Temp1      = True
VSDGDTINI2 = BlankDate()
VSDGDTFIM2 = BlankDate()

While True
  ShowDialog "Per¡odo de Exporta‡Æo de Clientes/Produtos/Tabela de Pre‡o" Proc "SD_Dialog_DtExp"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 07 Width 72

    Label  @ 00,00 "Per¡odo" For "TG_DTINI2"
    Label  @ 01,00 "de" For "TG_DTINI2"
    Accept @ 01,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI2" To VSDGDTINI2
    Label  @ 01,17 "at‚" For "TG_DTFIM2"
    Accept @ 01,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM2" To VSDGDTFIM2

    Pushbutton @ 03,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 03,28 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog

  If Not RetVal 
     Then Temp1 = False 
          QuitLoop 
  EndIf
    
  If VSDGDTFIM2=BlankDate()
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf
  QuitLoop
EndWhile

Return Temp1  
EndProc ;Data_Exp()

;*******************************************************************************
;* Grava_Registro                                                              *
;*******************************************************************************
Proc GravaReg(T)
Private T,TABOLD

If SubStr(LINHA,1,3)<>"001" And SubStr(LINHA,1,3)<>"099"
   Then SeqReg = SeqReg + 1
EndIf   

TABOLD = Table()

Moveto AuxTabela
End 
If SubStr(LINHA,1,3)<>"001" Then Down EndIf
[Registro ] = SubStr(LINHA,1,3)
[Grupo    ] = T
If SubStr(LINHA,1,3)<>"001" And SubStr(LINHA,1,3)<>"099"
   Then [Sequencia] = SeqReg
EndIf   
[Campo    ] = LINHA

Moveto TABOLD

EndProc

;*******************************************************************************
;* Verifica se a empresa est  cadastrado no OPAF_ECF                           *
;*******************************************************************************
Proc Verifica_Empresa_OpafECF()

;---- Implementado em 07.11.2016 -----------------------------------------------
NAO_ACHOU = 0
EMPRESA_CADASTRADA=False
View "Opaf_Ecf"
Scan
  If [Codigo da Empresa]=""
     Then NAO_ACHOU = NAO_ACHOU + 1
          QuitLoop
  EndIf
EndScan
ClearImage

If NAO_ACHOU > 0
   Then COR_MENSAGEM="ALERTA"
        MSG = 
        Completa("Empresa nÆo vinculada ao n§ do ECF.",70," ")+"//"+
        Completa("Ser  preciso realizar este v¡nculo para prosseguir com a exporta‡„o.",70," ")+"////"+
        Completa("Informe a empresa em todos os registros da seguinte rotina: ",70," ")+"//"+
        Completa("FATURAMENTO > OPAF - Integra‡„o > 39. Informa‡”es adicionais do ECF",70," ")
        Mensagem(MSG)
        Return False    
EndIf   
Release Vars NAO_ACHOU,EMPRESA_CADASTRADA,COR_MENSAGEM
Return True                             

EndProc ;Verifica_Empresa_OpafECF()

;*******************************************************************************
;* 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: 
          If Campo="TG_NECF"
              Then If Not SDCarrega_F1()
                      Then MENSAGEM(MSG)
                      Else Seleciona_Opcoes("ECF","F1_Temp")
                   EndIf
              Else Dialog_F1()    
          EndIf        
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_TABELA"        : Campo="TG_EMPRESA"
            Case Campo="TG_TABELA2"       : Campo="TG_TABELA"
            Case Campo="TG_CAMINHO"       : Campo="TG_TABELA2"
            Case Campo="TG_CAMINHOW"      : Campo="TG_CAMINHO"
            Case Campo="TG_NECF"          : Campo="TG_CAMINHOW"
            Case Campo="TG_OPCOES"        : Campo="TG_NECF"
            Case Campo="YES" Or Campo="NO": Campo="TG_OPCOES"
          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"    : 
                         VSDGEMPRESA=ControlValue("TG_EMPRESA")
                         If Not IsBlanK(VSDGEMPRESA)
                            Then VSDGEMPRESA   = AlinhM(VSDGEMPRESA,4)
                                 VSDGNECF      = ""
                                 VSDGNSERIE    = ""
                                 VSDGNREINICIO = ""
                                 If Not SDCarrega_F1()
                                    Then MENSAGEM(MSG)
                                    Else Campo="TG_TABELA"
                                 EndIf   
                         EndIf     
                    Case Campo="TG_TABELA"     :
                        If Not IsBlank(VSDGTABELA)
                           Then Campo="TG_TABELA2"
                        EndIf
                    Case Campo="TG_TABELA2"    : Campo="TG_CAMINHO"
                    Case Campo="TG_CAMINHO"    :
                         VSDGCAMINHO=ControlValue("TG_CAMINHO")
                         If Not IsBlanK(VSDGCAMINHO)
                            Then Campo="TG_CAMINHOW"
                         EndIf
                    Case Campo="TG_CAMINHOW"    :
                         VSDGCAMINHOW=ControlValue("TG_CAMINHOW")
                         If Not IsBlanK(VSDGCAMINHOW)
                            Then Campo="TG_NECF"
                         EndIf
                    Case Campo="TG_NECF"       : Campo="TG_OPCOES"
                         VSDGNECF=ControlValue("TG_NECF")
                         If Not IsBlanK(VSDGNECF)
                            Then VSDGNECF=AlinhM(VSDGNECF,2)
                                 If Not SDCarrega_F1()
                                    Then MENSAGEM(MSG)
                                         Campo="TG_NECF"
                                    Else If Not Checa_Opcoes("ECF",VSDGNECF)
                                            Then VSDGNSERIE    = ""
                                                 VSDGNREINICIO = ""
                                                 MENSAGEM("Numero ECF n„o Cadastrado !")       
                                                 Campo="TG_NECF"   
                                                 
                                         EndIf
                                 EndIf 
                           Else MENSAGEM("Numero ECF n„o Cadastrado !")
                                 Campo="TG_NECF"      
                         EndIf 
                    Case Campo="TG_OPCOES"     :    
                         If (VSDGOPCAO[1]=False) And
                            (VSDGOPCAO[2]=False) And
                            (VSDGOPCAO[3]=False) And
                            (VSDGOPCAO[4]=False) And
                            (VSDGOPCAO[5]=False) And
                            (VSDGOPCAO[6]=False) And
                            (VSDGOPCAO[7]=False) And
                            (VSDGOPCAO[8]=False)
                            Then Campo="TG_OPCOES"
                            Else Campo="YES"
                         EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
 Case Campo="TG_EMPRESA" : MSG_CAMPO="Informe a Empresa"
 Case Campo="TG_TIPOE"   : MSG_CAMPO="Tipo de Exporta‡„o (P=Parcial  T=Total)"
 Case Campo="TG_CAMINHO" : MSG_CAMPO="Caminho de remessa OPAF.         Exemplo: C:\\OPAF\\MONITORA\\REMESSA"
 Case Campo="TG_CAMINHOW": MSG_CAMPO="Caminho de controle INTEGRADOR.  Exemplo: C:\\INTEGR~1\\WORK\\REM"
 Case Campo="TG_TABELA"  : MSG_CAMPO="Tabela de Pre‡o A VISTA"
 Case Campo="TG_TABELA2" : MSG_CAMPO="Tabela de Pre‡o A PRAZO"
 Case Campo="TG_OPCOES"  : MensagemCheckBoxes()
  Case Campo="TG_NECF"    : MSG_CAMPO="Informe o Numero do ECF e confira o Numero de Serie! " 
                           TECLA=TECLA+"F1=Consultar" 
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_Dialog()

;*******************************************************************************
;*  Rotina para mostrar as horas                                               *
;*******************************************************************************
Proc Tempohrs(tini)
private tini,hrs,seg,h,m,s, tfim

tfim=ticks()
if tfim<tini
   then seg=(86400000-tini)
        seg=(seg+tfim)/1000
   else seg=(tfim-tini)/1000
endif

h=seg/3600
m=(h-int(h))*60
s=(m-int(m))*60

hrs=AlinhM(StrVal(int(h)),2)+":"+
    AlinhM(StrVal(int(m)),2)+":"+
    AlinhM(StrVal(Round(s,0)),2)
return hrs

Endproc ; (Tempohrs)

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf

sys_valor()

LimpAguarde()

ConfOpcoes("Ler")
VSDGEMPRESA=""
VSDGDTINI=BlankDate()
VSDGDTFIM=BlankDate()
VSDGNSERIE=""
VSDGNECF=""
Array CheckTG_OPOF[1]        CheckTG_OPOF[1]       =False ; False=+OF, True=-OF

VSDGDIAREF = AlinhM(StrVal(Day(Today()-1)),2)
VSDGDIA    = AlinhM(StrVal(Day(Today())),2)
VSDGMES    = AlinhM(StrVal(Month(Today())),2)
VSDGANO    = AlinhM(StrVal( Year(Today())),4)
HORA       = Substr(Time(),1,2)+Substr(Time(),4,2)+Substr(Time(),7,2)
If VSDGDIA = "01"
   Then VSDGMESREF = AlinhM(StrVal(Month(Today()-1)),2)
   Else VSDGMESREF = VSDGMES
EndIf

DTFIMREF  = Today()-1
VSDGDTINI = Primeiro_Dia(VSDGMES+VSDGANO)
VSDGDTFIM = DTFIMREF 

Array VSDGOPCAO[8]
VSDGOPCAO[1]=True
VSDGOPCAO[2]=True
VSDGOPCAO[3]=True
VSDGOPCAO[4]=False
VSDGOPCAO[5]=False
VSDGOPCAO[6]=False
VSDGOPCAO[7]=False
VSDGOPCAO[8]=True

VSDGDTINI2  = BlankDate()
VSDGDTFIM2  = BlankDate()
             
If Not Verifica_Empresa_OpafECF()
   Then Return
EndIf

COR_MENSAGEM="1"
MSG=    "Antes de executar esta rotina:                                      // //"
MSG=MSG+" - Verifique se o INTEGRADOR do OPAF esta carregado;                //" 
MSG=MSG+" - Visualize o INTEGRADOR para acompanhar a opera‡Æo;               //" 
MSG=MSG+" - Visualize na pasta remessa o resultado do LOG desta remessa:     //" 
MSG=MSG+"   * pasta= "+VSDGCAMINHOW+"                // //" 
MSG=MSG+" - Ao exportar o invent rio, lembre de reprocessar estoque primeiro."
Mensagem(MSG)
Release Vars COR_MENSAGEM

DATAR=Format("D13",StrVal(DTFIMREF))

While True
 ShowDialog "Exporta‡„o de dados p/ OPAF - VersÆo 7.0" Proc "SD_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "TAB","ReverseTab","ENTER","ESC","F1",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140    
     @ 05,12 Height 17 Width 72

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

    Label  @ 02,00 "Tabela A VISTA"  For "TG_TABELA"
    Accept @ 03,01 Width 08 "A5"  Picture "#*#" Tag "TG_TABELA" To VSDGTABELA
    Accept @ 03,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMTAB" To VSDGNOMTAB

    Label  @ 04,00 "Tabela A PRAZO"  For "TG_TABELA2"
    Accept @ 05,01 Width 08 "A5"  Picture "#*#" Tag "TG_TABELA2" To VSDGTABELA2
    Accept @ 05,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMTAB2" To VSDGNOMTAB2

    Label  @ 06,00 "Caminho OPAF"  For "TG_CAMINHO"
    Accept @ 07,01 Width 33 "A37"  Picture "!*!" Tag "TG_CAMINHO" To VSDGCAMINHO
    
    Label  @ 08,00 "Caminho INTEGRADOR"  For "TG_CAMINHOW"
    Accept @ 09,01 Width 33 "A37"  Picture "!*!" Tag "TG_CAMINHOW" To VSDGCAMINHOW
    
    Label  @ 10,00 "ECF"  For "TG_NECF"
    Accept @ 11,01 Width 05 "A2"  Picture "#*#" Tag "TG_NECF" To VSDGNECF
    
    Label  @ 10,06 "Numero de Serie"  For "TG_NSERIE"
    Accept @ 11,07 Width 33 "A20"  Picture "#*#" Tag "TG_NSERIE" To VSDGNSERIE

    Label  @ 01,35 "Op‡oes " For "TG_OPCOES"
    CheckBoxes @2,36 Height 8 Width 26 Tag "TG_OPCOES"
    "Clientes         " to VSDGOPCAO[1],
    "Produtos         " to VSDGOPCAO[2],
    "Tabelas de Pre‡os" to VSDGOPCAO[3],
    "Estoque Atual    " to VSDGOPCAO[8],                       
    "Invent rio "+DATAR to VSDGOPCAO[4],
    "Usu rios         " to VSDGOPCAO[5],
    "Vendedores       " to VSDGOPCAO[6],
    "Cond.Pagtos      " to VSDGOPCAO[7]

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  If VSDGOPCAO[1]=True Or VSDGOPCAO[2]=True Or VSDGOPCAO[3]=True
     Then If Not Data_Exp()
             Then Loop
          EndIf                       
  EndIf
                         
  If IsBlank(VSDGEMPRESA)
     Then Mensagem("Empresa inv lida !")
          Loop
  EndIf                                                            

  If Direxists(VSDGCAMINHO)=0
     Then Mensagem("Caminho especificado n„o existe !")
          Loop
  EndIf
  
  If IsBlank(VSDGNECF)
     Then Mensagem("Numero ECF Inv lido!")
          Loop
  EndIf  

  If Not SDCarrega_F1()
     Then MENSAGEM(MSG)
          Loop
  EndIf   
  
  tini=ticks()  
  
  If IsAssigned(AuxTabela) And IsTable(AuxTabela) Then Delete AuxTabela EndIf
  AuxTabela = Cria_Tabela("","Registro(A3),Grupo(A1),Sequencia(N),Campo(M70)")  
              
  If SubStr(VSDGCAMINHO,Len(VSDGCAMINHO),1)="\\"
     Then VSDGCAMINHO=SubStr(VSDGCAMINHO,1,Len(VSDGCAMINHO)-1)
  EndIf
  
  View "\\Sistemas\\Cadastro\\Empresas"
  Moveto [Codigo da Empresa]
  Locate VSDGEMPRESA
  If RetVal
     Then CNPJ_Empr=[CGC Empresa    ]
            UF_Empr=[UF Empresa     ]
            TP_Empr=[Tipo da Empresa]
     Else CNPJ_Empr=""
            UF_Empr=""
            TP_Empr=""
  EndIf
  ClearAll
  
  ;----- Envia registro 044 p/ excluir todas as referˆncias no OPAF ------------
  If IsBlank(VSDGDTINI2) And VSDGOPCAO[2]
     Then GERA_044=True
     Else GERA_044=False 
  EndIf   
  
  ;----- PARAM utilizado tamb‚m no BALCAO --------------------------------------
  Switch
    Case SYS_CODIGO_CLIENTE = "0235" : PARAM_CODBAR_PESO = 6
    Case SYS_CODIGO_CLIENTE = "0399" : PARAM_CODBAR_PESO = 4
    OtherWise                        : PARAM_CODBAR_PESO = 0
  Endswitch

  
  ARQ=PrivDir()+"REMESSA.TXT"
  If IsFile(ARQ) Then Deleta_Arquivo(ARQ) EndIf

  {Tools} {Net} {AutoRefresh} {60}
               
  Aguarde("Processando dados") 
  Cabecalho()
  
  If VSDGOPCAO[2] Or
     VSDGOPCAO[3] Or
     VSDGOPCAO[4] Or
     VSDGOPCAO[8] 
     Then Gera_Tabela()
  EndIf   
                       
  If VSDGOPCAO[5]=True Then Usuarios()    EndIf   ;PROCESSO = "USUARIO" 
  If VSDGOPCAO[6]=True Then Vendedores()  EndIf   ;PROCESSO = "VENDEDOR" 
  If VSDGOPCAO[1]=True Then Clientes()    EndIf   ;PROCESSO = "CLIENTE"          
  If VSDGOPCAO[7]=True Then CondPagtos(1) EndIf   ;PROCESSO = "CPAGTO1"            
  If VSDGOPCAO[7]=True Then CondPagtos(2) EndIf   ;PROCESSO = "CPAGTO2"          

  If VSDGOPCAO[2]=True Or ;Produtos                         PROCESSO = "PRODUTO"
     VSDGOPCAO[3]=True Or ;Produtos - Tabelas de Pre‡os     PROCESSO = "PRECO" 
     VSDGOPCAO[4]=True Or ;Produtos - Invent rio            PROCESSO = "INVENT" 
     VSDGOPCAO[2]=True Or ;Produtos - Codigo Vinculado      PROCESSO = "VINCULADO"
     VSDGOPCAO[8]=True    ;Produtos - Estoque Atual         PROCESSO = "ESTOQUE"
     Then Produtos()
  EndIf
               
  Rodape()
  
  ARQRM("Normal")

  ConfOpcoes("Gravar")
  
  If IsAssigned(AuxTabela) And IsTable(AuxTabela) Then Delete AuxTabela EndIf

  LimpAguarde()   
EndWhile

ClearAll
Release Vars All
Release Procs All
