;** Rm_0081 ********************************************************************
;*  Emissao dos Titulos a Receber por Cliente com Cheques Pendentes            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/05/2002 por Anivel Augusto Rodrigues
;Ultima Alteracao: 09/02/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Opcao de Cheques
;Ultima Alteracao: 07/01/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cheques em Cobranca
;Ultima Alteracao: 13/01/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: TOTALIZA EMPRESAS
;Ultima Alteracao: 25/08/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Correcao Data de Vencimento em Branco
;Ultima Alteracao: 01/07/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Cheques Trocados
;Ultima Alteracao: 08/07/2011 por Karina Andrade
;Motivo Alteracao: Ajustes ShowDialog
;Ultima Alteracao: 05/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 17/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_EMPRESATE                 
;Ultima Alteracao: 24/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog  
;Ultima Alteracao: 28/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog TG_DESTINAT 
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()                
;Ultima Alteracao: 31/01/2020 por Bruno Carvalho             
;Motivo Alteracao: Adicionado processo para escolher mais de um tipo de carteira
;Ultima Alteracao: 04/02/2020 por Bruno Carvalho             
;Motivo Alteracao: Adicionado proc ListaRegra_Funcao(), onde foi ajustado ListaRegra_TGAtivado
;Ultima Alteracao: 06/02/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes chamada principal RM_0087   

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

If IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic")
  Then If VSDGGERENCIA<>""
          Then {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
               Moveto [Codigo do Representante] Example "crep"
               Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
       EndIf
       {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"DupliC" Enter Check
       Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA2.."
       Switch
         Case CIDADE<>"" : Moveto [Codigo do Destinatario] Example "cod" TypeIn " ,~VSDGDESTINAT.."
         OtherWise       : Moveto [Codigo do Destinatario] TypeIn "~VSDGDESTINAT.."
       EndSwitch
       Switch
         Case VSDGGERENCIA<>"" : Moveto [Codigo do Representante] Example "crep" TypeIn ", ~VSDGREPRESEN.."
         Case VSDGREPRESEN<>"" : Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
       Endswitch
       Moveto [Data de Vencimento     ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
       Moveto [Saldo do Documento     ] TypeIn "> 0.01"
       Switch                                                                                  
         Case ListaRegra_VSDGTPCART_Ativo  : Moveto [Tipo do Lancamento] TypeIn ListaRegra_VSDGTPCART
         Otherwise                         : Moveto [Tipo do Lancamento] TypeIn "~VSDGTPCART.."
       EndSwitch
       Moveto [Codigo da Conta       ] TypeIn "~VSDGCONTA.."
       switch
         case ListaRegra_VSDGTPPAGTO_Ativo : Moveto [Tipo do Pagamento      ] TypeIn ListaRegra_VSDGTPPAGTO
         case VSDGTPPAGTO<>""              : Moveto [Tipo do Pagamento      ] TypeIn "~VSDGTPPAGTO.." 
       endswitch   
       Do_It!
       ClearAll
       
       If VSDGOPSITCLIE<>"1"
           Then {Ask} {\\Sistemas\\Cadastro\\Destinat}
                Moveto [Codigo                ] Example "cod"
                Moveto [Situacao do Cliente   ] 
                switch
                  case VSDGOPSITCLIE="3" : TypeIn "PESSIMO"       ; SEM PESSIMO 
                  case VSDGOPSITCLIE="2" : TypeIn "not PESSIMO"   ; Sã PESSIMO
                endswitch
                {Ask} {Answer} TypeIn "Fast Delete"
                Moveto [Codigo do Destinatario] Example "cod"
                Do_It!
                ClearAll
        EndIf
EndIf

EndProc   ; (RM_0081A_Seleciona)

;*******************************************************************************
;* Rotina p/ processar Cheques a Descontar                                     *
;*******************************************************************************
Proc RM_0081A_Cheque()
ClearAll

{Ask} {\\Sistemas\\CheqRec\\ChequeC} Check
Moveto [Numero do Lancamento   ] Example "NUM"
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA2.."
Moveto [Codigo                 ] TypeIn "~VSDGDESTINAT.."
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
{Ask} {\\Sistemas\\CheqRec\\ChequeI} Check
Moveto [Numero do Lancamento] Example "NUM"
If VSDGCODMODELO="23A"
   Then Moveto [Situacao    ] TypeIn "Not \"LIQUIDADO\", Not \"SEM FUNDO\", Not \"EM COBRANCA\", Not \"TROCADO..\""
   ELSE Moveto [Situacao    ] TypeIn "Not \"LIQUIDADO\", Not \"EM COBRANCA\", Not \"TROCADO..\""
EndIf
Moveto [Data Vencimento     ] TypeIn ">=~VSDGDTINI ,<=~VSDGDTFIM"
Do_It!
ClearAll
If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                ] Example "codigo"
Moveto [Nome Fantasia EmitDest] Example "nome"
{Ask} {Answer} TypeIn "Fast"
Moveto [Codigo      ] Example "codigo"
Moveto [Razao Social] TypeIn "Changeto " Example "nome"
Do_It!
ClearAll

CoEdit Tabela,"Answer"
Moveto [Codigo]
Scan
  Moveto Tabela
  End
  Down
  [Codigo da Empresa     ] = [Answer->Codigo da Empresa    ]
  [Nome Fantasia Empresa ] = [Answer->Nome Fantasia Empresa]
  [Codigo do Destinatario] = [Answer->Codigo               ]
  If Len([Answer->Razao Social])>20
     Then [Nome Fantasia EmitDest] = SubStr([Answer->Razao Social],1,20)
     Else [Nome Fantasia EmitDest] = [Answer->Razao Social]
  EndIf
  [Data de Vencimento     ] = [Answer->Data Vencimento]
  [Data a Receber         ] = [Answer->Data Vencimento]
  [Tipo do Documento      ] = "CH"
  [Numero do Documento    ] = [Answer->Numero_Cheque  ]
  [Valor do Documento     ] = [Answer->Valor          ]
  [Saldo do Documento     ] = [Answer->Valor          ]
  [Valor do Desconto      ] = 0
  [Data de Emissao        ] = [Answer->Data de Entrada]
  [Numero do Lancamento   ] = StrVal([Answer->Numero do Lancamento])
  [Codigo da Conta        ] = ""
  [Codigo do Representante] = [Answer->Codigo do Representante]
  [Nome Fantasia Represent] = [Answer->Nome Fantasia Represent]
  [Documento no Banco     ] = "* "+[Answer->Situacao]
  [Tipo do Pagamento      ] = ""

  Moveto "Answer"

EndScan
Do_It!
ClearAll
EndProc ; (Cheque)

;*******************************************************************************
;* Rotina p/ processar Db Temporaria                                           *
;*******************************************************************************
Proc RM_0081A_Processa()

;***** Ajusta Dados ************************************
If VSDGEMPRESA="0000"
   Then {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo da Empresa      ] TypeIn "changeto 0000"
        Moveto [Nome Fantasia Empresa  ] TypeIn "changeto TOTALIZA EMPRESAS"
        Do_It!
        ClearAll
EndIf

Coedit Tabela
Scan For Not IsBlank([Data de Vencimento])
   If [Data de Vencimento]<Today()
      Then NDA=Today()-[Data de Vencimento]
           TXM=[Multa]
           [Observacoes]="Vencida"
      Else NDA=0
           TXM=0
           [Observacoes]=""
   EndIf
   If (Today()-[Data de Vencimento])>=NumVal(VSDGDDPROTESTO)
       Then If [Descricao do Lancamento]="PROTESTADA"
               Then [Observacoes]="Cartorio"
               Else [Observacoes]="Protestar"
            EndIf
   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)

   If SubStr([Documento no Banco],1,2)="* "
      Then [Observacoes]=[Documento no Banco]
   EndIf

EndScan
Do_It!
ClearAll

EndProc     ; (RM_0081A_Processa)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0081A_Principal()

AGUARDE("Aguarde, Processando Dados")
Tabela=Cria_Temp(PrivDir())

Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  If IsTable("Answer")     Then Delete "Answer" EndIf
  RM_0081A_Seleciona()
  If Not IsTable("Answer") Then Loop EndIf
  If IsTable(Tabela)
     Then Add "Answer" Tabela
     Else Rename "Answer" Tabela
  EndIf
EndWhile

RM_0081A_Cheque()

If Not IsEmpty(Tabela)
   Then RM_0081A_Processa()
        CopyReport "\\Base\\Sistemas\\CtaRec\\Rm_1000" "12" Tabela "R"
        IMPRIREL(Tabela,"R")
   Else MENSAGEM("N„o existem registros a processar")
EndIf

If IsTable(Tabela)   Then Delete Tabela   EndIf
If IsTable("Answer") Then Delete "Answer" EndIf

EndProc

;-- Chamada principal ----------------------------------------------------------
RM_0081A_Principal()

Release Vars Tabela
Release Procs RM_0081A_Principal, RM_0081A_Seleciona, RM_0081A_Processa, RM_0081A_Cheque