;* EXPDDMS2 ********************************************************************
;*  Exporta‡Æo de Duplicatas em TXT p/ Sistema Cont bil  ** Dom¡nio Sistemas   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 29/07/2017 por Anivel Augusto Rodrigues
;Ultima Alteracao: 07/12/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes 0112 - Michelle conta clientes/fornecedores em branco
;Ultima Alteracao: 29/06/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes 0112 - Michelle contas e historico
;Ultima Alteracao: 02/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes 0112 - titulos descontado e retorno titulo descontado
;Ultima Alteracao: 05/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gravar txt
;Ultima Alteracao: 06/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes parcela e nÆo gerar historico
;Ultima Alteracao: 10/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes historico
;Ultima Alteracao: 11/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes historico titulos baixado descontado
;Ultima Alteracao: 02/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes final txt
;Ultima Alteracao: 02/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes tipo registro titulo descontado 6000/6100
;Ultima Alteracao: 24/09/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes lancamento desconto titulo normal             
;Ultima Alteracao: 29/11/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes lancamento juros recebido titulo normal             
;Ultima Alteracao: 23/01/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes conta titulos descontados                           
;Ultima Alteracao: 30/01/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes conta titulos descontados em titulos descontados    
;Ultima Alteracao: 31/01/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes valida‡Æo de campos    
;Ultima Alteracao: 04/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes titulo               

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Seleciona()
Private i

DOCTO_SEQ=0

Aguarde("Aguarde, selecionando dados")                 

;**** T¡tulos descontados ****************************************************        
{Ask} {\\Sistemas\\Ctarec\\Alttitc}
Moveto [Numero do Lote        ]       typein "_nlanc"    
Moveto [Codigo da Empresa     ]       TypeIn "~VSDGEMPRESA.."
Moveto [Data da Operacao      ]       TypeIn ">=~VSDGDTINI ,<=~VSDGDTFIM"
Moveto [Codigo da Conta       ] Check 
Moveto [Tipo da Conta         ]       TypeIn "C"
Moveto [Tipo do Lancamento    ]       TypeIn "A"
{Ask} {\\Sistemas\\Ctarec\\Alttiti} Check
Moveto [Numero do Lote        ]       typein "_nlanc"    
Moveto [Codigo da Conta       ]       TypeIn "as Codido da ContaAnterior" 
Do_It!
ClearAll 

If not IsEmpty("Answer")
   Then 
   
        Sort "Answer" On "Data da Operacao","Numero do Lancamento","Tipo do Documento", "Numero do Documento"
        ClearAll
        
        NR=NRecords("Answer")
        View_Tabelas("TD")
        Coedit "Answer"
        Scan
          Barra(NR, RecNo())
          Aguarde("Aguarde, selecionando titulos descontados "+BARRA_STRING)
        
          Monta_DadosTDescontados("TD")
        
          Moveto "Answer"
        EndScan
        Do_it!
        ClearAll
EndIf

;**** T¡tulos descontados nÆo recebidos no banco *****************************        
{Ask} {\\Sistemas\\Ctarec\\Alttitc}
Moveto [Numero do Lote        ]       typein "_nlanc"    
Moveto [Codigo da Empresa     ]       TypeIn "~VSDGEMPRESA.."
Moveto [Data da Operacao      ]       TypeIn ">=~VSDGDTINI ,<=~VSDGDTFIM"
Moveto [Tipo da Conta         ]       TypeIn "X"
{Ask} {\\Sistemas\\Ctarec\\Alttiti} Check
Moveto [Numero do Lote        ]       typein "_nlanc"    
Moveto [Tipo do Lancamento    ]       TypeIn "A"
Do_It!
ClearAll 

If not IsEmpty("Answer")
   Then 
   
        Sort "Answer" On "Data da Operacao","Numero do Lancamento","Tipo do Documento", "Numero do Documento"
        ClearAll
        
        NR=NRecords("Answer")
        View_Tabelas("TD")
        Coedit "Answer"
        Scan
          Barra(NR, RecNo())
          Aguarde("Aguarde, selecionando estorno titulos descontados "+BARRA_STRING)
        
          Monta_DadosTDescontados("ETD")
        
          Moveto "Answer"
        EndScan
        Do_it!
        ClearAll
EndIf

;**** Baixas *****************************************************************        
For i From 1 To 2

  Switch
   Case VSDGOPCAO[1] and i=1:
        {Ask} {\\Sistemas\\Ctapag\\Titulos}         
        Moveto [Numero do Lancamento  ] Check TypeIn "_NLanc"
        Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Tipo do Documento     ] Check
        Moveto [Numero do Documento   ] Check
        Moveto [Codigo do Documento   ] Check

        Moveto [Data de Emissao       ] Check
        Moveto [Data de Vencimento    ] Check
        Moveto [Valor do Documento    ] Check

        Moveto [Codigo do Emitente    ] Check typein "as Codigo da Pessoa"
        Moveto [Lancamento Gerador    ] Check
        Moveto [Sequencia Gerador     ] Check  
        Moveto [Sistema Gerador       ] Check TypeIn "NE"                              ;<<<< Apenas registros c/ Notas de Entrada 

        {Ask} {\\Sistemas\\Ctapag\\Titbaixa}            
        Moveto [Numero do Lancamento  ] Check TypeIn "_NLanc"
        Moveto [Tipo de Operacao      ] Check
        Moveto [Valor do Pagamento    ] Check 
        Moveto [Numero do Cheque      ] Check

        Moveto [Sequencia da Baixa       ] Check
        Moveto [Data do Pagamento        ] Check TypeIn ">=~VSDGDTINI ,<=~VSDGDTFIM"
        Moveto [Codigo da Conta          ] Check
        Moveto [Valor do Juros           ] Check
        Moveto [Valor do Desconto        ] Check
        Moveto [Lancamento Conta Corrente] Check
        Moveto [Tipo da Baixa            ] Check
        Do_It!
        ClearAll 
        
        If IsEmpty("Answer") Then Loop EndIf
        Sort "Answer" On "Lancamento Gerador","Tipo do Documento","Numero do Documento"
        ClearAll
        
        ;---- Baixas do Contas a Pagar ---------------------------------
        NR=NRecords("Answer")
        View_Tabelas("AP")
        Coedit "Answer"
        Scan
          Barra(NR, RecNo())
          Aguarde("Aguarde, selecionando baixas do contas a pagar "+BARRA_STRING)

          if [valor do pagamento]>0 then Monta_Dados("AP") endif

          Moveto "Answer"
        EndScan
        Do_it!
        ClearAll
        
   Case VSDGOPCAO[2] and i=2:
        {Ask} {\\Sistemas\\Ctarec\\Duplic}
        Moveto [Numero do Lancamento  ] Check TypeIn "_NLanc"
        Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Tipo do Documento     ] Check
        Moveto [Numero do Documento   ] Check
        Moveto [Codigo do Documento   ] Check
        
        Moveto [Data de Emissao       ] Check
        Moveto [Data de Vencimento    ] Check
        Moveto [Valor do Documento    ] Check

        Moveto [Codigo do Destinatario] Check typein "as Codigo da Pessoa"
        Moveto [Tipo Docto Gerador    ] Check 
        Moveto [Numero Docto Gerador  ] Check TypeIn "as Lancamento Gerador"
        Moveto [Sequencia Gerador     ] Check  
        Moveto [Sistema Gerador       ] Check TypeIn "Not Blank, Not MA"               ;<<<< Registros n„o manuais e diferente de branco
        Moveto [Tipo do Lancamento    ] Check
        
        {Ask} {\\Sistemas\\Ctarec\\Dupbaixa}
        Moveto [Numero do Lancamento  ] Check TypeIn "_NLanc"
        Moveto [Valor do Recebimento  ] Check TypeIn "as Valor do Pagamento"
        Moveto [Sequencia da Baixa       ] Check
        Moveto [Data do Pagamento        ] Check TypeIn ">=~VSDGDTINI ,<=~VSDGDTFIM"
        Moveto [Codigo da Conta          ] Check
        Moveto [Valor do Juros           ] Check
        Moveto [Valor do Desconto        ] Check
        Moveto [Lancamento Conta Corrente] Check
        Moveto [Tipo da Baixa            ] Check
        Do_It!
        ClearAll 
        
        If IsEmpty("Answer") Then Loop EndIf
        Sort "Answer" On "Lancamento Gerador","Tipo do Documento","Numero do Documento"
        ClearAll
        
        ;---- Baixas do Contas a Receber -------------------------------
        NR=NRecords("Answer")
        View_Tabelas("AR")
        Coedit "Answer"
        Scan
          Barra(NR, RecNo())
          Aguarde("Aguarde, selecionando baixas do contas a receber "+BARRA_STRING)
          if [valor do pagamento]>0 then Monta_Dados("AR") endif

          Moveto "Answer"
        EndScan
        Do_it!
        ClearAll            

  EndSwitch   
Endfor          

EndProc ;Seleciona()

;*******************************************************************************
;* Rotina p/ Inserir Registros                                                 *
;*******************************************************************************
Proc View_Tabelas(PARAM)
Private PARAM    

View "\\Sistemas\\Ctacor\\Conta"
View "\\Sistemas\\Cadastro\\Destinat"
View "\\Sistemas\\Cadastro\\Tpdoctos"
switch
  case PARAM = "AP":
    View "\\Sistemas\\Estoque\\Notaec"
    View "\\Sistemas\\Ctapag\\Titulos"
    View "\\Sistemas\\Ctacor\\MovCont"
    View "\\Sistemas\\Exporta\\DMS_D"
    View "\\Sistemas\\Exporta\\DMS_L"
    
  case PARAM = "AR":
    View "\\Sistemas\\Vendas\\NotaC"
    View "\\Sistemas\\Ctarec\\Duplic"
    View "\\Sistemas\\Exporta\\DMS_D"
    View "\\Sistemas\\Exporta\\DMS_L"

  case PARAM = "TD":
    View "\\Sistemas\\Vendas\\NotaC"
    View "\\Sistemas\\Ctarec\\Duplic"
    View "\\Sistemas\\Exporta\\DMS_L"

endswitch

EndProc ;View_Tabelas()

;*******************************************************************************
;* Rotina p/ Inserir Registros                                                 *
;*******************************************************************************
Proc Monta_Dados(PARAM)
Private PARAM                

DOCTO_TPREG          = PARAM                 

DOCTO_LANCTOGER      = ""                    
DOCTO_NUMDUP         = ""
DOCTO_PARCELA        = ""

DOCTO_CODDOC         = ""
DOCTO_TIPDOC         = ""
DOCTO_MODEL          = ""

DOCTO_SERIE          = ""                    
DOCTO_SUBSERIE       = ""                   
DOCTO_NUMERO         = ""                   

DOCTO_CGC            = ""                    
DOCTO_RAZAO          = ""                    
DOCTO_CTAPESSOA      = ""

DOCTO_PAGTO          = blankdate()                    
DOCTO_VRPAGTO        = BlankNum()                
DOCTO_JUROS          = BlankNum()                
DOCTO_VRMUL          = BlankNum()                
DOCTO_DESCTO         = BlankNum()                
DOCTO_VENCTO         = blankdate()        
DOCTO_VRDEV          = BlankNum()                
DOCTO_VRPIS          = BlankNum()                
DOCTO_VRCOFINS       = BlankNum()                
DOCTO_VRCSOC         = BlankNum()                
DOCTO_VRIRRF         = BlankNum()                
DOCTO_VRIRRFP        = BlankNum()                
DOCTO_VRCRF          = BlankNum()                
DOCTO_VROUTRAS       = BlankNum()                

DOCTO_VRCOSIRFPIS    = BlankNum()                
DOCTO_VRCOSIRFCOFINS = BlankNum()                
DOCTO_VRCOSIRFCSOC   = BlankNum()                
DOCTO_VRCOSIRFIRPJ   = BlankNum()                

DOCTO_VARIACAO       = BlankNum()
DOCTO_LANCTO         = blankdate()                    
DOCTO_DEBITO         = ""                   
DOCTO_CREDITO        = ""                    
DOCTO_VALOR          = BlankNum()            
DOCTO_CODHIST        = "0"                   
DOCTO_HISTOR         = ""                    

DOCTO_USUARIO        = ""                    
DOCTO_CHEQUE         = ""   
DOCTO_CODFILIAL      = "0"

DOCTO_CONTA_DESCONTADO=""

;---- Dados do Documento -------------------------------------------------------
DOCTO_EMPRESA   = [Codigo da Empresa  ]
DOCTO_LANCTOGER = [Lancamento Gerador ]
DOCTO_NUMDUP    = [Numero do Documento]
DOCTO_PARCELA   = StrVal([Sequencia Gerador  ])
DOCTO_VENCTO    = [Data de Vencimento ]
DOCTO_CODCLI    = [Codigo da Pessoa   ]

GetRecord "\\Sistemas\\Cadastro\\Destinat" DOCTO_CODCLI To REG_CLIENTE
If RetVal                                                                             
  Then DOCTO_CGC      =REG_CLIENTE["CGC"           ]
       DOCTO_RAZAO    =REG_CLIENTE["Razao Social"  ]
       DOCTO_CTAPESSOA=""
EndIf   
Release Vars REG_CLIENTE

;---- Contas a Pagar e Nota de Entrada ------------
If (DOCTO_TPREG = "AP") And [Sistema Gerador]="NE" 
   Then 
        old_dtemis=[Data de Emissao]
        
        Dir_Trab=""
        For wi From 1 to 3
          If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC")
             Then GetRecord "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" DOCTO_LANCTOGER To REG_NOTA 
                  If RetVal
                     Then
                          DOCTO_CODDOC  = REG_NOTA["Codigo do Documento"  ]
                          DOCTO_TIPDOC  = REG_NOTA["Tipo do Documento"    ]
                          DOCTO_SERIE   = REG_NOTA["Serie do Documento"   ]
                          DOCTO_SUBSERIE= REG_NOTA["SubSerie do Documento"]
                          DOCTO_NUMERO  = REG_NOTA["Numero do Documento"  ]

                          GetRecord "\\Sistemas\\Cadastro\\Tpdoctos" DOCTO_CODDOC To REG_DOCTO                              
                          If RetVal
                             Then DOCTO_MODEL = REG_DOCTO["Modelo do Documento"]
                          EndIf
                          Release Vars REG_DOCTO        
                          QuitLoop
                  EndIf
          EndIf   
          Switch
            Case wi = 1 : [Data de Emissao]=Primeiro_Dia_Data([Data de Emissao])-1
            Case wi = 2 : [Data de Emissao]=Ultimo_Dia_Data([Data de Emissao])+1
          EndSwitch
          Dir_Trab="FechaMes\\"+AlinhM(StrVal(Year([Data de Emissao])),4)+"_"+AlinhM(StrVal(Month([Data de Emissao])),2)+"\\" 
        EndFor  
        [Data de Emissao]=old_dtemis
EnDIf       

;---- Contas a Receber e Nota de Saida ------------        
If (DOCTO_TPREG = "AR") And [Sistema Gerador]<>"MA"  
   Then
        Dir_Trab=""
        For wi From 1 to 2
          If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC")
             Then 
                  DOCTO_CODDOC = [Tipo Docto Gerador  ]
                  DOCTO_NUMERO = [Lancamento Gerador  ]
                  
                  GetRecord "\\Sistemas\\Cadastro\\Tpdoctos" DOCTO_CODDOC To REG_DOCTO                              
                  If RetVal
                     Then DOCTO_MODEL = REG_DOCTO["Modelo do Documento"]
                          DOCTO_SERIE = REG_DOCTO["Serie do Documento" ]
                  EndIf
                  Release Vars REG_DOCTO        
             
                  GetRecord "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" DOCTO_EMPRESA,DOCTO_NUMERO,DOCTO_SERIE To REG_NOTA 
                  If RetVal
                     Then 
                          DOCTO_TIPDOC    = REG_NOTA["Tipo do Documento"  ]
                          DOCTO_SERIE     = REG_NOTA["Serie do Documento" ]
                          DOCTO_NUMERO    = REG_NOTA["Numero do Documento"]
                          QuitLoop
                  EndIf
          EndIf
          Dir_Trab="FechaMes\\"+AlinhM(StrVal(Year([Data de Emissao])),4)+"_"+AlinhM(StrVal(Month([Data de Emissao])),2)+"\\"
        EndFor  
EndIf          

if [Valor do Juros    ]<0.01 then [Valor do Juros    ]=0 endif 
if [Valor do Desconto ]<0.01 then [Valor do Desconto ]=0 endif 

DOCTO_JUROS  = [Valor do Juros    ]
DOCTO_DESCTO = [Valor do Desconto ]

;---- Dados da Baixa -----------------------------------------------------------
DOCTO_PAGTO  = [Data do Pagamento    ]

sm1=""
sm2=""
Switch  
  Case DOCTO_TPREG="AP" : 
    DOCTO_VRPAGTO= [Valor do Pagamento   ]
    DOCTO_VALOR  =([Valor do Pagamento   ]-[Valor do Juros])+[Valor do Desconto]
    sm1=   "Contas a Pagar,   Titulo    "

  Case DOCTO_TPREG="AR" : 
    DOCTO_VRPAGTO= [Valor do Pagamento   ]
    DOCTO_VALOR  = [Valor do Pagamento   ]                      
    if DOCTO_JUROS>0 
       Then DOCTO_VALOR  = [Valor do Pagamento   ]-[Valor do Juros]
    endif    
    sm1=   "Contas a Receber, Duplicata "

endSwitch  

if DOCTO_VALOR<=0
   then sm2="Valor da opera‡Æo na baixa zerado, calculo "
        Switch  
          Case DOCTO_TPREG="AP" : sm2=sm2+"valor pago + juros - descontos"
          Case DOCTO_TPREG="AR" : sm2=sm2+"valor recebido + juros - descontos"
        endSwitch
        
        sm=sm1+Format("W04,AL",DOCTO_EMPRESA)+"/"+
               Format("W10,AL",DOCTO_NUMDUP)+"/"+
               Format("W05,AL",DOCTO_PARCELA)+
               sm2
 
        Grava_Erro(sm)
          
endif   
if DOCTO_VRPAGTO<=0
   then sm2="Valor da opera‡Æo na baixa zerado, "
        Switch  
          Case DOCTO_TPREG="AP" : sm2=sm2+"valor pago zerado"
          Case DOCTO_TPREG="AR" : sm2=sm2+"valor recebido zerado"
        endSwitch  

        sm=sm1+Format("W04,AL",DOCTO_EMPRESA)+"/"+
               Format("W10,AL",DOCTO_NUMDUP)+"/"+
               Format("W05,AL",DOCTO_PARCELA)+
               sm2
 
        Grava_Erro(sm)

endif   

switch
  case [Tipo da Baixa]<>"NORMAL"  : DOCTO_VRDEV  = DOCTO_VRPAGTO
  
  otherwise                       :
  
endswitch


;---- Dados da Conta -----------------------------------------------------------  
DOCTO_CONTA ="CONTA?"
DOCTO_NBANCO=""

GetRecord "\\Sistemas\\Ctacor\\Conta" [Codigo da Conta] To REG_CONTA
If RetVal
   then DOCTO_CONTA           =REG_CONTA["Conta Contabil"]
        DOCTO_NBANCO          =REG_CONTA["Nome do Banco" ]
        DOCTO_CONTA_DESCONTADO=REG_CONTA["CC Titulos Descontados" ]
EndIf

DOCTO_HISTOR  = DOCTO_NUMERO
if not isblank(DOCTO_PARCELA) and DOCTO_PARCELA>"0"
   then DOCTO_HISTOR  = DOCTO_HISTOR+"/"+strval(numval(DOCTO_PARCELA))
endif   
DOCTO_HISTOR  = DOCTO_HISTOR+" - "+DOCTO_RAZAO 

Switch  
  case [Tipo da Baixa            ]="NORMAL":
    Switch  
      Case DOCTO_TPREG="AP" : 
        switch
          case sys_Codigo_Cliente="0112":
           DOCTO_DEBITO  = DOCTO_CTAPESSOA
           DOCTO_CREDITO = DOCTO_CONTA
           DOCTO_CODHIST ="116"

           ;---- Numero do Cheque =----------------------------- 
           If [Tipo de Operacao]="05"
              Then DOCTO_CHEQUE = [Numero do Cheque]
                   DOCTO_CODHIST="116"
                   DOCTO_HISTOR = DOCTO_HISTOR+" Conf.Ch. "+DOCTO_CHEQUE+" do "+DOCTO_NBANCO
           EndIf   
           
          case sys_Codigo_Cliente="0000":

        endswitch
      
      Case DOCTO_TPREG="AR" : 
        switch
          case sys_codigo_Cliente="0112":
           DOCTO_DEBITO  = DOCTO_CONTA
           DOCTO_CREDITO = DOCTO_CTAPESSOA       
           DOCTO_CODHIST ="225"

           ;---- Titulo Descontado ----------------------------- 
           if [Tipo do Lancamento]="A" 
              Then 
                   DOCTO_DEBITO  = DOCTO_CONTA_DESCONTADO
                   DOCTO_CREDITO = DOCTO_CTAPESSOA       
                   DOCTO_CODHIST ="225"
           EndIf          
          
          case sys_codigo_Cliente="0000":
          
        endswitch
    EndSwitch  
  
  case [Tipo da Baixa            ]="DEVOLUCAO":

    Switch  
      Case DOCTO_TPREG="AP" : 
        switch
          case sys_Codigo_Cliente="0112":
            DOCTO_DEBITO  = DOCTO_CTAPESSOA 
            DOCTO_CREDITO = DOCTO_CONTA
            DOCTO_CODHIST="0"
            DOCTO_HISTOR  = "DEVOLUCAO COMPRA ?"+DOCTO_HISTOR

          case sys_Codigo_Cliente="0000":

        endswitch
                               
      Case DOCTO_TPREG="AR" : 
        switch
          case sys_Codigo_Cliente="0112":
            DOCTO_DEBITO  = DOCTO_CONTA
            DOCTO_CREDITO = "224"         
            DOCTO_CODHIST="0"
            DOCTO_HISTOR  = "DEVOLUCAO VENDA ?"+DOCTO_HISTOR

          case sys_Codigo_Cliente="0000":

        endswitch
    
    EndSwitch  
  
endSwitch  

If DOCTO_TPREG = "AR" and REG_CONTA["Tipo da Conta"]="C" and [Lancamento Conta Corrente]<>""
   then
        getrecord "\\sistemas\\ctacor\\movcont" [Lancamento Conta Corrente],[Codigo da Conta] to regmovcont
        if retval
           then DOCTO_PAGTO = regmovcont["Data"]
        endif
endif
DOCTO_LANCTO = DOCTO_PAGTO

if isblank(DOCTO_CONTA)
   then sm2="Conta da opera‡Æo em branco, verificar conta contabil em CONTAS"

        sm=sm1+Format("W04,AL",DOCTO_EMPRESA)+"/"+
               Format("W10,AL",DOCTO_NUMDUP)+"/"+
               Format("W05,AL",DOCTO_PARCELA)+
               sm2
 
        Grava_Erro(sm)
endif   

;---- Gravar tabela ------------------------------------------------------------  

if DOCTO_NUMERO=""
   then return
endif   

GravaRegistro("D")
GravaRegistro("L")

; gravando juros na baixa
if DOCTO_JUROS>0 
   Then 
        DOCTO_VALOR   =DOCTO_JUROS

        switch
          case DOCTO_TPREG="AP": 
            switch
              case sys_Codigo_Cliente="0112":
                DOCTO_DEBITO ="372"
                DOCTO_CREDITO=DOCTO_CONTA
                DOCTO_CODHIST="314"
                
              case sys_Codigo_Cliente="0000":
                
            endswitch
            
          case DOCTO_TPREG="AR": 
            switch
              case sys_Codigo_Cliente="0112":
                DOCTO_DEBITO =DOCTO_CONTA
                DOCTO_CREDITO="433"
                DOCTO_CODHIST="230"

              case sys_Codigo_Cliente="0000":

            endswitch
        endswitch

        GravaRegistro("L")
endif
       
; gravando desconto na baixa
if DOCTO_DESCTO>0
   Then 
        DOCTO_VALOR   =DOCTO_DESCTO

        switch
          case DOCTO_TPREG="AP": 
            switch
              case sys_Codigo_Cliente="0112":
                DOCTO_DEBITO =DOCTO_CTAPESSOA
                DOCTO_CREDITO="434"
                DOCTO_CODHIST="338"

              case sys_Codigo_Cliente="0000":

            endswitch
            
          case DOCTO_TPREG="AR": 
            switch
              case sys_Codigo_Cliente="0112":
                DOCTO_DEBITO ="371"
                DOCTO_CREDITO=""
                DOCTO_CODHIST="377"

              case sys_Codigo_Cliente="0000":

            endswitch
        endswitch

        GravaRegistro("L")
endif       
            
EndProc ;Monta_Dados()

;*******************************************************************************
;* Rotina p/ Inserir Registros                                                 *
;*******************************************************************************
Proc Monta_DadosTDescontados(PARAM)
Private PARAM                

DOCTO_TPREG          = PARAM                 

DOCTO_LANCTOGER      = ""                    
DOCTO_NUMDUP         = ""
DOCTO_PARCELA        = ""

DOCTO_CODDOC         = ""
DOCTO_TIPDOC         = ""
DOCTO_MODEL          = ""

DOCTO_SERIE          = ""                    
DOCTO_SUBSERIE       = ""                   
DOCTO_NUMERO         = ""                   
DOCTO_DTEMISSAO      = blankdate()

DOCTO_CGC            = ""                    
DOCTO_RAZAO          = ""                    
DOCTO_CTAPESSOA      = ""

DOCTO_VARIACAO       = BlankNum()
DOCTO_LANCTO         = blankdate()                    
DOCTO_DEBITO         = ""                   
DOCTO_CREDITO        = ""                    
DOCTO_VALOR          = BlankNum()            
DOCTO_CODHIST        = "0"                   
DOCTO_HISTOR         = ""                    

DOCTO_USUARIO        = ""                    
DOCTO_CODFILIAL      = "0"

DOCTO_SEQ            =DOCTO_SEQ+1

DOCTO_CONTA_DESCONTADO=""

;---- Dados do Documento -------------------------------------------------------
DOCTO_EMPRESA   = [Codigo da Empresa     ]
DOCTO_NUMDUP    = [Numero do Documento   ]
DOCTO_CODCLI    = [Codigo do Destinatario]
DOCTO_LANCTO    = [Data da Operacao      ]
DOCTO_VALOR     = [Saldo do Documento    ]

GetRecord "\\Sistemas\\Cadastro\\Destinat" DOCTO_CODCLI To REG_CLIENTE
If RetVal                                                                             
  Then DOCTO_CGC      =REG_CLIENTE["CGC"           ]
       DOCTO_RAZAO    =REG_CLIENTE["Razao Social"  ]
       DOCTO_CTAPESSOA=""
EndIf   
Release Vars REG_CLIENTE

;---- Contas a Receber e Nota de Saida ------------        

GetRecord "\\Sistemas\\ctarec\\duplic" [Numero do Lancamento] To regduplic 
If RetVal
   Then 
        DOCTO_CODDOC    = regduplic["Tipo Docto Gerador" ]
        DOCTO_NUMERO    = regduplic["Numero Docto Gerador" ]
        DOCTO_PARCELA   = strval(regduplic["Sequencia Gerador"  ])
        DOCTO_DTEMISSAO = regduplic["Data de Emissao"    ]
endif

Dir_Trab=""
For wi From 1 to 2
  If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC")
     Then 
          GetRecord "\\Sistemas\\Cadastro\\Tpdoctos" DOCTO_CODDOC To REG_DOCTO                              
          If RetVal
             Then DOCTO_MODEL = REG_DOCTO["Modelo do Documento"]
                  DOCTO_SERIE = REG_DOCTO["Serie do Documento" ]
          EndIf
          Release Vars REG_DOCTO        
     
          GetRecord "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" DOCTO_EMPRESA,DOCTO_NUMERO,DOCTO_SERIE To REG_NOTA 
          If RetVal
             Then 
                  DOCTO_TIPDOC    = REG_NOTA["Tipo do Documento"  ]
                  DOCTO_SERIE     = REG_NOTA["Serie do Documento" ]
                  DOCTO_NUMERO    = REG_NOTA["Numero do Documento"]
                  QuitLoop
          EndIf
  EndIf
  Dir_Trab="FechaMes\\"+AlinhM(StrVal(Year(DOCTO_DTEMISSAO)),4)+"_"+AlinhM(StrVal(Month(DOCTO_DTEMISSAO)),2)+"\\"
EndFor  

;---- Dados da Conta -----------------------------------------------------------  
DOCTO_CONTA ="CONTA?"
GetRecord "\\Sistemas\\Ctacor\\Conta" [Codigo da Conta] To REG_CONTA
If RetVal
   then DOCTO_CONTA =REG_CONTA["Conta Contabil"]
        DOCTO_CONTA_DESCONTADO=REG_CONTA["CC Titulos Descontados" ]
EndIf

DOCTO_HISTOR  = DOCTO_NUMERO
if not isblank(DOCTO_PARCELA) and DOCTO_PARCELA>"0"
   then DOCTO_HISTOR  = DOCTO_HISTOR+"/"+strval(numval(DOCTO_PARCELA))
endif   
DOCTO_HISTOR  = DOCTO_HISTOR+" - "+DOCTO_RAZAO 

sm1=""
sm2=""
Switch  
  Case DOCTO_TPREG="TD" : 
    switch
      case sys_Codigo_Cliente="0112":
       DOCTO_DEBITO  = DOCTO_CONTA
       DOCTO_CREDITO = DOCTO_CONTA_DESCONTADO
       DOCTO_CODHIST ="313"

      case sys_Codigo_Cliente="0000":

    endswitch
    sm1=   "Contas a Receber, Duplicata Descontada "
  
  Case DOCTO_TPREG="ETD" : 
    switch
      case sys_codigo_Cliente="0112":
       DOCTO_DEBITO  = DOCTO_CONTA_DESCONTADO
       DOCTO_CREDITO = DOCTO_CONTA        
       DOCTO_CODHIST = "751"

      case sys_codigo_Cliente="0000":
      
    endswitch
    sm1=   "Contas a Receber, Estorno Duplicata Descontada "

EndSwitch  

if DOCTO_VALOR<=0
   then sm2="Valor da duplicata zerado, verificar altera‡Æo de conta/carteira! "

        sm=sm1+Format("W04,AL",DOCTO_EMPRESA)+"/"+
               Format("W15,AL",DOCTO_NUMDUP)+
               sm2
 
        Grava_Erro(sm)
endif   

if isblank(DOCTO_CONTA)
   then sm2="Conta da opera‡Æo em branco, verificar conta contabil em CONTAS"

        sm=sm1+Format("W04,AL",DOCTO_EMPRESA)+"/"+
               Format("W10,AL",DOCTO_NUMDUP)+"/"+
               Format("W05,AL",DOCTO_PARCELA)+
               sm2
 
        Grava_Erro(sm)
endif   

if isblank(DOCTO_CONTA_DESCONTADO)
   then sm2="Conta Titulos Descontados da opera‡Æo em branco, verificar em CONTAS"

        sm=sm1+Format("W04,AL",DOCTO_EMPRESA)+"/"+
               Format("W10,AL",DOCTO_NUMDUP)+"/"+
               Format("W05,AL",DOCTO_PARCELA)+
               sm2
 
        Grava_Erro(sm)
endif   


;---- Gravar tabela ------------------------------------------------------------  
GravaRegistro("L")
            
EndProc ;Monta_DadosTDescontados()

;*******************************************************************************
;* Rotina para gravar registro                                                 *
;*******************************************************************************
Proc GravaRegistro(id)
private id

switch
  case id="D":
    switch
      case DOCTO_TPREG="AP"                         : id="5100" 

      case DOCTO_TPREG="AR" and DOCTO_CODDOC="NFS"  : id="5300"
      case DOCTO_TPREG="AR" and DOCTO_CODDOC="NFSE" : id="5300"
       
      case DOCTO_TPREG="AR"                         : id="5200" 
      
    endswitch

    DOCTO_SEQ                  =DOCTO_SEQ+1

    Moveto "DMS_D"
    End Down                                                                        
    [Codigo da Empresa        ]=DOCTO_EMPRESA
    [Sequencial               ]=DOCTO_SEQ
    [Tp_Registro              ]=DOCTO_TPREG  
    [Id_Registro              ]=id  

    [Codigo do Documento      ]=DOCTO_CODDOC
        
    [Codigo da Especie da Nota]=Modelo_DMS(DOCTO_MODEL)
    [Serie da Nota            ]=DOCTO_SERIE
    [SubSerie da Nota         ]=DOCTO_SUBSERIE
    [Numero do Documento      ]=DOCTO_NUMERO
    [Numero da Duplicata      ]=DOCTO_NUMDUP
                              
    [Data de Vencimento       ]=DOCTO_VENCTO
    [Data do Pagto_Recto      ]=DOCTO_PAGTO
    [Valor Pago_Recebido      ]=DOCTO_VRPAGTO
    [Valor Juros              ]=DOCTO_JUROS
    [Valor Multas             ]=DOCTO_VRMUL
    [Valor Desconto           ]=DOCTO_DESCTO
    [Valor Devolucao          ]=DOCTO_VRDEV
    [Valor PIS                ]=DOCTO_VRPIS
    [Valor COFINS             ]=DOCTO_VRCOFINS
    [Valor CSOC               ]=DOCTO_VRCSOC
    [Valor CRF                ]=DOCTO_VRCRF
    [Valor IRRF               ]=DOCTO_VRIRRF
    [Valor IRRFP              ]=DOCTO_VRIRRFP
    [Valor Outras             ]=DOCTO_VROUTRAS

    [Valor COSIRF PIS         ]=DOCTO_VRCOSIRFPIS
    [Valor COSIRF COFINS      ]=DOCTO_VRCOSIRFCOFINS
    [Valor COSIRF CSOC        ]=DOCTO_VRCOSIRFCSOC
    [Valor COSIRF IRPJ        ]=DOCTO_VRCOSIRFIRPJ
    [CNPJ Pessoa              ]=DOCTO_CGC
    [Segmento                 ]=DOCTO_PARCELA
      
    UnLockRecord
    
  case id="L":
      switch
      case DOCTO_TPREG="TD"                         : id="6100" 
      case DOCTO_TPREG="ETD"                        : id="6100" 

      case DOCTO_TPREG="AP"                         : id="5110" 

      case DOCTO_TPREG="AR" and DOCTO_CODDOC="NFS"  : id="5310"
      case DOCTO_TPREG="AR" and DOCTO_CODDOC="NFSE" : id="5310"
       
      case DOCTO_TPREG="AR"                         : id="5210" 
      
    endswitch

    DOCTO_USUARIO              =""                    
    DOCTO_VARIACAO             =DOCTO_VARIACAO+1
  
    Moveto "DMS_L"
    End Down                                                                        
    [Codigo da Empresa        ]=DOCTO_EMPRESA
    [Sequencial               ]=DOCTO_SEQ
    [Variacao                 ]=DOCTO_VARIACAO

    [Tp_Registro              ]=DOCTO_TPREG  
    [Id_Registro              ]=id

    [Data do Lancamento       ]=DOCTO_LANCTO
    [Conta Contabil a Debito  ]=DOCTO_DEBITO
    [Conta Contabil a Credito ]=DOCTO_CREDITO
    [Valor do Lancamento      ]=DOCTO_VALOR
    [Codigo Historico         ]=DOCTO_CODHIST
    [Descricao Historico      ]=DOCTO_HISTOR

    [Usuario                  ]=DOCTO_USUARIO
    [Codigo Filial            ]=DOCTO_CODFILIAL
    UnLockRecord
  
endswitch

Moveto "Answer"

EndProc

;*******************************************************************************
;* Rotina de Controle do ShowDialog                                            *
;*******************************************************************************
Proc Gera_Txt(tipo)
Private nr, s

LimpaRodape(0)
ExibeRodape(1,"Aguarde, gerando arquivo TXT")

ARQIMP  = PrivDir()+ARQUIVO
If IsFile(ARQIMP)
   Then Deleta_Arquivo(ARQIMP)
        Sleep 1000
EndIf

s=""
s="|0000|"+DMS_CGC_EMPRESA+"|"+"\n"
FileWrite        ARQIMP from s

if tipo="R"
   then
        NR = NRecords("DMS_L")
        View "DMS_L" 
        Scan          
          Barra(NR, RecNo())
          switch
            case [Tp_Registro]="TD"  : Aguarde("Aguarde, T¡tulos Descontados "  +BARRA_STRING)
        
            case [Tp_Registro]="ETD" : Aguarde("Aguarde, Retorno T¡tulos Descontados"+BARRA_STRING)
        
            otherwise                            : loop
        
          endswitch
        
          ;-- Lancamento Contabil --------------------------------------------------
          s=""
          s="|6000|X||||"+"\n"
          FileWrite append ARQIMP from s

          s=""
          s="|"+      [Id_Registro             ]   +"|"+
             Data_Str([Data do Lancamento      ]  )+"|"+
                      [Conta Contabil a Debito ]   +"|"+
                      [Conta Contabil a Credito]   +"|"+
            Valor_Str([Valor do Lancamento     ],2)+"|"+
                      [Codigo Historico        ]   +"|"+
                      [Descricao Historico     ]   +"|"+
                      [Usuario                 ]   +"|"+
                      [Codigo Filial           ]   +"\n"
            FileWrite append ARQIMP from s
          
          ;-------------------------------------------------------------------------
               
          moveto "DMS_L"
        EndScan
        ClearAll
endif

NR = NRecords("DMS_D")
View "DMS_L" 
View "DMS_D" 
Scan          
  Barra(NR, RecNo())
  switch
    case tipo="P" and [Tp_Registro]="AP" : Aguarde("Aguarde, Pagamentos "  +BARRA_STRING)

    case tipo="R" and [Tp_Registro]="AR" : Aguarde("Aguarde, Recebimentos "+BARRA_STRING)

    otherwise                            : loop

  endswitch

  ;-- Baixa de Titulo ------------------------------------------------------
  switch
    case [Id_Registro]="5100":
      s=""
      s="|"+      [Id_registro              ]   +"|"+
                  [Codigo da Especie da Nota]   +"|"+
                  [Serie da Nota            ]   +"|"+
        Valor_Str([SubSerie da Nota         ],0)+"|"+
        Valor_Str([Numero do Documento      ],0)+"|"+
         Data_Str([Data de Vencimento       ]  )+"|"+
         Data_Str([Data do Pagto_Recto      ]  )+"|"+
        Valor_Str([Valor Pago_Recebido      ],2)+"|"+
        Valor_Str([Valor Juros              ],2)+"|"+
        Valor_Str([Valor Multas             ],2)+"|"+
        Valor_Str([Valor Desconto           ],2)+"|"+
        Valor_Str([Valor Devolucao          ],2)+"|"+
        Valor_Str([Valor PIS                ],2)+"|"+
        Valor_Str([Valor COFINS             ],2)+"|"+
        Valor_Str([Valor CSOC               ],2)+"|"+
        Valor_Str([Valor CRF                ],2)+"|"+
        Valor_Str([Valor IRRF               ],2)+"|"+
        Valor_Str([Valor IRRFP              ],2)+"|"+
        Valor_Str([Valor Outras             ],2)+"|"+
        Tira_CharNum([CNPJ Pessoa           ]  )+"|"+
        Valor_Str([Segmento                 ],0)+"\n"
      
    case [Id_Registro]="5200" or
         [Id_Registro]="5300":
      s=""
      s="|"+      [Id_registro              ]   +"|"+
                  [Codigo da Especie da Nota]   +"|"+
                  [Serie da Nota            ]   +"|"+
        Valor_Str([SubSerie da Nota         ],0)+"|"+
        Valor_Str([Numero do Documento      ],0)+"|"+
         Data_Str([Data de Vencimento       ]  )+"|"+
         Data_Str([Data do Pagto_Recto      ]  )+"|"+
        Valor_Str([Valor Pago_Recebido      ],2)+"|"+
        Valor_Str([Valor Juros              ],2)+"|"+
        Valor_Str([Valor Multas             ],2)+"|"+
        Valor_Str([Valor Desconto           ],2)+"|"+
        Valor_Str([Valor Devolucao          ],2)+"|"+
        Valor_Str([Valor PIS                ],2)+"|"+
        Valor_Str([Valor COFINS             ],2)+"|"+
        Valor_Str([Valor CSOC               ],2)+"|"+
        Valor_Str([Valor IRRF               ],2)+"|"+
        Valor_Str([Valor COSIRF PIS         ],2)+"|"+
        Valor_Str([Valor COSIRF COFINS      ],2)+"|"+
        Valor_Str([Valor COSIRF CSOC        ],2)+"|"+
        Valor_Str([Valor COSIRF IRPJ        ],2)+"|"+
        Valor_Str([Valor COSIRF IRRFP       ],2)+"|"+
        Valor_Str([Valor Outras             ],2)+"|"+
        Valor_Str([Segmento                 ],0)+"\n"
      
  endswitch
  FileWrite append ARQIMP from s

  ;-- Lancamento Contabil --------------------------------------------------
  moveto "DMS_L"
  moveto [Codigo da Empresa]
  locate [DMS_D->Codigo da Empresa],[DMS_D->Sequencial]
  if retval
     then
          while [Codigo da Empresa]=[DMS_D->Codigo da Empresa] and
                [Sequencial       ]=[DMS_D->Sequencial       ]
          
            s=""
            s="|"+      [Id_Registro             ]   +"|"+
               Data_Str([Data do Lancamento      ]  )+"|"+
                        [Conta Contabil a Debito ]   +"|"+
                        [Conta Contabil a Credito]   +"|"+
              Valor_Str([Valor do Lancamento     ],2)+"|"+
                        [Codigo Historico        ]   +"|"+
                        [Descricao Historico     ]   +"|"+
                        [Usuario                 ]   +"|"+
                        [Codigo Filial           ]   +"\n"
              FileWrite append ARQIMP from s
  
            skip
            if eot() then quitloop endif

          endwhile                  
  endif   
  ;-------------------------------------------------------------------------
       
  moveto "DMS_D"
EndScan
ClearAll


GetRecord "\\Sistemas\\Cadastro\\Empresas" VSDGEMPRESA To REG_EMP
if tipo="P"
   then 
        ARQIMPP = VSDGDRIVE+PASTA+"\\DMS_AP_"+  
                  AlinhM(StrVal(Month(VSDGDTFIM)),2)+
                  StrVal( Year(VSDGDTFIM))+"_"+
                  Tira_CharNum(reg_emp["CGC Empresa"])+".TXT"
                  
        Copia_Arquivo(ARQIMP+" "+ARQIMPP)
        Sleep 1000
endif

if tipo="R"
   then 
        ARQIMPR = VSDGDRIVE+PASTA+"\\DMS_AR_"+  
                  AlinhM(StrVal(Month(VSDGDTFIM)),2)+
                  StrVal( Year(VSDGDTFIM))+"_"+
                  Tira_CharNum(reg_emp["CGC Empresa"])+".TXT"
                  
        Copia_Arquivo(ARQIMP+" "+ARQIMPR)
        Sleep 1000
endif

LimpaRodape(0)

EndProc ;Gera_Txt()

;********************************************************************************
;* CONVERTE codigo modelo para especie documento DMS                            *
;********************************************************************************
Proc Modelo_DMS(codigo)
Private newcodigo

switch
  case codigo="01" : newcodigo=1 
  case codigo="1B" : newcodigo=2 
  case codigo="02" : newcodigo=3 
  case codigo="2D" : newcodigo=4 
  case codigo="2E" : newcodigo=5 
  case codigo="04" : newcodigo=6 
  case codigo="06" : newcodigo=7 
  case codigo="07" : newcodigo=8 
  case codigo="08" : newcodigo=9 
  case codigo="8B" : newcodigo=10
  case codigo="09" : newcodigo=11
  case codigo="10" : newcodigo=12
  case codigo="11" : newcodigo=13
  case codigo="13" : newcodigo=14
  case codigo="14" : newcodigo=15
  case codigo="15" : newcodigo=16
  case codigo="16" : newcodigo=17
  case codigo="18" : newcodigo=19
  case codigo="21" : newcodigo=21
  case codigo="22" : newcodigo=22
  case codigo="26" : newcodigo=26
  case codigo="27" : newcodigo=13
  case codigo="28" : newcodigo=28
  case codigo="29" : newcodigo=29
  case codigo="55" : newcodigo=36
  case codigo="57" : newcodigo=37
  otherwise        : newcodigo=0
endswitch
;01 -> 1 ->  Nota Fiscal				
;1B -> 2 ->  NF Avulsa				
;02 -> 3 ->  NF Venda a Consumidor				
;2D -> 4 ->  Cupom Fiscal				
;2E -> 5 ->  Bilhete passagem emitido por ECF				
;04 -> 6 ->  NF Produtor				
;06 -> 7 ->  NF Conta de Energia El‚trica				
;07 -> 8 ->  NF de Servi‡o de Transporte				
;08 -> 9 ->  CTRC				
;8B -> 10 -> CTRC Avulso				
;09 -> 11 -> Conhecimento Transp. Aquavi rio				
;10 -> 12 -> Conhecimento A‚reo				
;11 -> 13 -> Conhecimento Transp. Ferrovi rio				
;13 -> 14 -> Bilhete de Passagem Rodovi rio				
;14 -> 15 -> Bilhete de Passagem Aquavi rio				
;15 -> 16 -> Bilhete de Passagem NF Bagagem				
;16 -> 17 -> Bilhete de Passagem Ferrovi rio				
;18 -> 19 -> Resumo do Movimento Di rio				
;21 -> 21 -> NF de Servi‡o de Comunica‡Æo				
;22 -> 22 -> NF de Servi‡o de Telecomunica‡Æo				
;26 -> 26 -> Conhec. Transp. Multimodal				
;27 -> 13 -> NF de Transp Ferrovi rio Cargas				
;28 -> 28 -> NF Fornecimento de G s				
;29 -> 29 -> NF Fornecimento de µgua Encanada				
;55 -> 36 -> NF Eletr“nica				
;57 -> 37 -> Conhec. de Transp. Eletr“nico

return strval(newcodigo)
endproc

;********************************************************************************
;* CONVERTE VALOR PARA STRING                                                  *
;********************************************************************************
Proc Valor_Str(Valor,Dec)
Private VrTit,Valor,Dec,Part1,Part2

If IsBlank(Valor)
  Then Valor=0
  else
       If E_Numerico(Valor)
          then Valor=numval(Valor)
       endif    
EndIf

Switch
 Case dec=0 : VrTit=Format("W20,EI,AL",Valor)
 Case dec=1 : VrTit=Format("W20.1,EI,AL",Valor)
 Case dec=2 : VrTit=Format("W20.2,EI,AL",Valor)
 Case dec=3 : VrTit=Format("W20.3,EI,AL",Valor)
 Case dec=4 : VrTit=Format("W20.4,EI,AL",Valor)
 Case dec=5 : VrTit=Format("W20.5,EI,AL",Valor)
 Case dec=6 : VrTit=Format("W20.6,EI,AL",Valor)
EndSwitch
VrTit=RTrim(LTrim(VrTit))

Return VrTit
EndProc  ; (Valor_Str)

;********************************************************************************
;* CONVERTE DATA PARA STRING                                                    *
;********************************************************************************
Proc Data_Str(Data)
Private DtTit,Data 

If IsBlank(Data)
  Then DtTit="00/00/0000"
  Else DtTit=AlinhM(StrVal(  Day(Data)),2)+"/"+
             AlinhM(StrVal(Month(Data)),2)+"/"+
             AlinhM(StrVal( Year(Data)),4)
EndIf  

Return DtTit
EndProc  ; (Data_Str)

;*******************************************************************************
;* Rotina grava erros                                                          *
;*******************************************************************************
Proc Grava_Erro(erro)
Private erro

If Not ENCONTRADO_INCONSISTENCIA
   Then FileWrite        ARQ_ERRO From  "\027x0\015"+
                                        "** Relatorio erros detectados exporta‡Æo para contabilidade **\n\n"
EndIf   
FileWrite Append ARQ_ERRO From  erro+"\n"

ENCONTRADO_INCONSISTENCIA=True
EndProc

;*******************************************************************************
;* Rotina de Controle do ShowDialog                                            *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)

Temp=True
TECLA=""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_DTINI"         : Campo="TG_EMPRESA"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPCOES1"       : Campo="TG_DTFIM"
            Case Campo="TG_OPCOES2"       : Campo="TG_OPCOES1"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"    : Campo="TG_DTINI"
                         If IsBlank(VSDGEMPRESA)
                            Then Campo="TG_EMPRESA"
                                 VSDGNOMEMP=""
                         EndIf   
                    Case Campo="TG_DTINI"      : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"      : Campo="TG_OPCOES1"
                    Case Campo="TG_OPCOES1"    : Campo="TG_OPCOES2"
                    Case Campo="TG_OPCOES2"    : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_OPCOES1" Or Campo="TG_OPCOES2" : 
       MSG_CAMPO="Selecione uma ou mais op‡oes se desejar !"
       TECLA    ="=Mover  Barra de espa‡o=Marca/Desmarca  "
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_Dialog()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
LimpAguarde()

sys_valor()

VSDGEMPRESA  =""
VSDGDTINI    =BlankDate()
VSDGDTFIM    =BlankDate()

ARQUIVO   = "DMS_2.Txt"
VSDGDRIVE = SubStr(Directory(),1,2)
PASTA     = "\\Sistemas\\Exporta\\DOMINIOS"
If DirExists(PASTA)=0
   Then Cria_Pasta(PASTA)
        Sleep 2000
EndIf

Array VSDGOPCAO[2]
VSDGOPCAO[1] = True 
VSDGOPCAO[2] = True

While True
  ShowDialog "Exporta‡„o de Baixa de Duplicatas - Dom¡nio Sistemas II" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 13 Width 72
   
    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

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

    Label  @ 05,00 "Op‡oes de Movimentos " For "TG_OPCOES1"
    CheckBoxes @06,00 Height 1 Width 33 Tag "TG_OPCOES1"
    "Baixa Duplicatas a Pagar   " to VSDGOPCAO[1]
    CheckBoxes @07,00 Height 1 Width 33 Tag "TG_OPCOES2"
    "Baixa Duplicatas a Receber " to VSDGOPCAO[2]
    
    Pushbutton @ 09,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 09,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGEMPRESA)
     Then Mensagem("Informe a Empresa!")
          Loop
  EndIf   
  
  If Not VSDGOPCAO[1] And Not VSDGOPCAO[2]
     Then Mensagem("N„o h  nenhuma op‡„o marcada para continuar o processo!")
          Loop
  EndIf
  
  AGUARDE("Aguarde, selecionando os registros")
  
  Empty "DMS_D"
  Empty "DMS_L"

  getrecord "\\sistemas\\cadastro\\empresas" VSDGEMPRESA to regempresas
  if retval
     then DMS_CODIGO_EMPRESA  =alinhm(regempresas["Conta Contabil Empresa"],07)
          DMS_CGC_EMPRESA     =alinhm(Tira_CharNum(regempresas["CGC Empresa"]),14)
          DMS_SEGMENTO_EMPRESA=0
  endif   
  Release Vars REG_FOR, REG_CLIE, regempresas

  ENCONTRADO_INCONSISTENCIA=false
  ARQ_ERRO= Privdir()+"EXPTIT.ERR"
  Deleta_Arquivo(ARQ_ERRO)
    
  Seleciona()
  If IsEmpty("\\Sistemas\\Exporta\\DMS_D")
     Then MENSAGEM("N„o existem registros a processar")
          Loop
  EndIf
  
  ARQIMPP=""
  ARQIMPR=""
  if VSDGOPCAO[1]=true
     then Gera_Txt("P")
  endif
  if VSDGOPCAO[2]=true
     then Gera_Txt("R")
  endif
    
  If Not IsFile(ARQIMP)
     Then Mensagem("Arquivo n„o foi gerado !")
     Else Mensagem("Arquivo(s) Gerado(s) !// //"+ARQIMPR+"// //"+ARQIMPP)

         if ENCONTRADO_INCONSISTENCIA
            then
                 MSG=" //"
                 MSG=MSG+"Relat¢rio de ocorrˆncia erros !// //"
                 MSG=MSG+"Verificar o relat¢rio !"
                 mensagem(MSG)
         
                 DISPOSITIVO_OPCAO="V"
                 PDFZEBRA = False
                 
                 ImpriArq(ARQ_ERRO)
         endif
  EndIf
     
EndWhile
ClearAll
Release Vars All
Release Procs All
