;** RP_0329 ********************************************************************
;** Imprime Recibo                                           ** MADEIRARTS **  *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 27/02/2013 por Bruno Carvalho
;Ultima Altera‡Æo: 04/04/2013 por Kamila Gomes
;Motivo Alteracao: Ajuste Cabe‡alho, Razao Social do Cliente
;Ultima Altera‡Æo: 12/06/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ puxar c¢digo do cliente correto

;*** O recibo RP_0329 mostra todas as duplicatas referente … uma determinada venda "A4"
;    O recibo RP_0329B mostra apenas … baixa 
;    O recibo RP_0329C mostra referente … pessoa, todos os titulos em aberto e o que est  sendo realizado a baixa "A4" 

;*******************************************************************************
;* Rotina p/ Gerar 4atas                                                  *
;*******************************************************************************
Proc Imprimir()

Gera_Duplic()

Moveto [Codigo do Destinatario]
Ativa_Lookup()
Moveto [Codigo]
Locate CODIGO_C
If RetVal 
   Then ENDERECO=[Endereco]
        BAIRRO  =[Bairro]
        CIDADE  =[Cidade]
        UF      =[UF]
   Else ENDERECO=""
        BAIRRO  =""
        CIDADE  =""
        UF      =""
EnDIf
KeyPress "ESC"
Do_It!

Print File ARQIMP Fill("=",135)+"\n"
Print File ARQIMP "CLIENTE.: "+Format("W5,AL",CODIGO_C)+Format("W41,AL",RAZAOS_C)+Spaces(10)+"OBS: "+SubStr(OBS_CLIE,1,78)+"\n"
Print File ARQIMP "ENDERECO: "+Format("W30,AL",ENDERECO)+Spaces(11)+SubStr(OBS_CLIE,79,78)+"\n"
Print File ARQIMP "BAIRRO..: "+Format("W15,AL",BAIRRO)+Spaces(21)+"CIDADE: "+Ltrim(CIDADE)+Spaces(4)+"UF: "+UF+"\n"

Print File ARQIMP Fill("=",135)+"\n"
If DynArraySize(ARQ1)>0
   Then Print File ARQIMP Format("W135,AC","CONTAS PAGAS")+"\n"
        Print File ARQIMP "----------------------------------------------------------------------------------------------------------------------------"+"\n"
        Print File ARQIMP "Duplicata  Descricao                      DtCompra DtVencto   VrOriginal  VrPagamento      VrJuros   VrDesconto      VrAtual"+"\n"
        Print File ARQIMP "---------- ------------------------------ -------- -------- ------------ ------------ ------------ ------------ ------------"+"\n"
        
        For wi From 1 To DynArraySize(ARQ1)
          Print File ARQIMP ARQ1[wi]+"\n"
        EndFor
        Print File ARQIMP "----------------------------------------------------------------------------------------------------------------------------"+"\n"
        Print File ARQIMP Spaces(48)+"TOTAL PAGO: "   +Format("W12.2,EIC",VRORIG_ARQ1)+Spaces(1)+Format("W12.2,EIC",VRPAG_ARQ1)+Spaces(1)+
                          Format("W12.2,EIC",VRJUR_ARQ1)+Spaces(1)+Format("W12.2,EIC",VRDES_ARQ1)+Spaces(1)+Format("W12.2,EIC",VRATU_ARQ1)+"\n"
        Print File ARQIMP Fill("=",135)+"\n"
EndIf                                                                                                                                                                  

If DynArraySize(ARQ2)>0
   Then Print File ARQIMP Format("W135,AC","CONTAS A PAGAR")+"\n"
        Print File ARQIMP "----------------------------------------------------------------------------------------------------------------------------"+"\n"
        Print File ARQIMP "Duplicata  Descricao                      DtCompra DtVencto   VrOriginal     VrAPagar      VrJuros   VrDesconto      VrAtual"+"\n"
        Print File ARQIMP "---------- ------------------------------ -------- -------- ------------ ------------ ------------ ------------ ------------"+"\n"
        For wi From 1 To DynArraySize(ARQ2)
          Print File ARQIMP ARQ2[wi]+"\n"
        EndFor
        Print File ARQIMP "----------------------------------------------------------------------------------------------------------------------------"+"\n"
        Print File ARQIMP Spaces(45)+"TOTAL A PAGAR: "+Format("W12.2,EIC",VRORIG_ARQ2)+Spaces(1)+Format("W12.2,EIC",VRPAG_ARQ2)+Spaces(1)+
                          Format("W12.2,EIC",VRJUR_ARQ2)+Spaces(1)+Format("W12.2,EIC",VRDES_ARQ2)+Spaces(1)+Format("W12.2,EIC",VRATU_ARQ2)+"\n"
        Print File ARQIMP Fill("=",135)+"\n"
EndIf

EndProc ;Imprimir()

;*******************************************************************************
;* Rotina p/ Gerar Duplicatas                                                  *
;*******************************************************************************
Proc Gera_Duplic()
Private ENCONTRADO

DynArray ARQ1[]
DynArray ARQ2[]

Cont1=0
Cont2=0

CODIGO_C = ""
RAZAOS_C = ""
OBS_CLIE = ""

Moveto "Duplic"
Moveto [Numero Docto Gerador]
Locate LANCG
If RetVal
   Then ENCONTRADO=False
        While True
          If [Data_Inclusao]  =DATA_INC And 
             [Hora_Inclusao]  =HORA_INC And
             [Sistema Gerador]=SIST_GER
             Then ENCONTRADO=True
                  QuitLoop
             Else Locate Next LANCG
          EndIf   
        EndWhile   
        If ENCONTRADO     
           Then CODIGO_C = [Codigo do Destinatario]
                RAZAOS_C = [Razao Social]
                OBS_CLIE = [Observacoes]
                While [Numero Docto Gerador]=LANCG
                  NAO_FAZ=False
                  If [Numero do Lancamento]=NLANC
                    Then TOT_PAG   = Vr_Pagto
                         TOT_JUR   = Vr_Juros
                         TOT_DES   = Vr_Descto
                         
                         If TOT_DES=BlankNum() Then TOT_DES=0 EndIf
                         
                         ;TOT_ATUAL = [Valor do Documento] + TOT_JUR - TOT_DES
                         ;If [Valor do Documento]=TOT_PAG
                         ;   Then TOT_ATUAL = [Valor do Documento] + TOT_JUR - TOT_DES
                         ;   Else TOT_ATUAL = TOT_PAG
                         ;EndIf  
                         DATAE=Format("D10",[Data de Emissao])
                         If Len(Tira_CharNum(DATAE))=7 Or Len(Tira_CharNum(DATAE))=9
                            Then DATAE="0"+DATAE
                         EndIf
                         DATAV=Format("D10",[Data de Vencimento])
                         If Len(Tira_CharNum(DATAV))=7 Or Len(Tira_CharNum(DATAV))=9
                            Then DATAV="0"+DATAV
                         EndIf
                         Cont1 = Cont1 + 1
                         
                         If [Valor do Documento]<>[Saldo do Documento]
                             Then Ver_Baixas()
                                  Moveto "Duplic"
                         EndIf                           
                         
                         TOT_ATUAL=TOT_PAG
                         
                         ARQ1[Cont1] = Format("W10,AL",[Numero do Documento])+Spaces(1)+Format("W30,AL",[Documento Referente])+Spaces(1)+
                                       DATAE+Spaces(1)+DATAV+Spaces(1)+Format("W12.2,EIC",[Valor do Documento])+Spaces(1)+
                                       Format("W12.2,EIC",TOT_PAG)+Spaces(1)+Format("W12.2,EIC",TOT_JUR)+Spaces(1)+
                                       Format("W12.2,EIC",TOT_DES)+Spaces(1)+Format("W12.2,EIC",TOT_ATUAL)
                         
                         VRORIG_ARQ1= VRORIG_ARQ1+[Valor do Documento]
                         VRPAG_ARQ1 = VRPAG_ARQ1 +TOT_PAG
                         VRJUR_ARQ1 = VRJUR_ARQ1 +TOT_JUR
                         VRDES_ARQ1 = VRDES_ARQ1 +TOT_DES
                         VRATU_ARQ1 = VRATU_ARQ1 +TOT_ATUAL

                         If [Saldo do Documento]<>[Valor do Documento] And
                            [Saldo do Documento]>0  
                            Then Verifica_Lancamento()
                         EndIf

                         NAO_FAZ=True
                  EndIf
                  
                  If Not NAO_FAZ 
                     Then If [Valor do Documento]<>[Saldo do Documento]
                             Then Ver_Baixas()
                                  Moveto "Duplic"
                          EndIf    
                          Switch
                            Case [Saldo do Documento]=0 Or
                                 [Saldo do Documento]<>[Valor do Documento]     : 
                                 TOT_ATUAL=TOT_PAG
                                 ;If [Saldo do Documento]=0
                                 ;   Then TOT_ATUAL = [Valor do Documento] + TOT_JUR - TOT_DES
                                 ;   Else TOT_ATUAL = TOT_PAG
                                 ;EndIf 
                         
                                 DATAE=Format("D10",[Data de Emissao])
                                 If Len(Tira_CharNum(DATAE))=7 Or Len(Tira_CharNum(DATAE))=9
                                    Then DATAE="0"+DATAE
                                 EndIf
                                 DATAV=Format("D10",[Data de Vencimento])
                                 If Len(Tira_CharNum(DATAV))=7 Or Len(Tira_CharNum(DATAV))=9
                                    Then DATAV="0"+DATAV
                                 EndIf
                                 Cont1 = Cont1 + 1
                                 ARQ1[Cont1] = Format("W10,AL",[Numero do Documento])+Spaces(1)+Format("W30,AL",[Documento Referente])+Spaces(1)+
                                               DATAE+Spaces(1)+DATAV+Spaces(1)+Format("W12.2,EIC",[Valor do Documento])+
                                               Spaces(1)+Format("W12.2,EIC",TOT_PAG)+Spaces(1)+
                                               Format("W12.2,EIC",TOT_JUR)+Spaces(1)+Format("W12.2,EIC",TOT_DES)+Spaces(1)+
                                               Format("W12.2,EIC",TOT_ATUAL)
                                 NAO_FAZ=True   
                                 
                                 VRORIG_ARQ1= VRORIG_ARQ1+[Valor do Documento]
                                 VRPAG_ARQ1 = VRPAG_ARQ1 +TOT_PAG
                                 VRJUR_ARQ1 = VRJUR_ARQ1 +TOT_JUR
                                 VRDES_ARQ1 = VRDES_ARQ1 +TOT_DES
                                 VRATU_ARQ1 = VRATU_ARQ1 +TOT_ATUAL

                                 If [Saldo do Documento]<>[Valor do Documento] And
                                    [Saldo do Documento]>0  
                                    Then Verifica_Lancamento()
                                 EndIf
                                 
                            Case [Valor do Documento]=[Saldo do Documento] Or
                                 [Saldo do Documento]>0 : Verifica_Lancamento()  
                          EndSwitch
                  EndIf
                  Skip
                  If Eot() Then QuitLoop EndIf
                EndWhile
        EndIf        
EndIf                        

EndProc ;Gera_Duplic()

;*******************************************************************************
;* Rotina p/ Verificar Baixas                                                  *
;*******************************************************************************
Proc Verifica_Lancamento()
  
VSD_I_DtPagto=Today()  
NDA=VSD_I_DtPagto-[Duplic->Data de Vencimento]
                           
If NDA <=2
  Then Switch
         Case Dow([Duplic->Data de Vencimento])="Sat" : NDA=NDA-2
         Case Dow([Duplic->Data de Vencimento])="Sun" : NDA=NDA-1               
       EndSwitch
EndIf                                                 
If NDA <> 0
   Then TXM=[Duplic->Multa]
   Else TXM=0
EndIf

VSD_I_NDA=NDA
If VSD_I_NDA<=0 Then  VSD_I_NDA=BlankNum() EndIf
If [Duplic->Taxa de Juros]>0
   Then TXJ=([Duplic->Taxa de Juros]/[Duplic->NDias Taxa de Juros])*NDA
        VRJUROS=(([Duplic->Saldo do Documento]*TXJ)/100)+([Duplic->Saldo do Documento]*TXM/100)
   Else VRJUROS=(([Duplic->Valor de Juros]/[Duplic->NDias Taxa de Juros])*NDA)
        VRJUROS=VRJUROS+(([Duplic->Saldo do Documento]*TXM)/100)
EndIf

If VSD_I_Vr_Pagto<=[Duplic->Data Limite Desconto]
   Then VSD_I_Vr_Pagto =[Duplic->Saldo do Documento]-
                        [Duplic->Valor do Desconto ]
        VSD_I_Vr_Descto=[Duplic->Valor do Desconto ]
   Else VSD_I_Vr_Pagto =[Duplic->Saldo do Documento]
        VSD_I_Vr_Descto=BlankNum()
EndIf
If VRJUROS>0
   Then VSD_I_VR_Juros =VRJUROS
   Else VSD_I_VR_Juros =BlankNum()
EndIf
VSD_I_Vr_Pagto =Round(VSD_I_Vr_Pagto+VSD_I_VR_Juros,2)
TXCOMIS=((VSD_I_Vr_Pagto + VSD_I_Vr_Descto - VSD_I_Vr_Juros)*100)
       /([Duplic->Saldo do Documento]+(VROLD+DSOLD-JSOLD))
VSD_I_Vr_Comissao=NDecimal((([Duplic->Saldo da Comissao]+VCOLD)*TXCOMIS)/100,2)
If VSD_I_Vr_Comissao=([Duplic->Saldo da Comissao]+0.01) or
  VSD_I_Vr_Comissao=([Duplic->Saldo da Comissao]-0.01)   
  Then VSD_I_Vr_Comissao=[Duplic->Saldo da Comissao]   
EndIf 
       
If VSD_I_DtPagto=[Duplic->Data de Emissao]
  Then If Not IsBlank(PARAM_PLANO_CONTA_AVISTA) And IsBlank([Codigo Plano_Conta])
          Then VSD_I_PlContas=PARAM_PLANO_CONTA_AVISTA
               [Codigo Plano_Conta]=PARAM_PLANO_CONTA_AVISTA
               VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
       EndIf
  Else If Not IsBlank(PARAM_PLANO_CONTA_APRAZO) And IsBlank([Codigo Plano_Conta])
          Then VSD_I_PlContas=PARAM_PLANO_CONTA_APRAZO
               [Codigo Plano_Conta]=PARAM_PLANO_CONTA_APRAZO
               VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
       EndIf
EndIf                    

TOT_PAG=VSD_I_Vr_Pagto
TOT_JUR=VSD_I_VR_Juros 
TOT_DES=VSD_I_Vr_Descto

If [Valor do Documento]=[Saldo do Documento]
  Then TOT_ATUAL = TOT_PAG ;[Valor do Documento] + TOT_JUR - TOT_DES
  Else TOT_ATUAL = [Saldo do Documento]
EndIf                                   

If TOT_DES=BlankNum() Then TOT_DES=0 EndIf

DATAE=Format("D10",[Data de Emissao])
If Len(Tira_CharNum(DATAE))=7 Or Len(Tira_CharNum(DATAE))=9
  Then DATAE="0"+DATAE
EndIf
DATAV=Format("D10",[Data de Vencimento])
If Len(Tira_CharNum(DATAV))=7 Or Len(Tira_CharNum(DATAV))=9
  Then DATAV="0"+DATAV
EndIf

Cont2 = Cont2 + 1
ARQ2[Cont2] = Format("W10,AL",[Numero do Documento])+Spaces(1)+Format("W30,AL",[Documento Referente])+Spaces(1)+
              DATAE+Spaces(1)+DATAV+Spaces(1)+
              Format("W12.2,EIC",[Valor do Documento])+Spaces(1)+Format("W12.2,EIC",TOT_PAG)+Spaces(1)+
              Format("W12.2,EIC",TOT_JUR)+Spaces(1)+Format("W12.2,EIC",TOT_DES)+Spaces(1)+
              Format("W12.2,EIC",TOT_ATUAL)  

VRORIG_ARQ2= VRORIG_ARQ2+[Valor do Documento]
VRPAG_ARQ2 = VRPAG_ARQ2 +TOT_PAG
VRJUR_ARQ2 = VRJUR_ARQ2 +TOT_JUR
VRDES_ARQ2 = VRDES_ARQ2 +TOT_DES
VRATU_ARQ2 = VRATU_ARQ2 +TOT_ATUAL

EndProc ;Verifica_Lancamento()

;*******************************************************************************
;* Rotina p/ Verificar Baixas                                                  *
;*******************************************************************************
Proc Ver_Baixas() 

TOT_PAG=0
TOT_JUR=0
TOT_DES=0

Moveto "DupBaixa"
Moveto [Numero do Lancamento]
Locate [Duplic->Numero do Lancamento]
If RetVal
   Then While [Numero do Lancamento]=[Duplic->Numero do Lancamento]
          TOT_PAG = TOT_PAG + [Valor do Recebimento]
          TOT_JUR = TOT_JUR + [Valor do Juros]
          TOT_DES = TOT_DES + [Valor do Desconto]   
          Skip
          If Eot() Then QuitLoop EndIf
        EndWhile
EndIf

EndProc ;Ver_Baixas()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Moveto "Duplic"

UnLockRecord
FormKey

{TableAdd} {DupBaixa}
Moveto "Duplic"

NLANC = [Numero do Lancamento]
LANCG = [Numero Docto Gerador]

DATA_INC=[Data_Inclusao]
HORA_INC=[Hora_Inclusao]
SIST_GER=[Sistema Gerador]

Vr_Pagto  = VSD_I_Vr_Pagto  
Vr_Juros  = VSD_I_Vr_Juros 
Vr_Descto = VSD_I_Vr_Descto

VRORIG_ARQ1= 0
VRPAG_ARQ1 = 0
VRJUR_ARQ1 = 0
VRDES_ARQ1 = 0
VRATU_ARQ1 = 0

VRORIG_ARQ2= 0
VRPAG_ARQ2 = 0
VRJUR_ARQ2 = 0
VRDES_ARQ2 = 0
VRATU_ARQ2 = 0

ARQ1=""
ARQ2=""

Print File ARQIMP CI_15CPP
Print File ARQIMP CI_8LPP

Imprimir()

LIMPAGUARDE()

Moveto "DupBaixa"
ClearImage

Moveto "Duplic"
Moveto [Numero do Lancamento]
Locate NLANC

FormKey
CoeditKey

Moveto "DupBaixa"
