;** EXP_DJ *********************************************************************
;*  Exportacao de dados p/ ECF ID Brasil  DJ                                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 10/02/2014 por Bruno Carvalho
;Ultima Alteracao: 06/03/2014 por Bruno Carvalho
;Motivo Alteracao: Atualizado layout Imposto("ISSQN")              
;Ultima Alteracao: 20/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes "Iten_Com" -> [Situacao] e [EX_TIPI]
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()
;Ultima Alteracao: 26/04/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ [Data de Nascimento] ser consultada pela Destinat 

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

;*******************************************************************************
;Transformar em Valor                                                          *
;*******************************************************************************
Proc Valor(VR,TAM,NUM_CASAS)
Private VR,TAM,NUM_CASAS, AUX1, AUX2 

;VR        = Valor a ser atribu¡do
;TAM       = Tamanho do valor
;NUM_CASAS = Tamanho do numero de casas decimais

If VR=BlankNum() Or VR=""
   Then Return Completa("0",TAM,"0")
EndIf

VR = StrVal(VR)

Pos = Search(".",VR)
If Pos > 0
   Then AUX1 = SubStr(VR,1,Pos-1)
        AUX2 = SubStr(VR,Pos+1,9) 
        If Len(AUX2) < NUM_CASAS
           Then AUX2 = Completa(AUX2,NUM_CASAS,"0")
        EndIf    
        AUX1 = AlinhM(AUX1 + AUX2,TAM)
        
   Else If NUM_CASAS=BlankNum() Or NUM_CASAS=""
           Then Return AlinhM(VR,TAM) 
        EndIf
   
        AUX1 = Completa("0",NUM_CASAS,"0")  
        AUX1 = AlinhM(VR+AUX1,TAM)  
EndIf

Return AUX1

EndProc ;Valor

;*******************************************************************************
;* Gera Arquivo Texto -- Clientes                                              *
;*******************************************************************************
Proc Clientes()
Private REG_CLIENTE, INFO_CLIENTE, FINANCAS_CLIENTE, ENTREGA_CLIENTE, OBS_CLIENTE,
        MSG_CLIENTE
ClearAll

ARQIMP=VSDGCAMINHO+"\\CLIENTE.TXT"
If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf
    
INICIAR = 0    
    
NR=NRecords("\\Sistemas\\Cadastro\\Destinat")

View "\\Sistemas\\Cadastro\\Cidades"
View "\\Sistemas\\Cadastro\\FichaCli"
View "\\Sistemas\\Cadastro\\End_Cob"
View "\\Sistemas\\Cadastro\\DestObs"
View "\\Sistemas\\Cadastro\\DestMsg"
View "\\Sistemas\\Cadastro\\Destinat"

Scan
  CopyToArray REG_CLIENTE 
  
  If REG_CLIENTE["Tipo"]<>"C"                      Then Loop EndIf
  If IsBlank(REG_CLIENTE["CGC"])                   Then Loop EndIf
  If REG_CLIENTE["CGC"]="00.000.000/0000-00"       Then Loop EndIf
  If REG_CLIENTE["CGC"]="000.000.000-00"           Then Loop EndIf
  If REG_CLIENTE["CGC"]="00000.000/0000-00"        Then Loop EndIf
  If REG_CLIENTE["CGC"]="11.111.111/1111-11"       Then Loop EndIf
  If REG_CLIENTE["CGC"]="111.111.111-11"           Then Loop EndIf
  If REG_CLIENTE["CGC"]="11111.111/1111-11"        Then Loop EndIf
  If Tipo_CGC_CPF(REG_CLIENTE["CGC"])=""           Then Loop EndIf
  If IsBlank(REG_CLIENTE["Razao Social"])          Then Loop EndIf
  
  Barra(NR, RecNo())
  AGUARDE("Aguarde, Exportando Clientes "+BARRA_STRING)

  ;***** Situa‡Æo do Cliente / N¡vel de Acesso ***************************
  Switch
    Case REG_CLIENTE["Situacao do Cliente"]="RECADASTRO" : Situacao_Cliente="0"
    Case REG_CLIENTE["Situacao do Cliente"]="PESSIMO"    : Situacao_Cliente="2"
    Case REG_CLIENTE["Situacao do Cliente"]="REGULAR"    : Situacao_Cliente="5"
    Case REG_CLIENTE["Situacao do Cliente"]="BOM"        : Situacao_Cliente="7"
    Case REG_CLIENTE["Situacao do Cliente"]="OTIMO"      : Situacao_Cliente="9"
    OtherWise                                            : Situacao_Cliente="9"  
  EndSwitch

  ;***** Data do Cadastro ************************************************
  Data = REG_CLIENTE["Data_Cadastro"]
  If Len(Data)=9 Then Data = "0"+StrVal(Data) EndIf
  If Len(Data)=7 Then Data = "0"+StrVal(Data) EndIf 
  If Len(Data)=8 
     Then Digitos = SubStr(Data,7,2)
          If Search(".",Digitos)=0
             Then If NumVal(Digitos)<20
                     Then Digitos = "20"+Digitos
                     Else Digitos = "19"+Digitos
                  EndIf    
                  Data = SubStr(Data,1,6)+Digitos
          EndIf   
  EndIf    
  If Len(Data)<>7 And Len(Data)<>8 And Len(Data)<>9 And Len(Data)<>10 Then Data=BlankDate() EndIf
  Switch
    Case Data=BlankDate() Or
         Data=""           : Data = "00000000"
    OtherWise              : Data = SubStr(Data,1,2)+SubStr(Data,4,2)+SubStr(Data,7,4)      
  EndSwitch   

  ;***** Tipo de Pessoa **************************************************
  Cpf_Cnpj = Tira_CharNum(REG_CLIENTE["CGC"])
  Switch
    Case REG_CLIENTE["Tipo Pessoa"]="JURIDICA" : Tipo_Pessoa = "J" 
    OtherWise                                  : Tipo_Pessoa = "F" 
  EndSwitch
  If Cpf_Cnpj="" Then Tipo_Pessoa=" " EndIf
  
  ;***** Data da Altera‡Æo do Cadastro ***********************************
  Data_Alteracao = REG_CLIENTE["Data da Manutencao"]
  If Len(Data_Alteracao)=9 Then Data_Alteracao = "0"+StrVal(Data_Alteracao) EndIf
  If Len(Data_Alteracao)=7 Then Data_Alteracao = "0"+StrVal(Data_Alteracao) EndIf 
  If Len(Data_Alteracao)=8 
     Then Digitos = SubStr(Data_Alteracao,7,2)
          If Search(".",Digitos)=0
             Then If NumVal(Digitos)<20
                     Then Digitos = "20"+Digitos
                     Else Digitos = "19"+Digitos
                  EndIf    
                  Data_Alteracao = SubStr(Data_Alteracao,1,6)+Digitos
          EndIf   
  EndIf    
  If Len(Data_Alteracao)<>7 And Len(Data_Alteracao)<>8 And Len(Data_Alteracao)<>9 And Len(Data_Alteracao)<>10 Then Data_Alteracao=BlankDate() EndIf
  
  Hora_Alteracao = REG_CLIENTE["Hora da Manutencao"]
  Switch
    Case Data_Alteracao=BlankDate() Or
         Data_Alteracao=""           : Data_Alteracao = "000000000000"
    OtherWise                        : Data_Alteracao = SubStr(Data_Alteracao,1,2)+SubStr(Data_Alteracao,4,2)+SubStr(Data_Alteracao,7,4)      
                                       If Hora_Alteracao<>"" 
                                          Then Data_Alteracao = Data_Alteracao + Substr(Hora_Alteracao,1,2)+SubStr(Hora_Alteracao,4,2) 
                                          Else Data_Alteracao = Data_Alteracao + "0000"
                                       EndIf   
                                         
  EndSwitch 

  ;***** Telefone/Fax ****************************************************
  Fone = Tira_charEspecial(REG_CLIENTE["Telefone"])
  Cel  = Tira_charEspecial(REG_CLIENTE["Celular"])
  Fax  = Tira_charEspecial(REG_CLIENTE["Fax"])
  If Cel="" And Fax<>"" Then Cel = Fax EndIf

  ;***** Dados do Cliente ************************************************
  Endereco        = REG_CLIENTE["Endereco"] 
  End_Logradouro  = " "
  End_Numero      = " "
  End_Complemento = " "
  End_Cep         = Tira_CharNum(REG_CLIENTE["Cep"])
  End_Eletronico  = REG_CLIENTE["Endereco_Eletronico"] 
  RG_Cliente      = Monta_String(REG_CLIENTE["RG"])
  IE_Cliente      = Monta_String(REG_CLIENTE["IE"]) 
  Inativo         = REG_CLIENTE["Inativo"]
  
  Pos=SearchFrom(",",Endereco,1)
  If Pos<2
     Then End_Logradouro =Endereco
     Else End_Logradouro=LTrim(RTrim(SubStr(Endereco,1,Pos-1)))
        
          Posn=SearchFrom(",",Endereco,Pos+1)
          If Posn>1
             Then End_Numero     =LTrim(RTrim(SubStr(Endereco,Pos+1,(Posn-Pos)-1)))
                  End_Complemento=LTrim(RTrim(SubStr(Endereco,Posn+1,40)))
             Else End_Numero     =LTrim(RTrim(SubStr(Endereco,Pos+1,40)))     
          EndIf
  EndIf

  If Len(End_Cep)=8
     Then End_Cep = SubStr(End_Cep,1,5)+"-"+SubStr(End_Cep,6,3)
     Else End_Cep = "00000-000"
  EndIf
  
  If Search("@",End_Eletronico)=0
     Then End_Eletronico = " "
  EndIf
  
  Switch
    Case Tipo_Pessoa = "F" : RG_IE = RG_Cliente
    Case Tipo_Pessoa = "J" : RG_IE = IE_Cliente
    OtherWise              : RG_IE = " "  
  EndSwitch 
  
  ;***** Informa‡äes do Cliente ******************************************
  GetRecord "\\Sistemas\\Cadastro\\Destinat" REG_CLIENTE["Codigo"] To INFO_CLIENTE 
  If RetVal
     Then DtNascto = INFO_CLIENTE["Data de Nascimento"]
                     If Len(DtNascto)=9 Then DtNascto = "0"+StrVal(DtNascto) EndIf  
                     If Len(DtNascto)=7 Then DtNascto = "0"+StrVal(DtNascto) EndIf 
                     If Len(DtNascto)=8 
                        Then Digitos = SubStr(DtNascto,7,2)
                             If Search(".",Digitos)=0
                                Then If NumVal(Digitos)<20
                                        Then Digitos = "20"+Digitos
                                        Else Digitos = "19"+Digitos
                                     EndIf    
                                     DtNascto = SubStr(DtNascto,1,6)+Digitos
                             EndIf   
                     EndIf    
                     If Len(DtNascto)<>7 And Len(DtNascto)<>8 And Len(DtNascto)<>9 And Len(DtNascto)<>10 Then DtNascto=BlankDate() EndIf
                                         
     Else DtNascto = BlankDate()
  EndIf   
  Switch
    Case DtNascto=BlankDate() Or
         DtNascto=""           : DtNascto = "00000000"
    OtherWise                  : DtNascto = SubStr(DtNascto,1,2)+SubStr(DtNascto,4,2)+SubStr(DtNascto,7,4)      
  EndSwitch   
   
  ;***** Ficha Financeira ************************************************
  GetRecord "\\Sistemas\\Cadastro\\FichaCli" REG_CLIENTE["Codigo"] To FINANCAS_CLIENTE 
  If RetVal 
     Then Dt_UltCompra = FINANCAS_CLIENTE["Data da Ultima Compra"]
          If Len(Dt_UltCompra)=9 Then Dt_UltCompra = "0"+StrVal(Dt_UltCompra) EndIf
          If Len(Dt_UltCompra)=7 Then Dt_UltCompra = "0"+StrVal(Dt_UltCompra) EndIf 
          If Len(Dt_UltCompra)=8 
             Then Digitos = SubStr(Dt_UltCompra,7,2)
                  If Search(".",Digitos)=0
                     Then If NumVal(Digitos)<20
                             Then Digitos = "20"+Digitos
                             Else Digitos = "19"+Digitos
                          EndIf    
                          Dt_UltCompra = SubStr(Dt_UltCompra,1,6)+Digitos
                  EndIf   
          EndIf    
          If Len(Dt_UltCompra)<>7 And Len(Dt_UltCompra)<>8 And Len(Dt_UltCompra)<>9 And Len(Dt_UltCompra)<>10 Then Dt_UltCompra=BlankDate() EndIf            
          Credito      = FINANCAS_CLIENTE["Limite de Credito"]
     Else Dt_UltCompra = BlankDate()
          Credito      = 0
  EndIf
  Switch
    Case Dt_UltCompra=BlankDate() Or
         Dt_UltCompra=""           : Dt_UltCompra = "000000000000"
    OtherWise                      : Dt_UltCompra = SubStr(Dt_UltCompra,1,2)+SubStr(Dt_UltCompra,4,2)+SubStr(Dt_UltCompra,7,4) + "0000"                          
  EndSwitch  
  
  ;***** Endere‡o de Cobran‡a ********************************************
  GetRecord "\\Sistemas\\Cadastro\\End_Cob" REG_CLIENTE["Codigo"] To ENTREGA_CLIENTE 
  Obs_Entrega = " "
  If RetVal 
     Then End_Ent     = ENTREGA_CLIENTE["Endereco de Entrega"]
          Bairro_Ent  = ENTREGA_CLIENTE["Bairro de Entrega"]
          Cep_Ent     = ENTREGA_CLIENTE["CEP de Entrega"]
          Uf_Ent      = ENTREGA_CLIENTE["UF de Entrega"]
          Cidade_Ent  = ENTREGA_CLIENTE["Cidade de Entrega"]
          
          If Search("O MESMO",End_Ent)>0
             Then Obs_Entrega = "Endereco: "+End_Ent
             Else If End_Ent<>""
                     Then Obs_Entrega = "Endereco: "+End_Ent+" / Bairro: "+Bairro_Ent+" / CEP: "+Cep_Ent+" / Cidade: "+Cidade_Ent+" / UF: "+Uf_Ent
                  EndIf
          EndIf
  EndIf  
                  
  ;***** Observacao ******************************************************
  GetRecord "\\Sistemas\\Cadastro\\DestObs" REG_CLIENTE["Codigo"] To OBS_CLIENTE
  If RetVal 
     Then Obs_Cliente = OBS_CLIENTE["Observacoes"]
     
          If Obs_Cliente<>""
             Then Pos = Search("\n",Obs_Cliente)
                  If Pos>0
                     Then Aux = ""
                          While Pos > 0
                            If Aux <> ""
                               Then Aux = Aux + " / "
                            EndIf   
                            Aux         = Aux + SubStr(Obs_Cliente,1,Pos-1)
                            Obs_Cliente = SubStr(Obs_Cliente,Pos+1,Len(Obs_Cliente))
                            Pos = Search("\n",Obs_Cliente)
                            If Pos = 0 Then Obs_Cliente = Aux  + " / " + Obs_Cliente EndIf 
                          EndWhile   
                     Else Obs_Cliente = Format("W65",Obs_Cliente)
                  EndIf   
          EndIf
     Else Obs_Cliente = " "
  EndIf  
  
  GetRecord "\\Sistemas\\Cadastro\\DestMsg" REG_CLIENTE["Codigo"] To MSG_CLIENTE
  If RetVal 
     Then Msg_Cliente = MSG_CLIENTE["Observacoes"] 
          If Msg_Cliente<>""
             Then Pos = Search("\n",Msg_Cliente)
                  If Pos>0
                     Then Aux = ""
                          While Pos > 0
                            If Aux <> ""
                               Then Aux = Aux + " / "
                            EndIf   
                            Aux         = Aux + SubStr(Msg_Cliente,1,Pos-1)
                            Msg_Cliente = SubStr(Msg_Cliente,Pos+1,Len(Msg_Cliente))
                            Pos = Search("\n",Msg_Cliente)
                            If Pos = 0 Then Msg_Cliente = Aux  + " / " + Msg_Cliente EndIf 
                          EndWhile   
                     Else Msg_Cliente = Format("W80",Msg_Cliente)
                  EndIf   
          EndIf
     
     
     Else Msg_Cliente = " "
  EndIf  

  ;**** Inatividade do Cliente *******************************************
  If Inativo = "S"
     Then Flag = "-00001"
     Else Flag = "000000"
  EndIf
  
  ;***** Rotina Principal ************************************************
  Cod_Externo              = REG_CLIENTE["Codigo"]
  F_J                      = Tipo_Pessoa                                          ;F ou J ou " "
  Nome                     = Tira_charEspecial(REG_CLIENTE["Razao Social"])
  Apelido_Fantasia         = Tira_charEspecial(REG_CLIENTE["Nome Fantasia EmitDest"])
  Data_Cadastro            = Data                                                 ;DDMMAAAA
  Nascimento_Fundacao      = DtNascto                                             ;DDMMAAAA
  Ult_Compra               = Dt_UltCompra                                         ;DDMMAAAAHHMM
  Alterado                 = Data_Alteracao                                       ;DDMMAAAAHHMM
  Fone                     = Fone
  Celular_Fax              = Cel
  E_Mail                   = End_Eletronico
  Endereco                 = End_Logradouro
  Numero                   = End_Numero
  Complemento              = End_Complemento
  Bairro                   = REG_CLIENTE["Bairro"]
  Cidade                   = REG_CLIENTE["Cidade"]
  UF                       = REG_CLIENTE["UF"]
  CEP                      = End_Cep                                            ;XXXXX-XXX
  Obs_Local_Entrega        = Obs_Entrega
  RG_InscEstadual          = RG_IE
  CPF_CNPJ                 = Cpf_Cnpj
  Obs_PopUp                = Obs_Cliente
  Memo                     = Msg_Cliente
  Nivel_Credito            = Situacao_Cliente
  Limite_Credito           = Valor(Credito,10,2)
  Senha                    = " "                                                  ; ?????
  Cod_Classe               = 0                                                    ; ?????
  Descricao_Classe         = " "                                                  ; ?????
  Cod_Convenio             = 0                                                    ; ?????
  Descricao_Convenio       = " "                                                  ; ?????
  Cod_Animacao             = 0                                                    ; ?????  -  Ver Tabela de Anima‡äes
  Flag                     = Inativo

  Print File ARQIMP Completa(Cod_Externo,20," ")
  Print File ARQIMP Format("W1",F_J)
  Print File ARQIMP Completa(Nome,50," ")
  Print File ARQIMP Completa(Apelido_Fantasia,30," ")
  Print File ARQIMP Data_Cadastro
  Print File ARQIMP Nascimento_Fundacao
  Print File ARQIMP Ult_Compra
  Print File ARQIMP Alterado
  Print File ARQIMP Completa(Fone,14," ")
  Print File ARQIMP Completa(Celular_Fax,14," ")
  Print File ARQIMP Completa(E_Mail,50," ")
  Print File ARQIMP Completa(Endereco,50," ")
  Print File ARQIMP Completa(Format("W6,AL",Numero),6," ")
  Print File ARQIMP Completa(Complemento,30," ")
  Print File ARQIMP Completa(Bairro,30," ")
  Print File ARQIMP Completa(Cidade,30," ")
  Print File ARQIMP Completa(UF,2," ")
  Print File ARQIMP Completa(CEP,9," ")
  Print File ARQIMP Completa(Obs_Local_Entrega,80," ")     
  Print File ARQIMP Completa(RG_InscEstadual,20," ")
  Print File ARQIMP Completa(CPF_CNPJ,20," ")
  Print File ARQIMP Completa(Obs_PopUp,65," ")
  Print File ARQIMP Completa(Memo,80," ")
  Print File ARQIMP Nivel_Credito
  Print File ARQIMP Limite_Credito
  Print File ARQIMP Completa(Senha,16," ") 
  Print File ARQIMP AlinhM(StrVal(Cod_Classe),6)                       
  Print File ARQIMP Completa(Descricao_Classe,30," ")                      
  Print File ARQIMP AlinhM(StrVal(Cod_Convenio),6)                          
  Print File ARQIMP Completa(Descricao_Convenio,30," ")                       
  Print File ARQIMP AlinhM(StrVal(Cod_Animacao),6)                                
  Print File ARQIMP Flag
  Print File ARQIMP "\n"
EndScan
ClearAll

EndProc ;Clientes()  

;*******************************************************************************
;* Gera Arquivo Texto p/ Produtos                                              *
;*******************************************************************************
Proc Produtos(PARAM)
Private PARAM
ClearAll
       
ARQIMP_PREC=VSDGCAMINHO+"\\PRECO.TXT"
If IsFile(ARQIMP_PREC) Then Deleta_Arquivo(ARQIMP_PREC) EndIf       
               
If PARAM="Item"         
  Then ARQIMP=VSDGCAMINHO+"\\PRODUTO.TXT"
       If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf

       ;ARQIMP_BAR=VSDGCAMINHO+"\\BARRAS.TXT"
       ;If IsFile(ARQIMP_BAR) Then Deleta_Arquivo(ARQIMP_BAR) EndIf
EndIf

INICIAR = 0

If IsEmpty(TabelaREF)
   Then Return
EndIf   

NR=NRecords(TabelaREF)
   
View "\\Sistemas\\Estoque\\Itens"
View "\\Sistemas\\Estoque\\ICMS"
View "\\Sistemas\\Estoque\\ISSQN"   
View TabelaREF                     
Scan
  Barra(NR, RecNo())
  If PARAM="Item"
     Then AGUARDE("Aguarde, Exportando Produtos        "+BARRA_STRING)
     Else AGUARDE("Aguarde, Exportando Tabela de Preco "+BARRA_STRING)
  EndIf   
  
  CopyToArray REG_ITEM
  
  ;**** DADOS DO ITEM ***********************************
  GetRecord "\\Sistemas\\Estoque\\Itens" REG_ITEM["Codigo do Item"] To ITEM
  If Not RetVal
     Then Loop
  EndIf    
  
  ;**** ITENS DE ISSQN nÆo serÆo importados *************
  If ITEM["Tipo do Item"]="C"   
      Then Loop                                                                 ;????????? A Imp.Fiscal tem que ter cadastrado a Insc.Municipal p/ cadastrar Aliq.ISSQN
  EndIf    
  
  If PARAM="Item"
     Then ;**** GRUPO ***********************************
          COD_GRUP = ITEM["Codigo do Grupo"]
          DES_GRUP = ITEM["Descricao do Grupo"]
          
          ;**** DEPARTAMENTO ****************************
          COD_DEP  = ITEM["Codigo do Departamento"]
          DES_DEP  = ITEM["Descricao do Departamento"]
           
          ;**** MARCA ***********************************
          COD_MARC = ITEM["Codigo da Marca"] 
          DES_MARC = ITEM["Descricao da Marca"]
                   
          ;**** Item Ativo/Inativo **********************
          INATIVO = REG_ITEM["Inativo"]
          If INATIVO = "S"
             Then INATIVO = "-00001"
             Else INATIVO = "000001"
          EndIf   
          
          ;**** Saldo Atual *****************************
          SALDO = REG_ITEM["Saldo Atual Hoje"]
          If SALDO=BlankNum() Or SALDO=""
             Then SALDO = 0
          EndIf

          ;**** SITUACAO TRIBUTARIA *********************
          ;I - Isento 
          ;N - NÆo Tributado 
          ;F - Substitui‡Æo Tribut ria
          ;T - Tributada pelo ICMS 
          ;S - Tributada pelo ISSQN 
          ;Q - Isento ISSQN

          SITUACAO_TRIB = "N"
          Tipo_Tributacao = ""
          If ITEM["Tipo do Item"]="C"
             Then Tipo_Tributacao="" ;"ISSQN"
                  Switch
                    Case REG_ITEM["Tributacao de ISSQN"]="D" : SITUACAO_TRIB = "S"
                    Case REG_ITEM["Tributacao de ISSQN"]="I" : SITUACAO_TRIB = "Q"
                  EndSwitch   
             Else Tipo_Tributacao="ICMS"
                  Switch
                    Case REG_ITEM["Tributacao de ICMS"]="I"  : SITUACAO_TRIB = "I"
                    Case REG_ITEM["Tributacao de ICMS"]="N"  : SITUACAO_TRIB = "N"
                    Case REG_ITEM["Tributacao de ICMS"]="D"  : SITUACAO_TRIB = "T"
                    Case REG_ITEM["Tributacao de ICMS"]="S"  : SITUACAO_TRIB = "F"
                  EndSwitch          
          EndIf
          
          Switch
            Case ITEM["Tributacao de ISSQN"]="N" And ITEM["Tipo do Item"]="C"                                      : Loop
            Case ITEM["Tributacao de ISSQN"]="D" And (ITEM["Aliquota de ISSQN"]=0 Or ITEM["Aliquota de ISSQN"]<=0) : Loop
            Case ITEM["Tributacao de ICMS"]="D"  And (ITEM["Aliquota de ICMS"]=0 Or ITEM["Aliquota de ICMS"]<=0)   : Loop
          EndSwitch 
          ICMS = "0000"
          
          ;**** ST ISSQN ******************************
          ;N - Normal
          ;I - Isento 
          ;R - Retido              
          ;S - Substituido
          
          If Tipo_Tributacao="ISSQN"
             Then TRIB    = ITEM["Tributacao de ISSQN"]
                  BC      = 100
                  ALQ     = ITEM["Aliquota de ISSQN"]          
                  
                  Switch
                    Case SITUACAO_TRIB="S" :
                         ICMS = ITEM["Aliquota de ISSQN"]
                         Switch
                           Case ICMS>0 : ICMS = AlinhM(StrVal(ICMS*100),4) 
                           OtherWise   : ICMS = "0000"                    
                         EndSwitch
                    Case SITUACAO_TRIB="Q" : ICMS = "1000"                      ;???????????? NÆo permite passar sem a ALQ o ISSQN ISENTO
                  EndSwitch                  
             
                  If Gera_Tabela_Imposto
                     Then Moveto "\\Sistemas\\Estoque\\ISSQN"
                          Moveto [Tributacao]
                          Locate TRIB
                          If RetVal
                             Then While [Tributacao]=TRIB
                                     If [Base de Calculo] = BC
                                        Then If [Aliquota] = ALQ
                                                Then ID_ISSQN = AlinhM(StrVal([ID_ISSQN]),6) ;?????????????? ID_ISSQN -> Se utilizar, cancelar a vari vel a baixo!
                                                     Quitloop
                                             EndIf
                                     EndIf
                                     Skip
                                     If Eot() Then Quitloop EndIf
                                     Locate Next TRIB
                                     If Not RetVal 
                                        Then QuitLoop 
                                     EndIf 
                                  EndWhile
                          EndIf        
                          Moveto TabelaREF  
                  EndIf        
          EndIf
          
          ;**** ICMS ************************************
          ID_ICMS = "000000"
          If Tipo_Tributacao="ICMS"
             Then ICMS = "0000"
                  If SITUACAO_TRIB="T"
                     Then ICMS = ITEM["Aliquota de ICMS"]
                          Switch
                            Case ICMS>0 : ICMS = AlinhM(StrVal(ICMS*100),4) 
                            OtherWise   : ICMS = "0000"                    
                          EndSwitch
                  EndIf
        
                  If Gera_Tabela_Imposto         
                     Then ID_ICMS = "000000"
                          CST     = REG_ITEM["Tipo Tributacao"]
                          BC      = 100-REG_ITEM["Aliquota Reduzida BCICMS"]     
                          ALQ     = REG_ITEM["Aliquota de ICMS"]
                        
                          Moveto "\\Sistemas\\Estoque\\ICMS"
                          Moveto [CST]
                          Locate CST
                          If RetVal
                             Then While [CST]=CST
                                     If [Base de Calculo] = BC
                                        Then If [Aliquota] = ALQ
                                                Then ID_ICMS = AlinhM(StrVal([ID_ICMS]),6)
                                                     Quitloop
                                             EndIf
                                     EndIf
                                     Skip
                                     If Eot() Then Quitloop EndIf
                                     Locate Next CST
                                     If Not RetVal 
                                        Then QuitLoop 
                                     EndIf 
                                  EndWhile
                          EndIf        
                          Moveto TabelaREF
                  EndIf
          EndIf
          
          ;***** OBSERVACAO *****************************
          OBS_PRODUTO = ITEM["Observacao"]
          If OBS_PRODUTO<>""
             Then Pos = Search("\n",OBS_PRODUTO)
                  If Pos>0
                     Then Aux = ""
                          While Pos > 0
                            If Aux <> ""
                               Then Aux = Aux + " / "
                            EndIf   
                            Aux         = Aux + SubStr(OBS_PRODUTO,1,Pos-1)
                            OBS_PRODUTO = SubStr(OBS_PRODUTO,Pos+1,Len(OBS_PRODUTO))
                            Pos = Search("\n",OBS_PRODUTO)
                            If Pos = 0 Then OBS_PRODUTO = Aux  + " / " + OBS_PRODUTO EndIf 
                          EndWhile   
                     Else OBS_PRODUTO = Format("W65",OBS_PRODUTO)
                  EndIf   
             Else OBS_PRODUTO = " "     
          EndIf
          
          ;**** CODIGO DE BARRAS ************************
          COD_BAR = REG_ITEM["Codigo de Barras"]
          If COD_BAR=""
             Then COD_BAR=REG_ITEM["Referencia"] 
                  If COD_BAR=""
                     Then COD_BAR = REG_ITEM["Codigo do Item"]
                          While SubStr(COD_BAR,1,1)="0"
                            COD_BAR = SubStr(COD_BAR,2,Len(COD_BAR))
                          EndWhile 
                  EndIf
          EndIf               
  EndIf
  
  ;**** CODIGO DE BARRAS ************************
  COD_BAR = REG_ITEM["Codigo de Barras"]
  If COD_BAR=""
     Then COD_BAR=REG_ITEM["Referencia"] 
          If COD_BAR=""
             Then COD_BAR = REG_ITEM["Codigo do Item"]
                  While SubStr(COD_BAR,1,1)="0"
                    COD_BAR = SubStr(COD_BAR,2,Len(COD_BAR))
                  EndWhile 
          EndIf
  EndIf    
          
  ;**** PRECO *******************************************
  PRECO = REG_ITEM["Preco Unitario1"]
  If PRECO="" Or PRECO=BlankNum()
     Then PRECO = 0
  EndIf
  
  ;**** IMPRIME A TABELA DE PRECO *********************** ATUALIZA A TABELA DE PRECO
  If PRECO > 0
     Then Codigo_Barras  = Completa(COD_BAR,20," ") 
          Pre‡o_Unitario = Valor(Preco,12,3)   
               
          Print File ARQIMP_PREC Codigo_Barras
          Print File ARQIMP_PREC Pre‡o_Unitario
          Print File ARQIMP_PREC "\n"     
  EndIf
  
  If PARAM="Item"
     Then ;**** ROTINA PRINCIPAL ************************   
          Cod_Externo              = Completa(REG_ITEM["Codigo do Item"],20," ")
          Cod_Barras               = Completa(COD_BAR,20," ")
          Descricao                = Completa(Tira_CharEspecial(REG_ITEM["Descricao do Item"]),40," ")
          Complemento              = Completa(" ",20," ")
          Unidade                  = Completa(REG_ITEM["Unidade Fiscal"],4," ")
          Preco_Venda              = Valor(Preco,12,3)
          Desconto                 = "000000"
          Situ_Tributaria          = Completa(SITUACAO_TRIB,1," ")
          ICMS                     = ICMS
          Obs_PopUp                = Completa(OBS_PRODUTO,65," ")
          Calcula_Qtd              = "N"
          Bloq_Qtd_Frac            = "S"
          Bloq_Qtd                 = "N"
          Arredonda                = "N"
          Producao_Propria         = "S"
          Cod_Grupo                = Completa(COD_GRUP,6," ")
          Descricao_Grupo          = Completa(DES_GRUP,30," ")
          Cod_Departamento         = Completa(COD_DEP,6," ")
          Descricao_Departamento   = Completa(DES_DEP,30," ")
          Cod_Marca                = Completa(COD_MARC,6," ")
          Descricao_Marca          = Completa(DES_MARC,30," ") 
          Cod_Tipo_Vasilhame       = Completa(" ",6," ")
          Descricao_Tipo_Vasilhame = Completa(" ",30," ")
          Cod_Animacao             = "000000"
          Flag                     = INATIVO
          NCM                      = Completa(REG_ITEM["NCM"],20," ")
          Cod_Tipo_Desc_Adicional  = "000000"
          Gtin_Contabil            = Completa(" ",20," ")
          Ext_IPI                  = Completa(" ",20," ")
          Gtin_Tributavel          = Completa(" ",20," ")
          ID_ICMS                  = ID_ICMS
          ID_IPI                   = "000000"
          ID_ISSQN                 = "000000"
          ID_II                    = "000000"
          ID_PIS                   = "000000"
          ID_PIS_ST                = "000000"
          ID_COFINS                = "000000"
          ID_CONFINS_ST            = "000000"
          KIT                      = "N"
          Qtde_Estoque             = Valor(SALDO,12,3)
        
          Print File ARQIMP Cod_Externo              
          Print File ARQIMP Cod_Barras               
          Print File ARQIMP Descricao                
          Print File ARQIMP Complemento              
          Print File ARQIMP Unidade                  
          Print File ARQIMP Preco_Venda              
          Print File ARQIMP Desconto                 
          Print File ARQIMP Situ_Tributaria          
          Print File ARQIMP ICMS                     
          Print File ARQIMP Obs_PopUp                
          Print File ARQIMP Calcula_Qtd              
          Print File ARQIMP Bloq_Qtd_Frac            
          Print File ARQIMP Bloq_Qtd                 
          Print File ARQIMP Arredonda                
          Print File ARQIMP Producao_Propria         
          Print File ARQIMP Cod_Grupo                
          Print File ARQIMP Descricao_Grupo          
          Print File ARQIMP Cod_Departamento         
          Print File ARQIMP Descricao_Departamento   
          Print File ARQIMP Cod_Marca                
          Print File ARQIMP Descricao_Marca          
          Print File ARQIMP Cod_Tipo_Vasilhame       
          Print File ARQIMP Descricao_Tipo_Vasilhame 
          Print File ARQIMP Cod_Animacao             
          Print File ARQIMP Flag                     
          Print File ARQIMP NCM                      
          Print File ARQIMP Cod_Tipo_Desc_Adicional  
          Print File ARQIMP Gtin_Contabil            
          Print File ARQIMP Ext_IPI                  
          Print File ARQIMP Gtin_Tributavel          
          Print File ARQIMP ID_ICMS                  
          Print File ARQIMP ID_IPI                   
          Print File ARQIMP ID_ISSQN                 
          Print File ARQIMP ID_II                    
          Print File ARQIMP ID_PIS                   
          Print File ARQIMP ID_PIS_ST                
          Print File ARQIMP ID_COFINS                
          Print File ARQIMP ID_CONFINS_ST
          Print FIle ARQIMP KIT
          Print FIle ARQIMP Qtde_Estoque
          Print FIle ARQIMP "\n"
          
         ;**** CODIGO VINCULADO - CODIGO DE BARRAS *************
         ;If Not IsBlank(REG_ITEM["Preco Unitario1"]) And REG_ITEM["Preco Unitario1"]>0 
         ;   Then If Not IsBlank(COD_BAR) And REG_ITEM["Inativo"]<>"S"
         ;          Then Cod_Barras_Produto   = Completa(COD_BAR,20," ")
         ;               Cod_Barras_Adicional = Completa(" ",20," ")         
         ;               Desc_Acres           = Completa(" ",1," ")                    
         ;               Porcentagem          = "00000"
         ;               Qtd_Embalagem        = "0000000"
         ;                              
         ;               Print File ARQIMP_BAR Cod_Barras_Produto
         ;               Print File ARQIMP_BAR Cod_Barras_Adicional
         ;               Print File ARQIMP_BAR Desc_Acres
         ;               Print File ARQIMP_BAR Porcentagem
         ;               Print File ARQIMP_BAR Qtd_Embalagem
         ;               Print File ARQIMP_BAR "\n" 
         ;EndIf
  EndIf
EndScan
ClearAll

EndProc ;Produtos()
;*******************************************************************************
;* Atualiza Codigo Vinculado - Codigo de Barras                                *
;*******************************************************************************
Proc Movimentacao_Item()
ClearAll

{Tools} {Info} {Inventory} {Files} TypeIn VSDGCAMINHO+"\\*.krr" Enter 
ClearAll

If IsEmpty("List")
   Then COD_PROX = "00000001"
   Else COD_PROX = 1
        View "List"
        Scan
          A = Type(NumVal(SubStr([Name],1,Len([Name])-4)))
          B = NumVal(SubStr([Name],1,Len([Name])-4))  
          
          If Type(NumVal(SubStr([Name],1,Len([Name])-4)))="N"
             Then If NumVal(SubStr([Name],1,Len([Name])-4)) >= COD_PROX
                     Then COD_PROX = NumVal(SubStr([Name],1,Len([Name])-4))+1
                  EndIf
          EndIf   
        EndScan
        COD_PROX = AlinhM(StrVal(COD_PROX),8)    
EndIf    
Deleta_Arquivo("C:\\DJSYSTEM\\MONITOR\\*.kdx")           
Deleta_Arquivo(VSDGCAMINHO+"\\*.kdx")

ARQIMP=VSDGCAMINHO+"\\"+COD_PROX+".kdx"
If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf       

If IsEmpty(TabelaREF)
   Then Return
EndIf   

NR=NRecords(TabelaREF)
      
View TabelaREF                     
Scan
  Barra(NR, RecNo())
  AGUARDE("Aguarde, Atualizando Movimenta‡”es  "+BARRA_STRING)   
  
  CopyToArray REG_ITEM
  
  ;**** DADOS DO ITEM ***********************************
  GetRecord "\\Sistemas\\Estoque\\Itens" REG_ITEM["Codigo do Item"] To ITEM
  If Not RetVal
     Then Loop
  EndIf  
  
  ;**** PRECO *******************************************
  PRECO = REG_ITEM["Preco Unitario1"]
  If PRECO="" Or PRECO=BlankNum()
     Then PRECO = 0
  EndIf
  PRECO = Valor(PRECO,12,3)
 
  ;**** SADLDO ******************************************
  SALDO = REG_ITEM["Saldo Atual Hoje"]
  If SALDO=BlankNum() Or SALDO=""
     Then SALDO = 0
  EndIf
  
  ;**** ROTINA PRINCIPAL ********************************
  Numero_Docto_Origem    = Completa(COD_PROX,20," ")
  Codigo_Externo_Produto = Completa(REG_ITEM["Codigo do Item"],20," ")
  Pre‡o_Unitario         = PRECO
  Quantidade_Movimentada = Valor(SALDO,12,3)
  Data_Hora_Movimento    = "00000000000000"
  Tipo_Lancamento        = "A"
  CNPJ_Empresa           = Completa(" ",18," ") 
   
  Print File ARQIMP Numero_Docto_Origem
  Print File ARQIMP Codigo_Externo_Produto
  Print File ARQIMP Pre‡o_Unitario
  Print File ARQIMP Quantidade_Movimentada
  Print File ARQIMP Data_Hora_Movimento
  Print File ARQIMP Tipo_Lancamento
  Print File ARQIMP CNPJ_Empresa 
  Print File ARQIMP "\n"  

EndScan  
ClearAll

EndProc ;Movimentacao_Item()

;*******************************************************************************
;* Atualiza Codigo Vinculado - Codigo de Barras                                *
;*******************************************************************************
Proc Atualiza_CodVinculado()

NR=NRecords(TabelaREF)

View "\\Sistemas\\Vendas\\DJ"
Coedit TabelaREF

Scan
  Barra(NR, RecNo())
  AGUARDE("Aguarde, Verificando c¢digos vinculados   "+BARRA_STRING)
  
  CODITEM = [Codigo do Item    ]
  TPCB    = [Tipo Codigo_Barras]
  CB      = [Codigo de Barras  ]      
  INATIVO = [Inativo           ]
                                          
  Moveto "\\Sistemas\\Vendas\\DJ"
  Moveto [Codigo do Item]
  Locate CODITEM
  If RetVal
    Then If [Codigo Vinculado]<>CB
          Then If IsBlank(TPCB) Or IsBlank(CB) Or INATIVO="S"
                Then Del
                Else [Codigo Vinculado] = CB
               EndIf 
         EndIf 
    Else If Not IsBlank(TPCB) And Not IsBlank(CB) And INATIVO<>"S"
          Then End Down
               [Codigo do Item  ] = CODITEM
               [Codigo Vinculado] = CB 
         EndIf
  EndIf
  Moveto TabelaREF
EndScan
Do_It!
ClearAll

EndProc ;Atualiza_CodVinculado()     

;*******************************************************************************
;Rotina para Exportat COFINS                                                   *
;*******************************************************************************
Proc Imposto(PARAM)
Private PARAM
                      
Switch
  Case PARAM = "ICMS" :
       ARQIMP=VSDGCAMINHO+"\\ICMS.TXT"
       If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf
            
       View "\\Sistemas\\Estoque\\ICMS"
       Scan
         BC = [Base de Calculo] 
         If BC<>"" And BC<>BlankNum() And BC<>0
            Then BC = Valor(BC,5,2) 
            Else BC = "00000"
         EndIf
         
         Aliquota = [Aliquota] 
         If Aliquota<>"" And Aliquota<>BlankNum() And Aliquota<>0
            Then Aliquota = Valor(Aliquota,5,3)
            Else Aliquota = "00000"
         EndIf
            
         Print File ARQIMP AlinhM([ID_ICMS],6)
         Print File ARQIMP Completa([Descricao],60," ")
         Print File ARQIMP AlinhM([CST],3)
         Print File ARQIMP "3"
         Print File ARQIMP BC
         Print File ARQIMP Aliquota
         Print File ARQIMP "4"
         Print File ARQIMP "00000"
         Print File ARQIMP "00000"
         Print File ARQIMP "0000"
         Print File ARQIMP "8"
         Print File ARQIMP "00000"          ;Base C lculo Ap. Pr¢pria
         Print File ARQIMP "000000"         ;CSOSN 
         Print File ARQIMP "0000"           ;Aliquota do Simples Nacional.
         Print File ARQIMP "00000"          ;Base Calculo ICMS Retido
         Print File ARQIMP "0000"           ;Aliquota do ICMS Retido
         Print File ARQIMP "00000"          ;Base Calculo ICMS Destino
         Print File ARQIMP "0000"           ;Aliquota ICMS Destino
         Print File ARQIMP "\n"
       EndScan                                                     
       ClearAll
  Case PARAM = "ISSQN" :
       ARQIMP=VSDGCAMINHO+"\\ISSQN.TXT"
       If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf
            
       View "\\Sistemas\\Estoque\\ISSQN"
       Scan
         BC = [Base de Calculo] 
         If BC<>"" And BC<>BlankNum() And BC<>0
            Then BC = Valor(BC,5,2) 
            Else BC = "00000"
         EndIf
         
         Aliquota = [Aliquota] 
         If Aliquota<>"" And Aliquota<>BlankNum() And Aliquota<>0
            Then Aliquota = Valor(Aliquota,4,2)
            Else Aliquota = "0000"
         EndIf
            
         Tributacao = [Tributacao]   
         Switch
          Case Tributacao = "D" : Tributacao="N"  
          Case Tributacao = "R" : Tributacao="R"
          Case Tributacao = "S" : Tributacao="S"
          Case Tributacao = "I" : Tributacao="I"
          OtherWise             : Loop      
         EndSwitch
            
         Print File ARQIMP AlinhM([ID_ISSQN],6)
         Print File ARQIMP Completa([Descricao],60," ")
         Print File ARQIMP BC
         Print File ARQIMP Aliquota
         Print File ARQIMP "    "
         Print File ARQIMP Tributacao
         Print File ARQIMP "\n"
       EndScan                                                     
       ClearAll       
EndSwitch
  
EndProc ;Impostos()

;*******************************************************************************
;* Gera Tabela de Impostos                                                     *
;*******************************************************************************
Proc Tabela_Imposto(PARAM)
Private PARAM

Switch
 Case PARAM="ICMS" : 
      Checa_CST("ICMS","Tit","")
      
      SetDir "\\Sistemas\\Estoque"
      
      {Ask} {Itens}
      Moveto [Tipo Tributacao         ] Check TypeIn "as CST" 
      Moveto [Aliquota de ICMS        ] Check TypeIn "as Aliquota"
      Moveto [Aliquota Reduzida BCICMS] Check TypeIn "as Base de Calculo"   
      Do_It!
      
      Sort "Answer" On "CST"
      ClearAll
      
      NR = NRecords("Answer")
      
      CST      = "****"
      Contador = 0
      If Not IsEmpty("ICMS")
         Then View "ICMS"
              End
              Contador = [ID_ICMS]
              If Contador <> ""
                 Then Contador = NumVal([ID_ICMS])
              EndIf
              ClearAll
      EndIf
      
      Sort "ICMS" on "CST"
      ClearAll 
      
      View "ICMS"
      Coedit "Answer"
      Scan
        Barra(NR, RecNo())
        Aguarde("Aguarde, Gerando Tabela de Impostos "+Completa(StrVal(Recno())+"/"+StrVal(NR),9," ")+BARRA_STRING)
      
        If [CST]="" Then Loop EndIf
      
        If CST<>[CST]
           Then CST=[CST]
                Descricao = ""
                For i From 1 To DynArraySize(Array_Trib)
                  If SubStr(Array_Trib[i],1,2)=SubStr([CST],2,2)
                     Then Descricao = Upper(Tira_CharEspecial(SubStr(Array_Trib[i],7,Len(Array_Trib[i]))))
                          QuitLoop
                  EndIf
                EndFor
                If Descricao=""
                   Then Loop  
                EndIf        
        EndIf
        RedBC = 100-[Base de Calculo]      
        
        Nao_Faz = False      
        Moveto "ICMS"
        Moveto [CST]
        Locate [Answer->CST]
        If RetVal
           Then While [CST] = [Answer->CST]
                  If [Base de Calculo] = RedBC
                     Then If [Aliquota]=[Answer->Aliquota]
                             Then Nao_Faz=True
                                  QuitLoop
                          EndIf
                  EndIf
                  Skip
                  If Eot() Then QuitLoop EndIf
                EndWhile
        EndIf          
        
        If Not Nao_Faz
           Then Contador = Contador + 1
                End Down
                [ID_ICMS        ] = AlinhM(StrVal(Contador),6)
                [Descricao      ] = Descricao
                [CST            ] = [Answer->CST]
                [Base de Calculo] = RedBC
                [Aliquota       ] = [Answer->Aliquota]
        EndIf
        Moveto "Answer"
      EndScan
      Do_It!
      ClearAll       
 Case PARAM="ISSQN" : 
      Checa_CST("ISSQN","Tit","")
      
      SetDir "\\Sistemas\\Estoque"
      
      {Ask} {Itens}
      Moveto [Tributacao de ISSQN     ] Check TypeIn "as Tributacao" 
      Moveto [Aliquota de ISSQN       ] Check TypeIn "as Aliquota"   
      Do_It!
      
      Sort "Answer" On "Tributacao"
      ClearAll
      
      NR = NRecords("Answer")
      
      TRIB     = "****"
      Contador = 0
      If Not IsEmpty("ISSQN")
         Then View "ISSQN"
              End
              Contador = [ID_ISSQN]
              If Contador <> ""
                 Then Contador = NumVal([ID_ISSQN])
              EndIf
              ClearAll
      EndIf
      
      Sort "ISSQN" on "Tributacao"
      ClearAll 
      
      View "ISSQN"
      Coedit "Answer"
      Scan
        Barra(NR, RecNo())
        Aguarde("Aguarde, Gerando Tabela de Impostos "+Completa(StrVal(Recno())+"/"+StrVal(NR),9," ")+BARRA_STRING)
      
        If [Tributacao]="" Then Loop EndIf
      
        If TRIB<>[Tributacao]
           Then TRIB=[Tributacao]
                Descricao = ""
                For i From 1 To DynArraySize(Array_Trib)
                  If SubStr(Array_Trib[i],1,1)=[Tributacao]
                     Then Descricao = Upper(Tira_CharEspecial(SubStr(Array_Trib[i],7,Len(Array_Trib[i]))))
                          QuitLoop
                  EndIf
                EndFor
                If Descricao=""
                   Then Loop  
                EndIf        
        EndIf
        RedBC = 100   
        
        Nao_Faz = False      
        Moveto "ISSQN"
        Moveto [Tributacao]
        Locate [Answer->Tributacao]
        If RetVal
           Then While [Tributacao] = [Answer->Tributacao]
                  If [Base de Calculo] = RedBC
                     Then If [Aliquota]=[Answer->Aliquota]
                             Then Nao_Faz=True
                                  QuitLoop
                          EndIf
                  EndIf
                  Skip
                  If Eot() Then QuitLoop EndIf
                EndWhile
        EndIf          
        
        If Not Nao_Faz
           Then Contador = Contador + 1
                End Down
                [ID_ISSQN       ] = AlinhM(StrVal(Contador),6)
                [Descricao      ] = Descricao
                [Tributacao     ] = [Answer->Tributacao]
                [Base de Calculo] = RedBC
                [Aliquota       ] = [Answer->Aliquota]
        EndIf
        Moveto "Answer"
      EndScan
      Do_It!
      ClearAll       
EndSwitch

EndProc ;Tabela_Imposto() 

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

ARQIMP=VSDGCAMINHO+"\\Vendedor.TXT"
If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf

INICIAR = 0

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

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

  CodVendedor = Completa([Codigo do Representante],6," ")
  Nome        = Completa([Nome Fantasia Represent],30," ")
  
  Print File ARQIMP CodVendedor
  Print File ARQIMP Nome
  Print File ARQIMP "\n"
  
EndScan
ClearAll

EndProc ; Vendedores()

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

ARQIMP=VSDGCAMINHO+"\\TRANSPOR.TXT"
If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf

NR=NRecords("\\Sistemas\\Vendas\\Transpor")

View "\\Sistemas\\Vendas\\Transpor"
Scan
  Barra(NR, RecNo())
  AGUARDE("Aguarde, Exportando Transportador "+BARRA_STRING)
  
  CopyToArray REG_TRANSPOR

  ;**** CNPJ *************************************************************
  CNPJ = Tira_CharNum(REG_TRANSPOR["CGC Transport"])
  Switch
    Case CNPJ="" Or CNPJ=BlankNum() : Loop 
    Case NumVal(CNPJ)=0             : Loop ;CNPJ inv lido
    Case Len(CNPJ)=11               : Loop ;CPF  
  EndSwitch

  ;***** Dados do Transportador ******************************************
  Endereco        = REG_TRANSPOR["Endereco Transport"]
  End_Logradouro  = " "
  End_Numero      = " "
  End_Complemento = " "
  End_Cep         = Tira_CharNum(REG_TRANSPOR["CEP Transport"])
  End_Eletronico  = REG_TRANSPOR["Endereco_Eletronico Trans"] 
  RG_Transpor     = Monta_String(REG_TRANSPOR["RG Transport"])
  IE_Transpor     = Monta_String(REG_TRANSPOR["IE Transport"]) 
  Inativo         = REG_TRANSPOR["Inativo Transport"]
  
  Pos=SearchFrom(",",Endereco,1)
  If Pos<2
     Then End_Logradouro =Endereco
     Else End_Logradouro=LTrim(RTrim(SubStr(Endereco,1,Pos-1)))
        
          Posn=SearchFrom(",",Endereco,Pos+1)
          If Posn>1
             Then End_Numero     =LTrim(RTrim(SubStr(Endereco,Pos+1,(Posn-Pos)-1)))
                  End_Complemento=LTrim(RTrim(SubStr(Endereco,Posn+1,40)))
             Else End_Numero     =LTrim(RTrim(SubStr(Endereco,Pos+1,40)))     
          EndIf
  EndIf

  If Len(End_Cep)=8
     Then End_Cep = SubStr(End_Cep,1,5)+"-"+SubStr(End_Cep,6,3)
     Else End_Cep = "00000-000"
  EndIf
  
  If Search("@",End_Eletronico)=0
     Then End_Eletronico = " "          
  EndIf
  
  ID_Transportadora = AlinhM(REG_TRANSPOR["Codigo da Transportadora"],6)
  CNPJ              = AlinhM(Tira_CharNum(REG_TRANSPOR["CGC Transport"]),14)
  Nome              = Completa(REG_TRANSPOR["Razao Social Transport"],60," ")
  Logradouro        = Completa(End_Logradouro,60," ")
  Numero            = Completa(End_Numero,60," ")
  Complemento       = Completa(End_Complemento,60," ")
  Bairro            = Completa(REG_TRANSPOR["Bairro Transport"],60," ")
  Cidade            = Completa(REG_TRANSPOR["Cidade Transport"],30," ")
  UF                = Completa(REG_TRANSPOR["UF Transport"],2," ") 
  CEP               = End_Cep    
  Fone              = Completa(Tira_charEspecial(REG_TRANSPOR["Telefone Transport"]),14," ")
  Insc_Estadual     = AlinhM(Tira_CharNum(StrVal(IE_Transpor)),14)
  Email             = Completa(End_Eletronico,60," ")
                                                        
  Print File ARQIMP ID_Transportadora
  Print File ARQIMP CNPJ
  Print File ARQIMP Nome
  Print File ARQIMP Logradouro
  Print File ARQIMP Numero
  Print File ARQIMP Complemento
  Print File ARQIMP Bairro
  Print File ARQIMP Cidade
  Print File ARQIMP UF
  Print File ARQIMP CEP
  Print File ARQIMP Fone
  Print File ARQIMP Insc_Estadual
  Print File ARQIMP Email
  Print File ARQIMP "\n"
  
EndScan
ClearAll

EndProc ;Transportador()

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

ARQIMP=VSDGCAMINHO+"\\FPAGTO.TXT"
If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf

;;;**** Forma de Pagamento  ******
NR=NRecords("\\Sistemas\\Vendas\\DJ_FP")

View "\\Sistemas\\Vendas\\DJ_FP"
Scan 
  Barra(NR, RecNo())
  AGUARDE("Aguarde, Exportando Formas de Pagamento "+BARRA_STRING)

  CopyToArray REG_FPAGTO

  Cod_Interno    = AlinhM(REG_FPAGTO["Codigo DJ"],2)
  Cod_Externo    = Completa(AlinhM(REG_FPAGTO["Codigo Operacao"],2),10," ")
  Descricao      = Completa(REG_FPAGTO["Descricao Operacao"],20," ")
  Descricao_ECF  = Completa(REG_FPAGTO["Descricao Operacao"],20," ")
  Tecla_Atalho   = "0"                                                          
  Vendas_Avista  = "S"                                                          ;Faz Vendas a Vista             
  Recebimento    = "N"                                                          ;Usada para Recebimentos ???
  Debitos_Caixa  = "S"                                                          ;Usada para Debitos no Caixa  ???
  Creditos_Caixa = "S"                                                          ;Usada para Creditos no Caixa ???
  Aprovacao      = "N"                                                          ;C¢digo da Forma de Aprova‡Æo a ser exigida para essa Forma de pagamento.
  Tipo_Troco     = "D"
  Valor_Minimo   = Valor(0,12,2)
  
  If [Tipo]<>"E"
    Then Valor_Maximo   = Valor(9999999999,12,2)
    Else Valor_Maximo   = Valor(0,12,2)
  EndIf 
  
  Print File ARQIMP Cod_Interno
  Print File ARQIMP Cod_Externo
  Print File ARQIMP Descricao
  Print File ARQIMP Descricao_ECF
  Print File ARQIMP Tecla_Atalho
  Print File ARQIMP Vendas_Avista
  Print File ARQIMP Recebimento
  Print File ARQIMP Debitos_Caixa
  Print File ARQIMP Creditos_Caixa
  Print File ARQIMP Aprovacao
  Print File ARQIMP Tipo_Troco
  Print File ARQIMP Valor_Minimo
  Print File ARQIMP Valor_Maximo
  Print File ARQIMP "\n"

EndScan
ClearAll

ARQIMP=VSDGCAMINHO+"\\PLAPAGTO.TXT"
If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf

;;;**** Condi‡Æo de Pagamento  ******
NR=NRecords("\\Sistemas\\Vendas\\CondPgto")

INICIAR = 0

View "\\Sistemas\\Vendas\\CondPgto"
Scan 
  Barra(NR, RecNo())
  AGUARDE("Aguarde, Exportando Cond.Pagamento "+BARRA_STRING)
  CopyToArray REG_CONDPAGTO

  If REG_CONDPAGTO["Codigo DJ"]=""           Then Loop EndIf
  If REG_CONDPAGTO["Tipo de Pagamento"]="O"  Then Loop EndIf
  If REG_CONDPAGTO["Utiliza_ECF"]<>"S"       Then Loop EndIf
  If REG_CONDPAGTO["Codigo_FP_ECF"]<>"" And [Composicao de Dias]="" Then Loop EndIf 

  ;**** Condi‡Æo de Pagamento ***********************************************
  COMPDIAS=""
  If REG_CONDPAGTO["Codigo_FP_ECF"]<>""
   Then NP=REG_CONDPAGTO["Numero de Parcelas"]
        j=1
        i=1
        While i<=NP
          pos_s=SearchFrom("/",REG_CONDPAGTO["Composicao de Dias"],j)
          If pos_s=0
            Then If i>1
                  Then NDIAS=NumVal(SubStr(REG_CONDPAGTO["Composicao de Dias"],j,(Len(REG_CONDPAGTO["Composicao de Dias"])-(j-1))))
                   Else If Not IsBlank(REG_CONDPAGTO["Composicao de Dias"])
                          Then NDIAS=NumVal(SubStr(REG_CONDPAGTO["Composicao de Dias"],j,Len(REG_CONDPAGTO["Composicao de Dias"])))
                          Else NDIAS=0
                        EndIf
                 EndIf
            Else NDIAS=NumVal(SubStr(REG_CONDPAGTO["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  
  
  ;**** Taxa de Desconto ****************************************************
  If REG_CONDPAGTO["Taxa Desconto"]>0
    Then Desconto_Maximo = Valor(REG_CONDPAGTO["Taxa Desconto"],5,3)
    Else Desconto_Maximo = Valor(0,5,3)
  EndIf     

  ;**** Intervalo de Dias ***************************************************
  NDIAS    = 0
  CONTADOR = 0
  COMPDIAS = REG_CONDPAGTO["Composicao de Dias"]
  PosI     = Search("/",COMPDIAS)
  If PosI > 0 
    Then AUX_DIAS = 0 
         While True
           CONTADOR = CONTADOR + 1           
           
           If SubStr(COMPDIAS,1,PosI-1)<>""
              Then AUX_DIAS = NumVal(NDIAS)
           EndIf   
           NDIAS    = SubStr(COMPDIAS,1,PosI-1) 
           COMPDIAS = SubStr(COMPDIAS,PosI+1,Len(COMPDIAS))
           
           If SubStr(COMPDIAS,1,PosI-1)<>""
              Then AUX_DIAS = NumVal(NDIAS) - AUX_DIAS
           EndIf
           
           PosI = Search("/",COMPDIAS)
           If PosI = 0 Then QuitLoop EndIf
         EndWhile   
         NDIAS = AUX_DIAS   
    Else NDIAS = COMPDIAS     
  EndIf

  Cod_Interno                         = Completa(AlinhM(REG_CONDPAGTO["Condicao de Pagamento"],2),2," ")
  Cod_Externo                         = Completa(REG_CONDPAGTO["Codigo DJ"],10," ")
  Descricao                           = Completa(REG_CONDPAGTO["Descricao CondPagto"],20," ")
  DiaspEntrada                        = "000"
  Percentual_Entrada                  = Valor(0,6,3)
  Qtd_de_Parcelas                     = AlinhM(StrVal(REG_CONDPAGTO["Numero de Parcelas"]),3)
  Intervalo_entre_Parcelas            = AlinhM(StrVal(NDIAS),3)
  Manter_Dia_Vencto                   = "N"                                                       ;Se PDV manten sempre mesmoo dia p/ vencimento 'S' ou 'N'.
  Exige_Cheque                        = "N"                                                       ;Se PDV deve exigir o cadastramento Cheque 'S' ou 'N'.
  Prazo_Medio_Max                     = "0000"
  Desconto_Minimo                     = Valor(0,5,3)                                              ;Campos de Percentual Max 99%
  Desconto_Maximo                     = Desconto_Maximo                                           ;Campos de Percentual Max 99%
  Acrescimo_Minimo                    = Valor(0,6,3)                                              ;Campos de Percentual Max 999%
  Acrescimo_M ximo                    = Valor(0,6,3)                                              ;Campos de Percentual Max 999%
  Utilizar_Desconto_do_Produto        = "N"
  Tipo_Restricao_para_Forma_Pagamento = "T"
  Lista_de_Formas_de_Pagamento        = Completa(" ",30," ")

  Print File ARQIMP Cod_Interno
  Print File ARQIMP Cod_Externo
  Print File ARQIMP Descricao
  Print File ARQIMP DiaspEntrada
  Print File ARQIMP Percentual_Entrada
  Print File ARQIMP Qtd_de_Parcelas
  Print File ARQIMP Intervalo_entre_Parcelas
  Print File ARQIMP Manter_Dia_Vencto
  Print File ARQIMP Exige_Cheque
  Print File ARQIMP Prazo_Medio_Max
  Print File ARQIMP Desconto_Minimo
  Print File ARQIMP Desconto_Maximo
  Print File ARQIMP Acrescimo_Minimo
  Print File ARQIMP Acrescimo_M ximo
  Print File ARQIMP Utilizar_Desconto_do_Produto
  Print File ARQIMP Tipo_Restricao_para_Forma_Pagamento 
  Print File ARQIMP Lista_de_Formas_de_Pagamento
  Print File ARQIMP "\n"

EndScan
ClearAll
Return

EndProc ; CondPagtos()

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

Switch
  Case Opcao="Ler":
       If IsFile("EX_IDDJ.sc")
           Then Play "EX_IDDJ"
       EndIf                  
       If Not IsAssigned(VSDGCAMINHO)   Then VSDGCAMINHO ="C:\\DJSYSTEM\\DJ_INT\\IMP" EndIf
       ;If Not IsAssigned(VSDGCAMINHOW)  Then VSDGCAMINHOW="C:\\DJSYSTEM\\DJ_INT\\IMP" EndIf

  Case Opcao="Gravar":
       FileWrite        "EX_IDDJ.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 para Criar Tabela                                                    *
;*******************************************************************************
Proc Adiciona_Registro(Tabela)
Private Tabela

If IsEmpty("Answer")
   Then NAO_FAZ = True
        Return
EndIf 

Switch
  Case Tabela="Itens" :  
       {Ask} {Answer} TypeIn "Fast Delete"
       Moveto [Codigo do Item    ] TypeIn "_Cod"
       {Ask} {\\Sistemas\\Estoque\\Itens}
       Moveto [Codigo do Item    ] TypeIn "_Cod"  
       Moveto [Tributacao de ICMS] TypeIn "D"
       Moveto [Aliquota de ICMS  ] TypeIn "<=0"
       Do_It!
       ClearAll
      
       {Ask} {Answer} TypeIn "Fast Delete"
       Moveto [Codigo do Item    ] TypeIn "_Cod"
       {Ask} {\\Sistemas\\Estoque\\Itens}
       Moveto [Codigo do Item    ] TypeIn "_Cod"  
       Moveto [Tipo Tributacao   ] TypeIn "Blank"
       Do_It!
       ClearAll 

       ;Habilitar quando Lei Transparencia fiscal obrigatoria
       ;{Ask} {Answer} 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 

       {Ask} {Answer}
       Moveto [Codigo do Item        ] Example "CodI"     
       Moveto [Descricao do Item     ] Example "Desc"     
       Moveto [Unidade Fiscal        ] Example "UnF"     
       Moveto [Tipo do Item          ] Example "TipI"     
       Moveto [Descricao Tipo do Item] Example "DTip"     
       Moveto [Codigo da Familia     ] Example "CodF"     
       Moveto [Descricao da Familia  ] Example "DesF"     
       Moveto [Codigo do Grupo       ] Example "CodG"     
       Moveto [Descricao do Grupo    ] Example "DesG"     
       Moveto [Codigo da Marca       ] Example "CodM"     
       Moveto [Descricao da Marca    ] Example "DesM"          
       Moveto [Tributacao de ICMS    ] Example "Trib"     
       Moveto [Aliquota de ICMS      ] Example "Aliq"         
       Moveto [Tipo Tributacao       ] Example "TipT"     
       Moveto [Descricao Complementar] Example "DsC"     
       Moveto [Codigo Fornecedor     ] Example "CodD"       
       Moveto [Inativo               ] Example "Inat"          
       Moveto [Referencia            ] Example "Refe"     
       Moveto [Codigo da Grade       ] Example "CodE"
       Moveto [Tipo Codigo_Barras    ] Example "TpCodB"
       Moveto [Codigo de Barras      ] Example "CodB"
       Moveto [CSOSN                 ] Example "Csosn"
       Moveto [Aliquota Reduzida BCICMS] Example "AlRed"
       Moveto [Tributacao de ISSQN   ] Example "Issq"
       Moveto [Codigo_Servico        ] Example "Serv"
       Moveto [NCM                   ] Example "Ncm"
      
       {Ask} TypeIn TabelaREF Enter TypeIn "Insert" Enter
       Moveto [Codigo do Item        ] Example "CodI"   
       Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA"   
       Moveto [Descricao do Item     ] Example "Desc"     
       Moveto [Unidade Fiscal        ] Example "UnF"     
       Moveto [Tipo do Item          ] Example "TipI"     
       Moveto [Descricao Tipo do Item] Example "DTip"     
       Moveto [Codigo da Familia     ] Example "CodF"     
       Moveto [Descricao da Familia  ] Example "DesF"     
       Moveto [Codigo do Grupo       ] Example "CodG"     
       Moveto [Descricao do Grupo    ] Example "DesG"     
       Moveto [Codigo da Marca       ] Example "CodM"     
       Moveto [Descricao da Marca    ] Example "DesM"          
       Moveto [Tributacao de ICMS    ] Example "Trib"     
       Moveto [Aliquota de ICMS      ] Example "Aliq"         
       Moveto [Tipo Tributacao       ] Example "TipT"     
       Moveto [Descricao Complementar] Example "DsC"     
       Moveto [Codigo Fornecedor     ] Example "CodD"       
       Moveto [Inativo               ] Example "Inat"     
       Moveto [Referencia            ] Example "Refe"     
       Moveto [Codigo da Grade       ] Example "CodE"
       Moveto [Tipo Codigo_Barras    ] Example "TpCodB"
       Moveto [Codigo de Barras      ] Example "CodB"
       Moveto [CSOSN                 ] Example "Csosn"
       Moveto [Aliquota Reduzida BCICMS] Example "AlRed"
       Moveto [Tributacao de ISSQN   ] Example "Issq"
       Moveto [Codigo_Servico        ] Example "Serv"
       Moveto [NCM                   ] Example "Ncm"
       Do_It!
       ClearAll
       
      ;******* Ajusta dados do complemento dos Itens ******
      {Ask} {\\Sistemas\\Estoque\\Iten_com}
      Moveto [Codigo do Item        ] Example "item"
      Moveto [Situacao              ] Example "Situ"
      Moveto [EX_TIPI               ] Example "ExTi"
     {Ask} TypeIn TabelaREF Enter TypeIn "Fast" Enter
      Moveto [Codigo do Item        ] Example "item"
      Moveto [Situacao              ] TypeIn "Changeto " Example "Situ"
      Moveto [EX_TIPI               ] TypeIn "Changeto " Example "ExTi"      
      Do_It!
      ClearAll             

  Case Tabela="Sdestq" :
       {Ask} {Answer}
       Moveto [Codigo da Empresa] Example "Cemp" 
       Moveto [Codigo do Item   ] Example "CodI"
       Moveto [Saldo Atual      ] Example "Sald"
       {Ask} TypeIn TabelaREF Enter
       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
      
  Case Tabela="Preco" :
       {Ask} {Answer}
       Moveto [Codigo do Item   ] Example "CodI"
       Moveto [Preco Unitario   ] Example "PrUn"
       {Ask} TypeIn TabelaREF Enter
       Moveto [Codigo do Item   ] Example "CodI"
       Moveto [TbPreco          ] TypeIn "Changeto X"               
       Moveto [Preco Unitario1  ] TypeIn "Changeto _PrUn"
       Do_It!
       ClearAll  
      
 Case Tabela="DJ" : 
      {Ask} {Answer}
      Moveto [Codigo do Item   ] Example "CodI"
      Moveto [Codigo Vinculado ] Example "CodV"
      {Ask} TypeIn TabelaREF Enter
      Moveto [Codigo do Item   ] Example "CodI"
      Moveto [Codigo Vinculado ] TypeIn "Changeto _Codv"      
      Moveto [DJ_Ref           ] TypeIn "Changeto X" 
      Do_It!
      ClearAll  
EndSwitch
   
EndProc ;Adiciona Registro()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Gera_Tabela()

TabelaREF=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Estoque\\RM_4002" TabelaREF
Empty TabelaREF

;**** Itens ********************************************************** 
{Ask} {\\Sistemas\\Estoque\\Itens} Check
Moveto [Tipo do Item] TypeIn "P Or C Or T Or E"
Do_It!
ClearAll

Adiciona_Registro("Itens")

If VSDGOPCAO[2] Or VSDGOPCAO[3] Or VSDGOPCAO[7]
   Then 
        If VSDGOPCAO[2] Or VSDGOPCAO[7]
           Then ;**** Saldo de Estoque Atual ***********************
                {Ask} TypeIn TabelaREF Enter
                Moveto [Codigo da Empresa] Example "Cemp" 
                Moveto [Codigo do Item   ] Example "CodI"
                {Ask} {\\Sistemas\\Estoque\\SdEstq}
                Moveto [Codigo da Empresa] Check Example "Cemp" 
                Moveto [Codigo do Item   ] Check Example "CodI"
                Moveto [Ano Referencia   ] TypeIn "~VSDGANO"
                Moveto [Mes Referencia   ] TypeIn "~VSDGMES"
                Moveto [Saldo Atual      ] Check
                Do_It!
                ClearAll
                
                Adiciona_Registro("Sdestq")
        EndIf
        
        ;**** Tabela de Pre‡o ******************************
        CODTAB=VSDGTABELA
        {Ask} TypeIn TabelaREF Enter
        Moveto [Codigo do Item   ] Example "CodI"
        {Ask} {\\Sistemas\\Vendas\\TbPrIte}
        Moveto [Codigo da Tabela ] TypeIn "~CODTAB" 
        Moveto [Codigo do Item   ] Check Example "CodI"
        Moveto [Preco Unitario   ] Check
        Do_It!
        ClearAll
        
        Adiciona_Registro("Preco")  
        
        If VSDGOPCAO[2]
           Then ;**** DJ - Codigo Vinculado ************************
               {Ask} TypeIn TabelaREF Enter
                Moveto [Codigo do Item   ] Example "CodI"
                {Ask} {\\Sistemas\\Vendas\\DJ}
                Moveto [Codigo do Item   ] Check Example "CodI"
                Moveto [Codigo Vinculado ] Check
                Do_It!
                ClearAll
                
                Adiciona_Registro("DJ")
        EndIf        
EndIf

EndProc ;Gera_Tabela()

;*******************************************************************************
;* Rotina Converte caracter especial e passa para numero                       *
;*******************************************************************************
Proc Tira_CharNum(s)
private s, sn, i, ch

sn=""
For i from 1 to Len(s)
  ch=SubStr(s,i,1)
  Switch
   Case Asc(ch)=40  : ch="" ; (
   Case Asc(ch)=41  : ch="" ; )
   Case Asc(ch)=42  : ch="" ; *
   Case Asc(ch)=43  : ch="" ; +
   Case Asc(ch)=44  : ch="" ; ,
   Case Asc(ch)=45  : ch="" ; -
   Case Asc(ch)=46  : ch="" ; .
   Case Asc(ch)=47  : ch="" ; /
   Case Asc(ch)=58  : ch="" ; :
   Case Asc(ch)=32  : ch="" ; espa‡o
  EndSwitch
  sn=sn+ch
EndFor
Return Upper(sn)

EndProc

;*******************************************************************************
;* 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
                  executarF1=false
                  Dynarray WinArray5[]
                  Window Handle Dialog To JANELA_DIALOG
                  Window GetAttributes JANELA_DIALOG To WinArray5
                  
                  View "\\Sistemas\\Vendas\\DJ_CUP"    executarF1=True
                  
                  WinArray5["FLOATING"]=False
                  Window SetAttributes JANELA_DIALOG From WinArray5
          
                  executarF1=Consulta_Sem_F1()
                  If executarF1
                     Then Campo="TG_NSERIE"
                                 VSDGNECF   =[Numero ECF      ]
                                 VSDGNSERIE =[Numero de Serie ]
                  EndIf
                  Window Select JANELA_DIALOG
                  WinArray5["FLOATING"]=True
                  Window SetAttributes JANELA_DIALOG From WinArray5
 
                  ClearImage
                  Echo Normal
                  Echo Off
                  RefreshDialog
                  Campo="TG_NECF"
              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_CAMINHO"       : Campo="TG_TABELA"
            ;Case Campo="TG_CAMINHOW"      : Campo="TG_CAMINHO"
            Case Campo="TG_NECF"          : Campo="TG_CAMINHO"
            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 IsBlanK(VSDGEMPRESA)
                          Then Campo="TG_EMPRESA"                           
                          Else VSDGEMPRESA=AlinhM(VSDGEMPRESA,4)
                               Campo="TG_TABELA"
                         EndIf                 
                    Case Campo="TG_TABELA"     : Campo="TG_CAMINHO"
                    Case Campo="TG_CAMINHO"    :
                         VSDGCAMINHO=ControlValue("TG_CAMINHO")
                         If Not IsBlanK(VSDGCAMINHO)
                            Then Campo="TG_NECF"
                         EndIf
                    ;Case Campo="TG_CAMINHOW"    :
                    ;     VSDGCAMINHOW=ControlValue("TG_CAMINHOW")
                    ;     If Not IsBlanK(VSDGCAMINHOW)
                    ;        Then Campo="TG_NECF"
                    ;     EndIf
                    Case Campo="TG_NECF"       :
                          VSDGNECF=ControlValue("TG_NECF")
                          If Not IsBlanK(VSDGNECF)
                             Then VSDGNECF=AlinhM(VSDGNECF,2)
                                  View NOWINDOW "\\Sistemas\\Vendas\\DJ_CUP"
                                  Moveto [Numero ECF]
                                  Locate VSDGNECF
                                  If RetVal
                                     Then VSDGNSERIE=[Numero de Serie]
                                          Campo="TG_OPCOES"
                                     Else MENSAGEM("Numero ECF n„o Cadastrado !")       
                                  EndIf
                                  ClearImage
                             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) 
                            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 DJ.           Exemplo: C:\\DJSYSTEM\\MONITOR\\REMESSA"
 Case Campo="TG_CAMINHOW": MSG_CAMPO="Caminho de controle INTEGRADOR.  Exemplo: C:\\DJSYSTEM\\MONITOR\\INTEGR~1\\WORK\\REM"
 Case Campo="TG_TABELA"  : MSG_CAMPO="Tabela de Pre‡o"
 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 PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf

LimpAguarde()

;**** Tabela de Imposto para NFe *******************
Gera_Tabela_Imposto = False 

If Gera_Tabela_Imposto
   Then Tabela_Imposto("ICMS")
        Tabela_Imposto("ISSQN") 
EndIf

ConfOpcoes("Ler")

VSDGEMPRESA = ""
VSDGDTINI   = BlankDate()
VSDGDTFIM   = BlankDate()
VSDGNSERIE  = ""
VSDGNECF    = ""
VSDGOPOF    = "S"

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)

DTFIMREF    = Today()-1
VSDGDTINI   = Primeiro_Dia(VSDGMES+VSDGANO)
VSDGDTFIM   = DTFIMREF 
           
Array VSDGOPCAO[7]
VSDGOPCAO[1]=True
VSDGOPCAO[2]=True
VSDGOPCAO[3]=False
VSDGOPCAO[4]=False
VSDGOPCAO[5]=False
VSDGOPCAO[6]=False
VSDGOPCAO[7]=False

COR_MENSAGEM="1"
MSG=    "Antes de executar esta rotina:                                      ////"
MSG=MSG+" - Verifique se o INTEGRADOR do DJ esta carregado;                  //" 
MSG=MSG+" - Visualize o INTEGRADOR para acompanhar a opera‡Æo;               //"
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/ DJ - VersÆo 1.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 13 Width 76

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

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

    Label  @ 04,00 "Caminho DJ"  For "TG_CAMINHO"
    Accept @ 05,01 Width 42 "A37"  Picture "!*!" Tag "TG_CAMINHO" To VSDGCAMINHO
    
    ;Label  @ 06,00 "Caminho ITEGRADOR"  For "TG_CAMINHOW"
    ;Accept @ 07,01 Width 42 "A37"  Picture "!*!" Tag "TG_CAMINHOW" To VSDGCAMINHOW
    
    Label  @ 06,00 "ECF"  For "TG_NECF"
    Accept @ 07,01 Width 05 "A2"  Picture "#*#" Tag "TG_NECF" To VSDGNECF
    
    Label  @ 06,06 "Numero de Serie"  For "TG_NSERIE"
    Accept @ 07,07 Width 23 "A20"  Picture "#*#" Tag "TG_NSERIE" To VSDGNSERIE

    Label  @ 01,45 "Op‡oes " For "TG_OPCOES"
    CheckBoxes @2,46 Height 8 Width 26 Tag "TG_OPCOES"
    "Clientes          " to VSDGOPCAO[1],
    "Produtos          " to VSDGOPCAO[2],
    "Tabela de Pre‡o   " to VSDGOPCAO[3],
    "Transportadores   " to VSDGOPCAO[4],
    "Vendedores        " to VSDGOPCAO[5],
    "Cond.Pagtos       " to VSDGOPCAO[6],
    "Movimenta‡”es     " to VSDGOPCAO[7]

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  ;***** Verificando Arquivos de Importa‡Æo *****
  If DirExists("C:\\DJSYSTEM\\MONITOR")>0
     Then SetDir "\\Sistemas\\Vendas"
          Aguarde("Aguarde, copiando arquivos para o diret¢rio de trabalho ")                                             
          {Tools} {Info} {Inventory} {Files} TypeIn "C:\\DJSYSTEM\\MONITOR\\*.txt" Enter ClearImage
                                             
          ACHOU_ARQUIVO = False
          If Not IsEmpty("List")                              
             Then DynArray EXPORTA_ARQUIVO[]
                  CONTADOR = 0
                  
                  View "List"
                  Scan
                    ARQUIVO = [Name]
                    Switch
                      Case Search("CLIENTE",Upper(ARQUIVO)) > 0  : NOME = "CLIENTE"
                                                                   ACHOU_ARQUIVO =True
                      Case Search("PRECO",Upper(ARQUIVO)) > 0    : NOME = "PRECO"
                                                                   ACHOU_ARQUIVO =True
                      Case Search("PRODUTO",Upper(ARQUIVO)) > 0  : NOME = "PRODUTO"
                                                                   ACHOU_ARQUIVO =True
                      Case Search("BARRAS",Upper(ARQUIVO)) > 0   : NOME = "BARRAS"
                                                                   ACHOU_ARQUIVO =True
                      Case Search("PRECO",Upper(ARQUIVO)) > 0    : NOME = "PRECO"
                                                                   ACHOU_ARQUIVO =True
                      Case Search("Vendedor",Upper(ARQUIVO)) > 0 : NOME = "VENDEDOR"
                                                                   ACHOU_ARQUIVO =True
                      Case Search("TRANSPOR",Upper(ARQUIVO)) > 0 : NOME = "TRANSPOR"
                                                                   ACHOU_ARQUIVO =True
                      Case Search("FPAGTO",Upper(ARQUIVO)) > 0   : NOME = "FPAGTO"
                                                                   ACHOU_ARQUIVO =True
                      Case Search("PLAPAGTO",Upper(ARQUIVO)) > 0 : NOME = "PLAPAGTO"
                                                                   ACHOU_ARQUIVO =True
                    EndSwitch
                    
                    If ACHOU_ARQUIVO
                       Then ACHOU_ARQUIVO = False
                            CONTADOR = CONTADOR + 1
                            EXPORTA_ARQUIVO[CONTADOR] = Completa("- "+NOME+".TXT",59," ")
                    EndIf
                  EndScan
                  ClearAll
                
                  If DynArraySize(EXPORTA_ARQUIVO)>0
                     Then MSG = "Existem arquivos a serem importados em C:\\DJSYSTEM\\MONITOR//"
                          For i From 1 To DynArraySize(EXPORTA_ARQUIVO)
                            MSG = MSG + EXPORTA_ARQUIVO[i]+"//"
                          EndFor
                          Mensagem(MSG+"//Verificar estes arquivos para prosseguir !")  
                          Loop 
                  EndIf
          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(VSDGTABELA)
     Then Mensagem("Informe a Tabela de Pre‡o !")
          Loop       
  EndIf
  
  If IsBlank(VSDGNECF)
     Then Mensagem("Numero ECF Inv lido!")
          Loop
  EndIf  

  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
  
  Deleta_Arquivo(VSDGCAMINHO+"\\*.txt")
  Aguarde("Processando dados")
  
  If VSDGOPCAO[2] Or
     VSDGOPCAO[3] Or
     VSDGOPCAO[7]
     Then Gera_Tabela()
          Atualiza_CodVinculado()
  EndIf 
  
  If VSDGOPCAO[1]=True Then Clientes()          EndIf
  If VSDGOPCAO[2]=True Then ;**** Tabela de Imposto para NFe *******************
                            If Gera_Tabela_Imposto
                               Then Imposto("ICMS")  
                                    Imposto("ISSQN")
                            EndIf               
                            Produtos("Item")    EndIf
  If VSDGOPCAO[3]=True Then If Not VSDGOPCAO[2]
                              Then Produtos("Preco")
                            EndIf               EndIf                              
  If VSDGOPCAO[4]=True Then Transportador()     EndIf
  If VSDGOPCAO[5]=True Then Vendedores()        EndIf
  If VSDGOPCAO[6]=True Then CondPagtos()        EndIf
  If VSDGOPCAO[7]=True Then If Not VSDGOPCAO[2]
                              Then Movimentacao_Item()
                            EndIf               EndIf
                            
  ;***** Copiando os arquivos para diret¢rio de trabalho *****
  Aguarde("Aguarde, copiando arquivos para o diret¢rio de trabalho ")                                             
  {Tools} {Info} {Inventory} {Files} TypeIn VSDGCAMINHO+"\\*.kdx" Enter ClearImage
  If Not IsEmpty("List")                              
     Then DynArray EXPORTA_ARQUIVO[]
          CONTADOR = 0
          
          View "List"
          Scan
            ARQUIVO = [Name]
            Copia_Arquivo(VSDGCAMINHO+"\\"+ARQUIVO+" C:\\DJSYSTEM\\MONITOR\\"+Upper(ARQUIVO))
            Sleep 3000
          EndScan
          ClearAll
          
          View "List"
          Scan
            ARQUIVO = [Name]
            
            ARQ_AUX = VSDGCAMINHO+"\\"+SubStr(ARQUIVO,1,Len(ARQUIVO)-3)+"krr"
            ExecVise("REN "+VSDGCAMINHO+"\\"+ARQUIVO+" \""+Upper(ARQ_AUX)+"\"")
            Sleep 1000
          EndScan
          ClearAll
  EndIf
                            
  ;***** Copiando os arquivos para diret¢rio de trabalho *****
  Aguarde("Aguarde, copiando arquivos para o diret¢rio de trabalho ")                                             
  {Tools} {Info} {Inventory} {Files} TypeIn VSDGCAMINHO+"\\*.txt" Enter ClearImage
  
  If Not IsEmpty("List")                              
     Then DynArray EXPORTA_ARQUIVO[]
          CONTADOR = 0
          
          View "List"
          Scan
            ARQUIVO = [Name]
            Copia_Arquivo(VSDGCAMINHO+"\\"+ARQUIVO+" C:\\DJSYSTEM\\MONITOR\\"+Upper(ARQUIVO))
            Sleep 1000
          EndScan
          ClearAll    
  EndIf
  
  ConfOpcoes("Gravar")
  Mensagem("Opera‡„o realizada !")

  SetDir "\\Sistemas\\Vendas"
  LimpAguarde()   
EndWhile

ClearAll
Release Vars All
Release Procs All      
