;** AtuaDup ********************************************************************
;*  Atualizacao de Duplictas p/ o Contas a Receber                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 22/10/1997 por Anivel Augusto Rodrigues
;Ultima Alteracao: 23/06/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 07/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Indice Inddup1/Duplic
;Ultima Alteracao: 05/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conta<>Empresa
;Ultima Alteracao: 26/10/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Obs p/ Cartäes
;Ultima Alteracao: 11/04/2012 por Bruno Carvalho
;Motivo Alteracao: Add Codigo_Cobrador (Representante) se vier em branco do Cadastro 
;Ultima Alteracao: 03/05/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes Codigo do Cobrador (Busca_Lookup) 
;Ultima Alteracao: 07/05/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Codigo do Cobrador (Busca_Lookup) sem mensagem
;Ultima Alteracao: 14/05/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Codigo do Cobrador="" e Codigo do Representante<>""
;Ultima Alteracao: 16/07/2012 por Karina Andrade
;Motivo Alteracao: Ajustes serie documento, X?-Cupom Fiscal para multiplos ECFïs
;Ultima Alteracao: 04/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tipo Carteira =G ="CARTAO CRED/DEB"
;Ultima Alteracao: 17/04/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ rotina "DUPI" 
;Ultima Alteracao: 10/05/2013 por Bruno Carvalho
;Motivo Alteracao: Add "DupI" [Forma de Pagamento] e [Sequencia Gerador Nota] 
;Ultima Alteracao: 19/06/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes AtuaDup() "Observacoes"
;Ultima Alteracao: 21/01/2014 por Andrey Fillipe
;Motivo Alteracao: Add Taxa de Multa
;Ultima Alteracao: 06/02/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes AtuaDup() valor e saldo do documento 
;Ultima Alteracao: 23/06/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado plano de conta conforme condi‡Æo de pagamento ao exportar para o Contas a Receber  
;Ultima Alteracao: 01/07/2014 por Bruno / Kamila
;Motivo Alteracao: Ajuste plano de conta conforme condi‡Æo de pagamento ao exportar para o Contas a Receber   
;Ultima Alteracao: 26/09/2014 por Kamila Gomes
;Motivo Alteracao: Ajustes AtuaDup() comentado bloco parametros de cartao, estava duplicando taxa admin.  
;Ultima Alteracao: 20/10/2014 por Kamila Gomes
;Motivo Alteracao: Ajustes Obs do titulo quando FP = CT ou CD
;Ultima Alteracao: 22/12/2014 por Kamila Gomes
;Motivo Alteracao: Add GetRecord buscando plano de contas da p_Duplic
;Ultima Alteracao: 27/01/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes GetRecord buscando plano de contas da p_Duplic
;Ultima Alteracao: 24/08/2015 por Andrey Fillipe 
;Motivo Alteracao: Altera‡Æo no processo dos Numero do Lan‡amento - Numero_Lancamento()
;Ultima Alteracao: 27/05/2016 por Bruno Carvalho 
;Motivo Alteracao: Alterado NUM_LANCTO = PROXLANCTO_NLANC -> Padroniza‡Æo da rotina de Numero_Lancamento()
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 26/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes centro de custo - divina panela 
;Ultima Alteracao: 11/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CL=CartÆo Parcelado
;Ultima Alteracao: 09/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes plano de conta e outras logicas
;Ultima Alteracao: 12/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sistema gerador CF
;Ultima Alteracao: 15/08/2017 por Bruno Carvalho
;Motivo Alteracao: Alterado AtuaDup() [Observacoes] p/ [Observacao] ao gravar no NOTAV  
;Ultima Alteracao: 15/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Alterado AtuaDup() [Observacoes]  
;Ultima Alteracao: 06/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes plano conta 
;Ultima Alteracao: 29/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes centro de custo - divina panela 
;Ultima Alteracao: 20/10/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes centro de custo - divina panela 
;Ultima Alteracao: 07/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos processos de visualiza‡Æo      
;Ultima Alteracao: 15/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes view plcontas      
;Alterado em     : 17/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes dupnf codigo do documento,Tipo do Documento
;Alterado em     : 18/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes logica
;Alterado em     : 22/11/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes obs par msg da boleta
;Ultima Alteracao: 16/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")
;Ultima Alteracao: 26/06/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sequencia gerador
;Ultima Alteracao: 02/07/2019 por Kamila Goms
;Motivo Alteracao: Ajustes erro de sintaxe na altera‡Æo do Anivel acima
;Ultima Alteracao: 14/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes #0294 NFCE


;*******************************************************************************
;* Rotina de Impressao de Duplicatas                                           *
;*******************************************************************************
Proc AtuaDup()
Private regp_duplic, regtppagto, PLCONTA, codemp,
        PARAM_PLANO_CONTA_AVISTA, 
        PARAM_PLANO_CONTA_APRAZO, 
        PARAM_PLANO_CONTA_DEBITO, 
        PARAM_PLANO_CONTA_CREDITO

Aguarde("Aguarde, Atualizando Duplicatas")

ClearAll

{Ask} {DupC} Check
Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Situacao              ] TypeIn "Not C"
Moveto [Cta Receber Atualizado] TypeIn "Not S"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

NR    = NRecords("Answer")
Mensagem(ltrim(Format("W10,EIC",NR))+" Duplicatas encontrados !")

CANCELADO=False
CopyForm "DupC" "F" "Answer" "F"
View "Answer" SetHighLight Current Record 23 Field 31
Home
PickForm "F"
While True
  Prompt " ESC=Cancelar  F2=Atualizar "

  Wait Table
       Until "F2","ESC","DEL"

  Switch
    Case RetVal="DEL":
    
    Case RetVal="F2":
         if confgeral("Confirmar atualizar as duplicatas no Contas a Receber ?")
            then        
                 QuitLoop
         endif
    Case RetVal="ESC":
         if confgeral("Deseja realmente sair sem atualizar duplicatas ?")
            then        
                 CANCELADO=True
                 QuitLoop
         endif
  EndSwitch       
EndWhile
Do_It!
ClearAll
Echo Normal
Echo Off

If CANCELADO
   Then Return
endif

ARQ_ERRO= PrivDir()+"ATUADUP.ERR"
Deleta_Arquivo(ARQ_ERRO)
TEVE_ERRO=False
CONT_ERRO=0

Array NoNota[15]
NR    = NRecords("Answer")
codemp="????"

View "\\Sistemas\\Cadastro\\Feriados"
View "\\sistemas\\cadastro\\cobrador"
View "\\Sistemas\\Cadastro\\Tppagto"

View "\\Sistemas\\Ctarec\\P_duplic" 
View "\\Sistemas\\Ctarec\\Duplic"

View "\\Sistemas\\Ctacor\\PlContas"

View "P_Cartao"
View "NotaC"
View "NotaV"
View "DupC"
View "DupNF"
View "DupI"

CoEdit "Answer"
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Atualizando "+BARRA_STRING)
  
  if [Answer->Codigo da Empresa]<>codemp
    then codemp=[Answer->Codigo da Empresa]
    
         PARAM_PLANO_CONTA_AVISTA =""
         PARAM_PLANO_CONTA_APRAZO =""
         PARAM_PLANO_CONTA_DEBITO =""
         PARAM_PLANO_CONTA_CREDITO=""
         GetRecord "\\Sistemas\\Ctarec\\P_duplic" [Answer->codigo da empresa] To regp_duplic   
         If RetVal 
            then 
                 PARAM_PLANO_CONTA_AVISTA =regp_duplic["Plano_Conta_AVista"  ]
                 PARAM_PLANO_CONTA_APRAZO =regp_duplic["Plano_Conta_APrazo"  ]
                 PARAM_PLANO_CONTA_DEBITO =regp_duplic["Plano_Conta_Debito"  ]
                 PARAM_PLANO_CONTA_CREDITO=regp_duplic["Plano_Conta_Credito" ]
         endif   
  endif
  
  For i from 1 to 15
    NoNota[i]=""
  EndFor
  wcn        =0
  DOC_EMPRESA=""
  DOC_NUMERO =""
  DOC_SERIE  =""
  
  Moveto "DupNF"
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa  ],
         [Answer->Numero do Documento],
         [Answer->Serie do Documento ]
  If Not RetVal
     Then Grava_Erro("1-Duplicata sem nota referenciada, N§ Duplicata "+
                     [Answer->Codigo da Empresa  ]+"/"+
                     [Answer->Numero do Documento]+"/"+
                     [Answer->Codigo do Documento])
          Moveto "Answer"
          Loop
     else
          While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
               [Numero do Documento]=[Answer->Numero do Documento] And
               [Serie do Documento ]=[Answer->Serie do Documento ]
          
             wcn=wcn+1
             NoNota[wcn]=[Codigo do Documento]+"/"+[Numero da Nota]
          
             if wcn=1
                then DOC_EMPRESA=[Codigo da Empresa]
                     DOC_NUMERO =[Numero da Nota   ]
                     DOC_SERIE  =[Serie da Nota    ]
             endif
          
             Skip
             If EOT() Then QuitLoop EndIf
          EndWhile
  EndIf
  
  Moveto "DupI"
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa  ],
         [Answer->Numero do Documento],
         [Answer->Serie do Documento ]
  If Not RetVal
     Then Grava_Erro("2-Duplicata sem desdobramentos, N§ Duplicata "+
                     [Answer->Codigo da Empresa  ]+"/"+
                     [Answer->Numero do Documento]+"/"+
                     [Answer->Codigo do Documento])
          Moveto "Answer"
          Loop
  EndIf

  Moveto "DupI"
  While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
        [Numero do Documento]=[Answer->Numero do Documento] And
        [Serie do Documento ]=[Answer->Serie do Documento ]

    vrtitoriginalcartao=blanknum()
    obscartao          =""

    If [Forma de Pagamento]=""
       Then [Forma de Pagamento]="DN"
    EndIf  
    If [Forma de Pagamento]="CT" Or
       [Forma de Pagamento]="CD" Or
       [Forma de Pagamento]="CL"
       Then 
            Moveto "NotaV" 
            Moveto [Codigo da Empresa]
            Locate DOC_EMPRESA,DOC_NUMERO,DOC_SERIE
            If RetVal
               Then While [Codigo da Empresa  ]=DOC_EMPRESA And
                          [Numero do Documento]=DOC_NUMERO And
                          [Serie do Documento ]=DOC_SERIE
                           
                      If ([Forma de Pagamento]="CT"      or
                          [Forma de Pagamento]="CL"      or 
                          [Forma de Pagamento]="CD")     and
                         [Data ]=[DupI->Data Vencimento]        
                         Then 
                              vrtitoriginalcartao=[Valor]
                              quitloop 
                      EndIf
                      Skip
                      If Eot() Then QuitLoop EndIf 
                    EndWhile
            EndIf
                         
            Moveto "NotaC" 
            Moveto [Codigo da Empresa]
            Locate DOC_EMPRESA,DOC_NUMERO,DOC_SERIE
            if retval
               then obscartao=[Razao Social]+" * "+
                              [Tipo do Documento]+"/"+[Numero do Documento]+
                              ", Vr: "+LTrim(Format("W10.2,EIC",vrtitoriginalcartao)) ; mostra valor original do titulo, sem taxa administ.
            EndIf
          
            Moveto "DupI"
    endif

    If [DupI->Ordem do Documento]<>""
      Then NUMERO_ORDEM=[DupI->Numero do Documento]+"/"+[DupI->Ordem do Documento]
      Else NUMERO_ORDEM=[DupI->Numero do Documento]
    EndIf
    
    CHV_EMPRESA     =[Answer->Codigo da Empresa  ]
    CHV_SERIE_DOCTO =[Answer->Serie do Documento ]
    CHV_TPDOCTO     =[Answer->Codigo do Documento]
    CHV_NUMERO_ORDEM=NUMERO_ORDEM
    
    Moveto "\\Sistemas\\CtaRec\\Duplic"
    Moveto [Codigo da Empresa]
    Locate IndexOrder by "IndDup24" CHV_EMPRESA,CHV_NUMERO_ORDEM, CHV_SERIE_DOCTO
    If RetVal
     Then Grava_Erro("3-Duplicata j  existe no Contas a Receber, N§ Duplicata "+
                     [Answer->Codigo da Empresa  ]+"/"+
                     [Answer->Numero do Documento]+"/"+
                     [Answer->Codigo do Documento])

           Moveto "DupI"
           Skip
           If EOT()
              Then QuitLoop
              Else Loop
           EndIf
    EndIf
  
    While True
      End
      Moveto [Numero do Lancamento]
      If Numero_Lancamento("Interno","Locked_Down")
         Then NLANC = PROXLANCTO_NLANC
              Release Vars PROXLANCTO_NLANC
              quitloop
      EndIf    
    EndWhile
  
  
   ;While True
   ;  End
   ;  Moveto [Numero do Lancamento]
   ;  If Numero_Lancamento("Interno","")
   ;    Then NLANC = PROXLANCTO_NLANC
   ;         Release Vars PROXLANCTO_NLANC
   ;  EndIf
   ;  Locate NLANC
   ;  If Not Retval
   ;     Then End Down
   ;          [Numero do Lancamento ]=NLANC
   ;          If Not IsLockRecord()
   ;             Then QuitLoop
   ;          EndIf
   ;  EndIf
   ;EndWhile
   
   [Codigo da Conta         ]=[DupI->Codigo da Conta           ]
   [Codigo da Empresa       ]=[Answer->Codigo da Empresa       ]
   [Nome Fantasia Empresa   ]=[Answer->Nome Fantasia Empresa   ]
   [Codigo do Documento     ]=[Answer->Codigo do Documento     ]
   [Serie do Documento      ]=[Answer->Serie do Documento      ]
   [Numero do Documento     ]=NUMERO_ORDEM
  
   [Codigo do Destinatario  ]=[DupI->Codigo_Sacado             ]
   [Data de Emissao         ]=[Answer->Data de Emissao         ]
   [Data de Vencimento      ]=[DupI->Data Vencimento           ]
   [Data a Receber          ]=[DupI->Data Vencimento           ]
  
   [Valor do Documento      ]=[DupI->Valor Duplicata           ]      
   [Saldo do Documento      ]=[DupI->Valor Duplicata           ] 
  
   [Documento no Banco      ]=[DupI->Documento no Banco        ]
   [Tipo do Lancamento      ]="E"
   [Descricao do Lancamento ]="CARTEIRA"
  
   While True
     NDIAS=0
     If Dow([Data a Receber])="Sat"
        Then NDIAS=2
        Else If Dow([Data a Receber])="Sun"
                Then NDIAS=1
             EndIf
     EndIf
     
     getrecord "\\sistemas\\Cadastro\\Feriados" [Data a Receber] to regferiados
     If Retval
        Then If regferiados["Dias a Receber"]>0
                Then NDIAS=regferiados["Dias a Receber"]
             EndIf
     EndIf
  
     [Data a Receber]=[Data a Receber]+NDIAS
     If NDIAS=0
        Then QuitLoop
     EndIf
   EndWhile
   [Valor do Desconto       ]=[DupI->Valor do Desconto       ]
   [Data Limite Desconto    ]=[DupI->Data Limite Desconto    ]
   [Multa                   ]=[DupI->Multa                   ]
   [Taxa de Juros           ]=[DupI->Taxa de Juros           ]
   [Tipo Taxa de Juros      ]=[DupI->Tipo Taxa de Juros      ]
   [NDias Taxa de Juros     ]=[DupI->NDias Taxa de Juros     ]
   [Tipo do Pagamento       ]=[DupI->Forma de Pagamento      ]
   [Codigo do Representante ]=[Answer->Codigo do Representante ]
   [Nome Fantasia Represent ]=[Answer->Nome Fantasia Represent ]
  
   switch
     case [Tipo do Documento]="CUP" : [Sistema Gerador         ]="CF"
     otherwise                      : [Sistema Gerador         ]="GD"
   endswitch 
  
   [Tipo Docto Gerador       ]=[Answer->Codigo do Documento]
   [Numero Docto Gerador     ]=[Answer->Numero do Documento]
   if isblank([DupI->Sequencia Gerador Nota])
      then [Sequencia Gerador]=[DupI->Ordem do Documento     ]
      else [Sequencia Gerador]=[DupI->Sequencia Gerador Nota ]
   endif   

   switch
     case NoNota[1]<>"" and NoNota[2]="" : [Documento Referente]=NoNota[1]
     otherwise                           : [Documento Referente]=[Tipo Docto Gerador]+"/"+[Numero Docto Gerador] 
   endswitch
   if not isblank([Sequencia Gerador])
      then [Documento Referente]=[Documento Referente]+"-"+[Sequencia Gerador]
   endif  
  
  
   [Valor da Comissao       ]=[DupI->Valor da Comissao       ]
   [Saldo da Comissao       ]=[DupI->Valor da Comissao       ]
   [Data de Entrada         ]=Today()
  
   ;-- Cartoes -----------------------------------------------------------------------------------
   If [Tipo do Pagamento]="CT" Or
      [Tipo do Pagamento]="CD" Or
      [Tipo do Pagamento]="CL"
      Then 
           [Tipo do Lancamento      ]="G"
           [Descricao do Lancamento ]="CARTAO CRED/DEB"
           [Observacoes             ]=obscartao
           
      else
           ;-- Obs multiplas notas -----------------------------------------------------------------------
           wcn=1
           While NoNota[wcn]<>""
             If wcn=1
                Then [Observacoes]=NoNota[wcn]
                Else [Observacoes]=[Observacoes]+","+NoNota[wcn]
             EndIf
             wcn=wcn+1
           EndWhile
           If wcn=1
              Then [Observacoes]="[REF NF: "  +[Observacoes]+"]"
              Else [Observacoes]="[REF NF's: "+[Observacoes]+"]"
           EndIf
   EndIf
   ;----------------------------------------------------------------------------------------------
  
   ;-- Centro de Custo ---------------------------------------------------------------------------
   switch
     case sys_codigo_cliente="0294" : 
        If search("DUP" ,[Tipo do Documento])>0 or
           search("CUP" ,[Tipo do Documento])>0 or 
           search("NFCE",[Tipo do Documento])>0    
           then [Codigo CCusto]="001.001"
        endif
   
     otherwise:
    
   endswitch
   ;----------------------------------------------------------------------------------------------

   ;-- Codigo do Cobrador do Cadastro de Representantes ------------------------------------------
   If [Codigo do Cobrador]="" And [Codigo do Representante]<>""
      Then getrecord "\\sistemas\\cadastro\\cobrador" [Codigo do Representante] to regcobrador
           if retval
              Then [Codigo do Cobrador   ]=regcobrador["Codigo_Cobrador"]
                   [Descricao do Cobrador]=regcobrador["Descricao_Cobrador"]
           EndIf
   EndIf   
   ;----------------------------------------------------------------------------------------------
  
   ;-- Plano de Conta ----------------------------------------------------------------------------
   PLCONTA = "" 
   GetRecord "\\Sistemas\\Cadastro\\Tppagto" [Tipo do Pagamento] To regtppagto        
   If RetVal 
      Then PLCONTA = regtppagto["Plano de Conta"]
   EndIf
   Switch           
     Case PLCONTA <> "****" And PLCONTA <> ""                               : [Codigo Plano_Conta]=PLCONTA 
     Case PARAM_PLANO_CONTA_DEBITO<>""  And [DupI->Forma de Pagamento]="CD" : [Codigo Plano_Conta]=PARAM_PLANO_CONTA_DEBITO
     Case PARAM_PLANO_CONTA_CREDITO<>"" And [DupI->Forma de Pagamento]="CT" : [Codigo Plano_Conta]=PARAM_PLANO_CONTA_CREDITO 
     Case PARAM_PLANO_CONTA_CREDITO<>"" And [DupI->Forma de Pagamento]="CL" : [Codigo Plano_Conta]=PARAM_PLANO_CONTA_CREDITO 
     Case ([Data de Emissao]=[Data de Vencimento]) Or
      (([Data de Emissao]+1)=[Data de Vencimento])                          : [Codigo Plano_Conta]=PARAM_PLANO_CONTA_AVISTA  
     OtherWise                                                              : [Codigo Plano_Conta]=PARAM_PLANO_CONTA_APRAZO
   EndSwitch
   ;----------------------------------------------------------------------------------------------

   Controle_Dia()
   UnLockRecord
  
   Moveto "DupI"
   Skip
   If EOT() Then QuitLoop EndIf
  EndWhile
  
  SaveTables

  Moveto "DupC"
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa],
         [Answer->Numero do Documento],
         [Answer->Serie do Documento]
  If RetVal
     Then For i From 1 to 3
            If Not IsLockRecord()
               Then [Cta Receber Atualizado]="S"
                    UnLockRecord
                    QuitLoop
            EndIf
          EndFor
  EndIf

  SaveTables

  Moveto "Answer"
  
EndScan
Do_It!
ClearAll


If TEVE_ERRO
   Then 
        MSG=    "Foram detectados erros nesta atualiza‡Æo !// //"
        MSG=MSG+"Verificar relatorios de erros !           "
        Mensagem(MSG)

        DISPOSITIVO()
        If OK<>"" 
           Then
                FileWrite Append ARQ_ERRO From "9-1"+"\""+"\n"
                FileWrite Append ARQ_ERRO From "9-2"+Format("W10,EIC",CONT_ERRO)+" Titulos "+"\""+"\n"

                Tabela_ERRO=Cria_Temp(PrivDir())
                Copy "\\Base\\Sistemas\\Estoque\\RM_tx250" Tabela_ERRO
        
                {Tools} {ExportImport} {Import} {ASCII} {AppendDelimited} TypeIn ARQ_ERRO Enter
                TypeIn Tabela_ERRO Enter ClearAll
                
                Sort Tabela_ERRO on "Text"
                ClearAll
                
                OPCAOPAG="Todas"
                IMPRIREL(Tabela_ERRO,"2")
        
                Delete Tabela_ERRO
        EndIf   
EndIf   

EndProc   ; (AtuaDup)

;*******************************************************************************
;* Rotina grava registro conciliacao c/ erro                                   *
;*******************************************************************************
Proc Grava_Erro(erro)
Private erro,s

if Not TEVE_ERRO
   then FileWrite        ARQ_ERRO From "\""+"0-1 ** Ocorrencias de erros, atualiza‡Æo de titulos no Contas a Receber**"+"\""+"\n"
        FileWrite Append ARQ_ERRO From "\""+"0-2"+"\""+"\n"
        FileWrite Append ARQ_ERRO From "\""+"0-3 ** Os titulos abaixo nÆo foram atualizados no Contas a Receber**"+"\""+"\n"
        FileWrite Append ARQ_ERRO From "\""+"0-4"+"\""+"\n"
endif   

s="\""+erro+"\""+"\n"
FileWrite Append ARQ_ERRO From s

CONT_ERRO=CONT_ERRO+1
TEVE_ERRO=True
EndProc

;*******************************************************************************
;* Rotina do ShowDialog                                                        *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     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="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"
                    Case Campo="TG_DTINI"   : Campo="TG_DTFIM"
                         If IsBlank(VSDGDTINI)
                            Then VSDGDTINI=today()
                         Endif
                    Case Campo="TG_DTFIM"   : Campo="YES"
                         If IsBlank(VSDGDTFIM)
                            Then VSDGDTFIM=VSDGDTINI
                         EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a Data Inicial"
  Case Campo="TG_DTFIM":
       MSG_CAMPO="Informe a Data Final"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc   ; (SD_Dialog)

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

sys_Valor()

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

While True

  ShowDialog "Atualiza‡„o de Duplicatas p/ o Contas a Receber" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 09 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_NOMEMPRESA" 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

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGDTINI)
     Then Mensagem("Data Inicial Invalida !")
          Loop
  EndIf

  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf

  AtuaDup()

  If IsEmpty("Answer")
     Then MENSAGEM("N„o existem registros a processar !")
          Loop
  EndIf

  If CANCELADO
     Then 
          Mensagem("Procedimento abortado, duplicatas nÆo foram atualizadas !")
     else 
          Mensagem("Fim de Opera‡„o !")
  endif        
  
  Delete "Answer"

EndWhile
ClearAll
Release Vars All
Release Procs All
