;** Rm_0240  *******************************************************************
;*  Emissao dos Titulos a Receber e Recebidos por Cidade                       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 13/07/2000 por Douglas Rodrigues
;Ultima Alteracao: 01/03/2005 por Davi Pereira Carrano
;Motivo Alteracao: Corre‡Æo das Ask para liberar tabelas quando se usa Fast Insert
;Ultima Alteracao: 05/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 24/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 05/06/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes titulo                       
;Ultima Alteracao: 11/02/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes de padroniza‡Æo nos campos [TG_CIDADE] e [TG_ESTADO]

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc Tit_Receber()
ClearAll

Aguarde("Aguarde, Processando Dados a Receber")
{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo ] Example "cli"
Moveto [Cidade ] Check TypeIn CIDADE
Moveto [UF     ] TypeIn "~VSDGESTADO.."
{Ask} {Duplic} Check
Moveto [Codigo do Destinatario ] Example "cli"
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
Moveto [Data de Vencimento     ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
Moveto [Saldo do Documento     ] TypeIn "> 0.01"
Moveto [Tipo do Lancamento     ] TypeIn "Not P, Not J"
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then CoEdit "Answer"
        Scan
          If [Data de Vencimento]<Today()
             Then NDA=Today()-[Data de Vencimento]
                  TXM=[Multa]
                  [Observacoes]="Vencida"
             Else NDA=0
                  TXM=0
                  [Observacoes]=""
          EndIf

          If [Data Limite Desconto]>=Today()
             Then VRDESCT=[Valor do Desconto]
             Else VRDESCT=0
          EndIf

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

          [Valor do Documento]=([Saldo do Documento]+VRJUROS)-VRDESCT
          [Valor do Desconto ]=VRJUROS+(VRDESCT*-1)

        EndScan
        Do_It!
        ClearAll
EndIf

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Check
Moveto [Cidade                 ] Check
Moveto [Data de Vencimento     ] Check
Moveto [Codigo do Representante] Check
Moveto [Nome Fantasia Represent] Check
Moveto [Valor do Documento     ] TypeIn "Calc Sum as Valor a Receber"
Moveto [Saldo da Comissao      ] TypeIn "Calc Sum as Comissao a Pagar"
Do_It!
ClearAll

If IsTable("Receber")
   Then Delete "Receber"
EndIf
Rename "Answer" "Receber"

EndProc       ;(Tit_Receber)

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc Tit_Recebidos()
ClearAll
LimpAguarde()
Aguarde("Aguarde, Processando Dados Recebidos")

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo ] Example "cli"
Moveto [Cidade ] Check TypeIn CIDADE
Moveto [UF     ]       TypeIn "~VSDGESTADO.."
{Ask} {Duplic}
Moveto [Numero do Lancamento   ] Example "lanc"
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Codigo do Destinatario ] Example "cli"
Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
Moveto [Nome Fantasia Represent] Check
{Ask} {DupBaixa} Check
Moveto [Numero do Lancamento] Example "lanc"
Moveto [Data do Pagamento   ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Check
Moveto [Cidade                 ] Check
MOveto [Codigo do Representante] Check
Moveto [Nome Fantasia Represent] Check
Moveto [Data do Pagamento      ] Check
Moveto [Data Pagamento Comissao] Check
Moveto [Valor do Recebimento   ] TypeIn "Calc Sum as Valor Recebido"
Moveto [Valor da Comissao      ] TypeIn "Calc Sum as Comissao Paga"
Do_It!
ClearAll
If IsTable("Recebido")
   Then Delete "Recebido"
EndIf
Rename "Answer" "Recebido"

EndProc      ;(Tit_Recebidos)

;*******************************************************************************
; Rotina para Processar Recebido e a Receber                                   *
;*******************************************************************************
Proc Processa()
ClearAll
LimpAguarde()
Aguarde("Aguarde, Gerando Relatorio")

Copy "\\Base\\Sistemas\\CtaRec\\Rm_0240" PrivDir()+"Rm_0240"

If IsEmpty("Receber") And
   IsEmpty("Recebido")
   Then Return
EndIf

If Not IsEmpty("Receber")
   Then {Ask} {Receber}
        Moveto [Cidade                 ] CheckPlus
        Moveto [Codigo da Empresa      ] CheckPlus
        Moveto [Data de Vencimento     ] CheckPlus
        Moveto [Codigo do Representante] CheckPlus
        Moveto [Nome Fantasia Represent] CheckPlus
        Moveto [Valor a Receber        ] CheckPlus
        Moveto [Comissao a Pagar       ] CheckPlus
        Do_It!
        ClearAll

        {Ask} {Answer}
        Moveto [Cidade                 ] Example "cidade"
        Moveto [Codigo da Empresa      ] Example "empresa"
        Moveto [Data de Vencimento     ] Example "data"
        Moveto [Codigo do Representante] Example "rep"
        Moveto [Nome Fantasia Represent] Example "nrep"
        Moveto [Valor a Receber        ] Example "vr"
        Moveto [Comissao a Pagar       ] Example "co"

        {Ask} TypeIn PrivDir()+"Rm_0240" Enter TypeIn "Fast Insert"
        Moveto [Cidade                 ] Example "cidade"
        Moveto [Codigo da Empresa      ] Example "empresa"
        Moveto [Data do Lancamento     ] Example "data"
        Moveto [Codigo do Representante] Example "rep"
        Moveto [Nome Fantasia Represent] Example "nrep"
        Moveto [Valor a Receber        ] Example "vr"
        Moveto [Comissao a Pagar       ] Example "co"
        Do_It!
        ClearAll
EndIf

CoEdit PrivDir()+"Rm_0240","Recebido"
Moveto [Codigo da Empresa]
Scan

  EMP=[Codigo da Empresa      ]
  CID=[Cidade                 ]
  REP=[Codigo do Representante]
  DAT=[Data do Pagamento      ]

  Moveto PrivDir()+"Rm_0240"
  Moveto [Codigo da Empresa]
  Locate EMP,CID,REP,DAT
  If Not RetVal
     Then End
          Down
          [Codigo da Empresa      ]=[Recebido->Codigo da Empresa      ]
          [Cidade                 ]=[Recebido->Cidade                 ]
          [Codigo do Representante]=[Recebido->Codigo do Representante]
          [Data do Lancamento     ]=[Recebido->Data do Pagamento      ]
          [Nome Fantasia Represent]=[Recebido->Nome Fantasia Represent]
          [Valor Recebido         ]=[Recebido->Valor Recebido         ]
          If Not IsBlank([Recebido->Data Pagamento Comissao])
             Then [Comissao Paga   ]=[Recebido->Comissao Paga]
             Else [Comissao a Pagar]=[Recebido->Comissao Paga]
          EndIf
     Else [Valor Recebido         ]=[Valor Recebido]+[Recebido->Valor Recebido]
          If Not IsBlank([Recebido->Data Pagamento Comissao])
             Then [Comissao Paga   ]=[Comissao Paga   ]+[Recebido->Comissao Paga]
             Else [Comissao a Pagar]=[Comissao a Pagar]+[Recebido->Comissao Paga]
          EndIf
  EndIf
  UnLockRecord
  Moveto "Recebido"
EndScan
Do_It!
ClearAll

EndProc            ;(Processa)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA    =""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_REPRESEN"      : Campo="TG_EMPRESA"
            Case Campo="TG_CIDADE"        : Campo="TG_REPRESEN"
            Case Campo="TG_ESTADO"        : Campo="TG_CIDADE"
            Case Campo="TG_DTINI"         : Campo="TG_ESTADO"
            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_REPRESEN"
                    Case Campo="TG_REPRESEN"   : Campo="TG_CIDADE"
                    Case Campo="TG_CIDADE"     : Campo="TG_ESTADO"
                         If Upper(VSDGCIDADE)="TODAS"
                            Then CIDADE=""
                            Else CIDADE=VSDGCIDADE
                         EndIf
                    Case Campo="TG_ESTADO"     : Campo="TG_DTINI"     
                    Case Campo="TG_DTINI"      : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"      : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
       MSG_CAMPO=""
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

VSDGEMPRESA =""
VSDGREPRESEN=""
VSDGDTINI   =BlankDate()
VSDGDTFIM   =BlankDate()
VSDGCIDADE  =""
VSDGESTADO  =""

While True
  ShowDialog "Sint‚tico dos Recebidos e a Receber/ComissÆo" 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 "Representante"  For "TG_REPRESEN"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR

    Label  @ 04,00 "Cidade"  For "TG_CIDADE"
    Accept @ 05,01 Width 27 "A20"  Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE
                                   
    Label  @ 04,27 "Estado"  For "TG_ESTADO"
    Accept @ 05,28 Width 06 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO

    Label  @ 06,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 07,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 07,16 "at‚" For "TG_DTFIM"
    Accept @ 07,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
                                
    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 Not Valida_ShowDialog("") Then Loop EndIf

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

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  Tit_Receber()
  Tit_Recebidos()
  Processa()

  If IsEmpty(PrivDir()+"Rm_0240")
     Then MENSAGEM("N„o Existem Registros a Processar !")
          Loop
  EndIf

  IMPRIREL(PrivDir()+"Rm_0240","R")

  If IsTable("Answer")   Then Delete "Answer"   EndIf
  If IsTable("Receber")  Then Delete "Receber"  EndIf
  If IsTable("Recebido") Then Delete "Recebido" EndIf
  Delete PrivDir()+"Rm_0240"

EndWhile
ClearAll
Release Vars All
Release Procs All

