;* EXPD_NG  ********************************************************************
;*  Exporta‡Ćo de baixas Duplicatas em TXT                * MasterMaq NG **    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 02/01/2019 por Anivel Augusto Rodrigues
;Ultima Alteracao: 18/12/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes total de parcela e nĆo numero da parcela da duplicata
;Ultima Alteracao: 14/01/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes total de parcela e nĆo numero da parcela da duplicata contas a pagar

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SelecionaDuplicatas()
Private CONTA_LANCTOS,i

Aguarde("Aguarde, selecionando dados")                 

If VSDGOPCAO[1] Then
   
      {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 Competencia      ] Check
      Moveto [Data de Emissao       ] Check
      Moveto [Data de Vencimento    ] Check
      Moveto [Valor do Documento    ] Check
  
      Moveto [Codigo do Emitente    ] Check
      Moveto [Razao Social          ] Check 
      Moveto [Lancamento Gerador    ] Check
      Moveto [Sequencia Gerador     ] Check  
      Moveto [Sistema Gerador       ] Check TypeIn "Not Blank, Not MA"               ;<<<< Registros n„o manuais e diferente de branco

      {Ask} {\\Sistemas\\Ctapag\\Titbaixa}            
      Moveto [Numero do Lancamento  ]       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
          
      Do_It!
      ClearAll 
      
      If Not IsEmpty("Answer")
         Then
              Tabelatemp2=Cria_Temp(PrivDir())
              Rename "Answer" Tabelatemp2
              ClearAll
         
              {Ask} typein Tabelatemp2 enter
              Moveto [Lancamento Gerador    ] Check 
              Moveto [Numero do Lancamento  ] TypeIn "calc count as NumParcelas"
              Do_It!
              ClearAll
              TabelaNumParcelas=adiciona_indice_temp("Lancamento Gerador")

              {Ask} typein Tabelatemp2 enter check
              Do_It!
              ClearAll
              
              Delete Tabelatemp2
  
              Sort "Answer" On "Lancamento Gerador","Sequencia Gerador","Numero do Documento"
              ClearAll
              
              NR=NRecords("Answer")
              View TabelaNumParcelas
              View_Tabelas()
              Coedit "Answer"
              Scan
                Barra(NR, RecNo())
                
                Aguarde("Aguarde, selecionando baixas do contas a pagar "+BARRA_STRING)
                Monta_Dados("B","E")
                  
                Moveto "Answer"
              EndScan
              Do_it!
              ClearAll
          
              Delete TabelaNumParcelas
      EndIf
     
EndIf   


If VSDGOPCAO[2] Then

      {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
      Moveto [Razao Social          ] Check 
      Moveto [Tipo Docto Gerador    ] Check 
      Moveto [Numero Docto Gerador  ] Check                                  
      Moveto [Sequencia Gerador     ] Check  
      Moveto [Sistema Gerador       ] Check TypeIn "Not Blank, Not MA"               ;<<<< Registros n„o manuais e diferente de branco
      
      {Ask} {\\Sistemas\\Ctarec\\Dupbaixa}
      Moveto [Numero do Lancamento  ]       TypeIn "_NLanc"
      Moveto [Valor do Recebimento  ] 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
      Do_It!
      ClearAll 
      
      If Not IsEmpty("Answer")
         Then
              Tabelatemp2=Cria_Temp(PrivDir())
              Rename "Answer" Tabelatemp2
              ClearAll
         
              {Ask} typein Tabelatemp2 enter
              moveto [Codigo da Empresa     ] Check
              Moveto [Tipo Docto Gerador    ] Check 
              Moveto [Numero Docto Gerador  ] Check                                  
              Moveto [Numero do Lancamento  ] TypeIn "calc count as NumParcelas"
              Do_It!
              ClearAll
              TabelaNumParcelas=adiciona_indice_temp("Codigo da Empresa,Tipo Docto Gerador,Numero Docto Gerador")

              {Ask} typein Tabelatemp2 enter check
              Do_It!
              ClearAll
              
              Delete Tabelatemp2

              Sort "Answer" On "Tipo Docto Gerador","Numero Docto Gerador", "Sequencia Gerador","Numero do Documento"
              ClearAll
  
              NR=NRecords("Answer")
              View TabelaNumParcelas
              View_Tabelas()
              Coedit "Answer"
              Scan
                Barra(NR, RecNo())
                
                Aguarde("Aguarde, selecionando baixas do contas a receber "+BARRA_STRING)
                Monta_Dados("B","S")
              
                Moveto "Answer"
              EndScan
              Do_it!
              ClearAll
              
              Delete TabelaNumParcelas
      EndIf
     
EndIf   

EndProc ;Seleciona()


;*******************************************************************************
;* Rotina p/ Inserir Registros                                                 *
;*******************************************************************************
Proc View_Tabelas()
 
View "\\Sistemas\\Cadastro\\Destinat"
View "\\Sistemas\\Cadastro\\Tpdoctos"
View "\\Sistemas\\Ctacor\\Conta"
View "EXPD_NGF"

EndProc ;View_Tabelas()

;*******************************************************************************
;* Rotina p/ Inserir Registros                                                 *
;*******************************************************************************
Proc Monta_Dados(tplancto, tpmov)
Private tplancto, tpmov                

;-- Variaveis ---------------
TIPO             =""
ANO              =""
DOCUMENTOD       =""
CHAVE_TIPO       =""
CHAVE_NFISCAL    =""
CHAVE_CP         =""
CHAVE_FILIAL     =""
CHAVE_SERIE      =""
CHAVE_SUBSERIE   =""
CHAVE_DUPLICATA  =""
CHAVE_ESPECIE    =""
DOCTO_DUP        = ""
ALTERA1          =""
CONTEUDODUP_DUPLICATA    =""
CONTEUDODUP_DATAPAGAMENTO=BlankDate()
ALTERA2              =""
CONTEUDOVEN_VENCTO   =BlankDate()
CONTEUDOVEN_MULTA    =BlankNum()
ALTERA3              =""
CONTEUDOVAL_VALOR    =BlankNum()
CONTEUDOVAL_DESCONTO =BlankNum()
BRANCO1              =""
BRANCO8_CONTACONTABIL=""
PIS                  =BlankNUm()
COFINS               =BlankNUm()
CONTIBUICAOSOCIAL    =BlankNUm()
TIPDOCFISC           =""
HISTORICO            =""
HISTMULTA            =""
HISTDESCO            =""

;---- Numero Documento de Origem ----------------------------------------------- Opera‡äes Internas                   
DOCTO_EMPRESA = [Codigo da Empresa   ]
DOCTO_LANCTO  = "LANCTO?"
DOCTO_NUMERO  = "NUMERO?"
DOCTO_DATA    = BlankDate()
DOCTO_CODDOC  = ""
DOCTO_SERIE   = "SERIE?" 
DOCTO_SUBSERIE= "SUBSERIE?" 
DOCTO_ESPECIE = "ESP"
;;;DOCTO_PARCELA = StrVal([Sequencia Gerador]) 
DOCTO_PARCELA = 0
DOCTO_CGC     = ""
codpessoa     = "" 

;---- Contas a Pagar e Nota de Entrada -----------------------------------------
If (tpmov="E") And [Sistema Gerador]="NE"  ;Dupl.Fornecedores 
   Then 
        Moveto TabelaNumParcelas
        moveto [Lancamento Gerador]
        locate [Answer->Lancamento Gerador]
        if retval
           then DOCTO_PARCELA=strval([NumParcelas])
        endif              
        moveto "Answer" 

        codpessoa    = [Codigo do Emitente  ]

        DOCTO_LANCTO = [Lancamento Gerador  ] ;NotaEC
        DOCTO_DATA   = [Data Competencia    ]     
        
        old_dtemis   = [Data Competencia    ]
        
        Dir_Trab=""
        For wi From 1 to 3
          If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC")
             Then GetRecord "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" DOCTO_LANCTO To REG_NOTA 
                  If RetVal
                     Then DOCTO_NUMERO  = REG_NOTA["Numero do Documento"  ] 
                          DOCTO_DATA    = REG_NOTA["Data de Entrada"      ]
                          DOCTO_CODDOC  = REG_NOTA["Codigo do Documento"  ]
                          DOCTO_SERIE   = REG_NOTA["Serie do Documento"   ]
                          DOCTO_SUBSERIE= REG_NOTA["SubSerie do Documento"]
                          DOCTO_ESPECIE = REG_NOTA["Tipo do Documento"    ]
                          QuitLoop
                  EndIf
          EndIf   
          Switch
            Case wi = 1 : [Data Competencia]=Primeiro_Dia_Data([Data Competencia])-1
            Case wi = 2 : [Data Competencia]=Ultimo_Dia_Data([Data Competencia])+1
          EndSwitch
          Dir_Trab="FechaMes\\"+AlinhM(StrVal(Year([Data Competencia])),4)+"_"+AlinhM(StrVal(Month([Data Competencia])),2)+"\\" 
        EndFor  
        [Data Competencia]=old_dtemis
EnDIf
       
;---- Contas a Receber e Nota de Saida -----------------------------------------
If (tpmov="S") And [Sistema Gerador]<>"MA"   ;Dupli.Clientes  
   Then
        Moveto TabelaNumParcelas
        moveto [Codigo da Empresa]
        locate [Answer->Codigo da Empresa],[Answer->Tipo Docto Gerador],[Answer->Numero Docto Gerador]
        if retval
           then DOCTO_PARCELA=strval([NumParcelas])
        endif              
        moveto "Answer" 
    
        codpessoa    = [Codigo do Destinatario]

        DOCTO_NUMERO = [Numero Docto Gerador] ;NotaC
        DOCTO_DATA   = [Data de Emissao     ]     
        DOCTO_CODDOC = [Tipo Docto Gerador  ]
        
        old_dtemis=[Data de Emissao]
     
        Dir_Trab=""
        For wi From 1 to 3
          If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC")
             Then 
                  
                  GetRecord "\\Sistemas\\Cadastro\\Tpdoctos" DOCTO_CODDOC To REG_DOCTO                              
                  If RetVal
                     Then DOCTO_SERIE   = REG_DOCTO["Serie do Documento"    ]
                          DOCTO_SUBSERIE= REG_DOCTO["SubSerie do Documento" ]
                          DOCTO_ESPECIE = REG_DOCTO["Tipo do Documento"     ]
                  EndIf
             
                  GetRecord "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" DOCTO_EMPRESA,DOCTO_NUMERO,DOCTO_SERIE To REG_NOTA 
                  If RetVal
                     Then DOCTO_DATA   = REG_NOTA["Data de Emissao"]                              
                                      
                          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          

;---- Identificacao Lancamento -------------------------------------------------
;If IsBlank(DOCTO_SERIE)
;  Then DOCTO_SERIE="000"
;EndIf   

switch
  case tpmov="E":                
    if search("/",[Numero do Documento])>0
       then DOCTO_DUP     = DOCTO_NUMERO+"/"+DOCTO_PARCELA
       else DOCTO_DUP     = DOCTO_NUMERO
    endif

  case tpmov="S":                
    if search("/",[Numero do Documento])>0
       then DOCTO_DUP     = DOCTO_NUMERO+"/"+DOCTO_PARCELA
       else DOCTO_DUP     = DOCTO_NUMERO
    endif

endSwitch

;---- Pessoa -------------------------------------------------------------------
GetRecord "\\Sistemas\\Cadastro\\Destinat" codpessoa To regdestinat
if retval
  Then if regdestinat["Tipo Pessoa"]="JURIDICA"
          then DOCTO_CGC=Tira_CharNum(regdestinat["CGC"])
          else DOCTO_CGC="000"+Tira_CharNum(regdestinat["CGC"])
       endif
endif           

;---- Modelo Docto--------------------------------------------------------------
GetRecord "\\Sistemas\\Cadastro\\Tpdoctos" DOCTO_CODDOC To regtpdoctos
if retval
  Then TIPDOCFISC=regtpdoctos["Modelo do Documento"]
endif           

TIPO             ="I"
if not isblank(DOCTO_DATA)
   then ANO      =substr(Strval(Year(DOCTO_DATA)),3,2)
   else ANO      ="00"
endif   
DOCUMENTOD       =tplancto
CHAVE_TIPO       =tpmov
CHAVE_NFISCAL    =DOCTO_NUMERO
CHAVE_CP         =DOCTO_CGC
CHAVE_FILIAL     ="00"
CHAVE_SERIE      =DOCTO_SERIE
CHAVE_SUBSERIE   =DOCTO_SUBSERIE
CHAVE_DUPLICATA  =DOCTO_DUP
CHAVE_ESPECIE    =DOCTO_ESPECIE


switch  
  case tplancto="B":

    ;---- Conta --------------------------------------------------------------------
    GetRecord "\\Sistemas\\Ctacor\\Conta" [Codigo da Conta] To REG_CONTA
    If RetVal
       then BRANCO8_CONTACONTABIL=REG_CONTA["Conta Contabil"] 
    EndIf

    ALTERA1                  ="X"
    CONTEUDODUP_DATAPAGAMENTO=[Data do Pagamento]

    switch
      case tpmov="E":
           CONTEUDOVAL_VALOR           =([Valor do Pagamento  ]-[Valor do Juros])+[Valor do Desconto]
                
           HISTORICO                   ="Pag. dupl. n "+DOCTO_DUP+" de "+[Razao Social]

           if [Valor do Juros]>0
              then 
                   ALTERA2             ="X"
                   CONTEUDOVEN_MULTA   =[Valor do Juros]
                   HISTMULTA           ="Pag. juros dupl. n "+DOCTO_DUP+" de "+[Razao Social]
           endif

           if [Valor do Desconto]>0
              then 
                   ALTERA3             ="X"
                   CONTEUDOVAL_DESCONTO=[Valor do Desconto]
                   HISTDESCO           ="Descto obtido dupl. n "+DOCTO_DUP+" de "+[Razao Social]
           endif
  
      case tpmov="S":                
           CONTEUDOVAL_VALOR           =([Valor do Recebimento]-[Valor do Juros])+[Valor do Desconto]
           
           HISTORICO                   ="Rec. dupl. n "+DOCTO_DUP+" de "+[Razao Social]

           if [Valor do Juros]>0
              then 
                   ALTERA2             ="X"
                   CONTEUDOVEN_MULTA   =[Valor do Juros]
                   HISTMULTA           ="Rec. juros dupl. n "+DOCTO_DUP+" de "+[Razao Social]
           endif

           if [Valor do Desconto]>0
              then 
                   ALTERA3             ="X"
                   CONTEUDOVAL_DESCONTO=[Valor do Desconto]
                   HISTDESCO           ="Descto concedido dupl. n "+DOCTO_DUP+" de "+[Razao Social]
           endif
   
    endSwitch
    
endSwitch  

Grava()
            
EndProc ;Monta_Dados()


;*******************************************************************************
;* Rotina para gravar registro titulo                                          *
;*******************************************************************************
Proc Grava()

Moveto "EXPD_NGF"
End Down                                                                        

[TIPO                 ]=TIPO                 
[ANO                  ]=ANO                  
[DOCUMENTOD           ]=DOCUMENTOD           
[CHAVE_TIPO           ]=CHAVE_TIPO           
[CHAVE_NFISCAL        ]=CHAVE_NFISCAL        
[CHAVE_CP             ]=CHAVE_CP             
[CHAVE_FILIAL         ]=CHAVE_FILIAL         
[CHAVE_SERIE          ]=CHAVE_SERIE          
[CHAVE_SUBSERIE       ]=CHAVE_SUBSERIE       
[CHAVE_DUPLICATA      ]=CHAVE_DUPLICATA      
[CHAVE_ESPECIE        ]=CHAVE_ESPECIE        
[ALTERA1              ]=ALTERA1              
[CONTEUDODUP_DUPLICATA    ]=CONTEUDODUP_DUPLICATA    
[CONTEUDODUP_DATAPAGAMENTO]=CONTEUDODUP_DATAPAGAMENTO
[ALTERA2              ]=ALTERA2              
[CONTEUDOVEN_VENCTO   ]=CONTEUDOVEN_VENCTO   
[CONTEUDOVEN_MULTA    ]=CONTEUDOVEN_MULTA    
[ALTERA3              ]=ALTERA3              
[CONTEUDOVAL_VALOR    ]=CONTEUDOVAL_VALOR    
[CONTEUDOVAL_DESCONTO ]=CONTEUDOVAL_DESCONTO 
[BRANCO1              ]=BRANCO1              
[BRANCO8_CONTACONTABIL]=BRANCO8_CONTACONTABIL
[PIS                  ]=PIS                  
[COFINS               ]=COFINS               
[CONTIBUICAOSOCIAL    ]=CONTIBUICAOSOCIAL    
[TIPDOCFISC           ]=TIPDOCFISC           
[HISTORICO            ]=HISTORICO             
[HISTMULTA            ]=HISTMULTA             
[HISTDESCO            ]=HISTDESCO             
UnLockRecord

Moveto "Answer"

EndProc

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

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

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

Return DtTit
EndProc  ; (Data_Str)

;*******************************************************************************
;* Rotina gera TXT DUPLS                                  
;*******************************************************************************
Proc GERA_DUPLS()
ClearAll

Aguarde(Completa("Aguarde, gerando arquivo DATA",45," "))

;--- Registro DUPLS: Tabela de Duplicatas ---------------------------------------
View "EXPD_NGF"
Scan
  Print File ARQDUPLS ""+Format("W01,AL",[TIPO                 ])                 
  Print File ARQDUPLS ""+Format("W02,AL",[ANO                  ])                  
  Print File ARQDUPLS ""+Format("W01,AL",[DOCUMENTOD           ])          
  Print File ARQDUPLS ""+Format("W01,AL",[CHAVE_TIPO           ])          
  Print File ARQDUPLS ""+Format("W20,AL",[CHAVE_NFISCAL        ])        
  Print File ARQDUPLS ""+Format("W20,AL",[CHAVE_CP             ])             
  Print File ARQDUPLS ""+Format("W02,AL",[CHAVE_FILIAL         ])         
  Print File ARQDUPLS ""+Format("W03,AL",[CHAVE_SERIE          ])         
  Print File ARQDUPLS ""+Format("W03,AL",[CHAVE_SUBSERIE       ])       
  Print File ARQDUPLS ""+Format("W09,AL",[CHAVE_DUPLICATA      ])      
  Print File ARQDUPLS ""+Format("W03,AL",[CHAVE_ESPECIE        ])        
  
  Print File ARQDUPLS ""+Format("W01,AL",[ALTERA1              ])
  if [DOCUMENTOD]="D"
     then  Print File ARQDUPLS ""+Format("W15,AL",[CONTEUDODUP_DUPLICATA    ])
     else  Print File ARQDUPLS ""+Format("W15,AL",Data_Str([CONTEUDODUP_DATAPAGAMENTO]))
  endif   
  
  Print File ARQDUPLS ""+Format("W01,AL",[ALTERA2              ])             
  if [DOCUMENTOD]="D"
     then Print File ARQDUPLS ""+Format("W15,AL",Data_Str([CONTEUDOVEN_VENCTO   ]))   
     else Print File ARQDUPLS ""+Format("W15,AL",Valor_Str([CONTEUDOVEN_MULTA    ],15,2))    
  endif   
  
  Print File ARQDUPLS ""+Format("W01,AL",[ALTERA3              ])             
  if [DOCUMENTOD]="D"
     then Print File ARQDUPLS ""+Valor_Str([CONTEUDOVAL_VALOR    ],15,2)    
     else Print File ARQDUPLS ""+Valor_Str([CONTEUDOVAL_DESCONTO ],15,2) 
  endif   

  Print File ARQDUPLS ""+Format("W01,AL",[BRANCO1              ])             
  Print File ARQDUPLS ""+Format("W15,AL",[BRANCO8_CONTACONTABIL])
  Print File ARQDUPLS ""+Valor_Str([PIS                  ],15,2)                  
  Print File ARQDUPLS ""+Valor_Str([COFINS               ],15,2)               
  Print File ARQDUPLS ""+Valor_Str([CONTIBUICAOSOCIAL    ],15,2)    
  Print File ARQDUPLS ""+Format("W02,AL",[TIPDOCFISC           ])           
  
  Print File ARQDUPLS ""+Format("W50,AL",[HISTORICO            ])             
  Print File ARQDUPLS ""+Format("W50,AL",[HISTMULTA            ])             
  Print File ARQDUPLS ""+Format("W50,AL",[HISTDESCO            ])+"\n"             
EndScan
ClearImage

EndProc

;*******************************************************************************
;* Rotina gera TXT DATA                                   
;*******************************************************************************
Proc GERA_DATA()
ClearAll

Aguarde(Completa("Aguarde, gerando arquivo DATA",45," "))

;--- Registro DATA: Abertura do Arquivo Digital e Identifica‡ao da Empresa -----
Print File ARQDATA AlinhM(StrVal(Day(VSDGDTINI)),2)+"/"+AlinhM(StrVal(Month(VSDGDTINI)),2)+"/"+AlinhM(StrVal(Year(VSDGDTINI)),4)
Print File ARQDATA AlinhM(StrVal(Day(VSDGDTFIM)),2)+"/"+AlinhM(StrVal(Month(VSDGDTFIM)),2)+"/"+AlinhM(StrVal(Year(VSDGDTFIM)),4)
Print File ARQDATA "\n"

EndProc


;*******************************************************************************
;* Rotina inicio do processo                    
;*******************************************************************************
Proc Inicio()
Aguarde("Aguarde, preparando dados")

;---- Esvazia Tabelas ----------------------------------------------------------

Empty("EXPD_NGF")

;---- Define arquivo TXT -------------------------------------------------------

VSDGDRIVE = SubStr(Directory(),1,2)
PASTA     = "\\Sistemas\\Exporta\\MMNGF"
If DirExists(PASTA)=0
   Then Cria_Pasta(PASTA)
        Sleep 2000
EndIf

GetRecord "\\Sistemas\\Cadastro\\Empresas" VSDGEMPRESA To regempresas
PREFIXO    = Substr(regempresas["Conta Contabil Empresa"],1,3)

ARQDUPLS = PASTA+"\\DUPLS"+PREFIXO+".TXT"
Deleta_Arquivo(ARQDUPLS)

ARQDATA = PASTA+"\\DATA.TXT"
Deleta_Arquivo(ARQDATA)

Deleta_Arquivo("MASTER.ARJ")

return 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()

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

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

While True
  ShowDialog "Exporta‡„o de Baixa de Duplicatas - Mastermaq NG" 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 26 Tag "TG_OPCOES1"
    "Duplicatas a Pagar   " to VSDGOPCAO[1]
    CheckBoxes @07,00 Height 1 Width 26 Tag "TG_OPCOES2"
    "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")
  
  LimpaRodape(0)
  
  If Not Inicio()
     Then Loop
  Endif   

  SelecionaDuplicatas()
  If IsEmpty("EXPD_NGF")
     Then MENSAGEM("N„o existem registros a processar")
          Loop
  EndIf
  
;--- Gera TXT Blocos -----------------------------------------------------------
  GERA_DUPLS()
  GERA_DATA()
  
;--- Libera TXT e exibe MSG ----------------------------------------------------
  Close Printer
  
  LimpaRodape(0)

  GetRecord "\\Sistemas\\Cadastro\\Empresas" VSDGEMPRESA To REG_EMP
  
  
  Aguarde("Aguarde, Compactando pacote de transa‡„o")

  PTREF="_"+AlinhM(StrVal(Month(VSDGDTFIM)),2)+AlinhM(StrVal(Year(VSDGDTFIM)),4)
  NewARQ=VSDGDRIVE+PASTA+"\\Mastermaq_BxDup_"+Tira_CharNum(reg_emp["CGC Empresa"])+PTREF+".ARJ"

  SetDir PASTA
  
  cmd="c:\\vise\\Varj.exe a MASTER "+ARQDATA+" "+ARQDUPLS
  Executa_Programa(cmd)
  Sleep 2000
  
  cmd="REN MASTER.ARJ \""+NewARQ+"\""
  ExecVise(cmd)
  Sleep 1000
  
  
  Deleta_Arquivo("MASTER.ARJ")
  
  SetDir "\\Sistemas\\Exporta\\"
  
  If Not IsFile(ARQDUPLS)
     Then Mensagem("Arquivo n„o foi gerado !")
     Else Mensagem("Arquivo Gerado !// //"+NewARQ)
  EndIf
     
EndWhile
ClearAll
Release Vars All
Release Procs All
