;** Rm_0210a *******************************************************************
;*  Emissao da Comissao a Pagar e Paga  por Representante    ** THARDELY **    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 11/11/2014 por Luis Gustavo
;Ultima Alteracao: 25/11/2014 por Luis Gustavo
;Motivo Alteracao: Ajustes na Proc SELECIONA(), Boletos vao pegar a data de emissÆo
;Ultima Alteracao: 31/12/2014 por Luis Gustavo
;Motivo Alteracao: Ajustes ao pegar os valores da forma de pagamento "BO"
;Ultima Alteracao: 06/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 28/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog 
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()                  
;Ultima Alteracao: 02/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog 

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc SELECIONA()
ClearAll
If IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic") And
   IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"DupBaixa")
   Then For i From 1 To 2
          {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"DupliC" Enter
          If i = 1
             Then Moveto [Numero do Lancamento] Check Example "lanc"
             Else Moveto [Numero do Lancamento] Check 
          EndIf   
          Moveto [Codigo da Empresa       ] Check TypeIn "~VSDGEMPRESA.."
          Moveto [Nome Fantasia Empresa   ] Check
          Moveto [Codigo do Representante ] Check TypeIn "~VSDGREPRESEN.."
          Moveto [Nome Fantasia Represent ] Check
          Moveto [Tipo do Documento       ] Check
          Moveto [Numero do Documento     ] Check
          Moveto [Codigo do Destinatario  ] Check Example "cod"
          Moveto [Nome Fantasia EmitDest  ] Check
          Moveto [Descricao do Lancamento ] Check
          Moveto [Data a Receber          ] Check
          If i <> 1
             Then Moveto [Valor do Desconto       ] Check
                  Moveto [Valor da Comissao       ] Check
                  Moveto [Valor de Juros          ] Check
          EndIf        
          If i = 1
             Then Moveto [Tipo do Pagamento ] Check TypeIn "Not BO"
                  Moveto [Data de Emissao   ] Check
             Else Moveto [Tipo do Pagamento ] Check TypeIn "BO"
                  Moveto [Data de Emissao   ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                  Moveto [Saldo do Documento] Check
                  Moveto [Valor do documento] Check
          EndIf   
          Moveto [Descricao Tipo Pagamento] Check
          Moveto [Data de Vencimento      ] Check
          If i = 1
             Then {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"DupBaixa" Enter
                  Moveto [Numero do Lancamento    ] Example "lanc"
                  Moveto [Sequencia da Baixa      ] Check
                  Moveto [Data do Pagamento       ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                  Moveto [Valor do Recebimento    ] Check
                  Moveto [Valor do Desconto       ] Check
                  Moveto [Valor da Comissao       ] Check
                  Moveto [Valor do Juros          ] Check
                  If VSDGOPSTATUS = "S"
                     Then Moveto [Data Pagamento Comissao] TypeIn "Not Blank"
                     Else Moveto [Data Pagamento Comissao] TypeIn "Blank"
                  EndIf    
                  Moveto [Tipo da Baixa           ] TypeIn "NORMAL Or Blank"
          EndIf
          
          {Ask} {\\Sistemas\\Cadastro\\Destinat}
          Moveto [Codigo   ] Example "cod"
          Moveto [Cidade   ] Check
          Do_It!
          ClearAll
          
          If Not IsEmpty("Answer")
             Then NR = NRecords("Answer")
                  
                  View Tabela
                  Coedit "Answer"
                  Scan  
                    Barra(NR, RecNo())
                    Aguarde("Aguarde, Processando Relat¢rio"+BARRA_STRING)
                    If i = 1
                       Then [Valor do Desconto] = ([Valor do Desconto]*-1)+[Valor do Juros]
                            If IsBlank([Valor do Desconto]) Then [Valor do Desconto]=0 EndIf
                            If IsBlank([Valor da Comissao]) Then [Valor da Comissao]=0 EndIf
                    EndIf

                    If [Answer->Tipo do Pagamento] = "BO"
                       Then [Answer->Descricao Tipo Pagamento] = "Boletos"
                       Else [Answer->Descricao Tipo Pagamento] = "Outras Formas de Pagamento"
                    EndIf                        
                    
                    Moveto Tabela
                    End Down
                    [Numero do Lancamento    ] = [Answer->Numero do Lancamento    ]    
                    [Codigo da Empresa       ] = [Answer->Codigo da Empresa       ]    
                    [Nome Fantasia Empresa   ] = [Answer->Nome Fantasia Empresa   ]    
                    [Tipo do Documento       ] = [Answer->Tipo do Documento       ]    
                    [Numero do Documento     ] = [Answer->Numero do Documento     ]    
                    [Descricao do Lancamento ] = [Answer->Descricao do Lancamento ]    
                    [Codigo do Destinatario  ] = [Answer->Codigo do Destinatario  ] 
                    [Nome Fantasia EmitDest  ] = [Answer->Nome Fantasia EmitDest  ] 
                    [Data de Emissao         ] = [Answer->Data de Emissao         ] 
                    [Data de Vencimento      ] = [Answer->Data de Vencimento      ] 
                    [Data a Receber          ] = [Answer->Data a Receber          ] 
                    [Tipo do Pagamento       ] = [Answer->Tipo do Pagamento       ] 
                    [Descricao Tipo Pagamento] = [Answer->Descricao Tipo Pagamento] 
                    [Codigo do Representante ] = [Answer->Codigo do Representante ] 
                    [Nome Fantasia Represent ] = [Answer->Nome Fantasia Represent ] 
                    [Cidade                  ] = [Answer->Cidade                  ]
                    If i = 1
                       Then [Data do Pagamento       ] = [Answer->Data do Pagamento       ] 
                            [Valor do Recebimento    ] = [Answer->Valor do Recebimento    ] 
                            [Valor do Juros          ] = [Answer->Valor do Juros          ] 
                            [Valor do Desconto       ] = [Answer->Valor do Desconto       ] 
                            [Valor da Comissao       ] = [Answer->Valor da Comissao       ]
                       Else If [Answer->Saldo do Documento] = 0
                               Then [Valor do Recebimento    ] = [Answer->Valor do Documento]
                               Else [Valor do Recebimento    ] = [Answer->Saldo do Documento] 
                            EndIf   
                            [Valor do Juros          ] = [Answer->Valor de Juros          ] 
                            [Valor do Desconto       ] = [Answer->Valor do Desconto       ] 
                            [Valor da Comissao       ] = [Answer->Valor da Comissao       ]
                    EndIf       
                    UnLockRecord   
                    Moveto "Answer"
                  EndScan
                  Do_It!
                  ClearAll
                  
                  If CheckTG_OPGERENCIA[1]
                     Then If i <> 1
                             Then {Ask} "Answer" Enter Check
                                  Moveto [Numero do Lancamento    ] Example "lanc"
                                  
                                  {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"DupBaixa" Enter
                                  Moveto [Numero do Lancamento    ] Example "lanc"
                                  Moveto [Sequencia da Baixa      ] Check 
                                  Do_It!
                                  ClearAll
                                  
                                  View Tabela
                                  Coedit "Answer"
                                  Scan
                                     Moveto [Numero do Lancamento]
                                     Moveto Tabela
                                     Moveto [Numero do Lancamento]
                                     Locate [Answer->Numero do Lancamento]
                                     If RetVal
                                        Then [Sequencia da Baixa] = [Answer->Sequencia da Baixa]
                                     EndIf
                                     Moveto "Answer"
                                  EndScan
                           EndIf
                  EndIf          
          EndIf
        EndFor
EndIf

EndProc

;*******************************************************************************
;*Realiza Baixa Automatica de Comissoes                                        *
;*******************************************************************************
Proc BAIXA()
Do_It!
ClearAll

AGUARDE("Aguarde, Atualizando Pagamento de Comissoes")
View "DupBaixa"
CoEdit Tabela
Scan
  NLANC=[Numero do Lancamento]
  NITEM=[Sequencia da Baixa  ]

  Moveto "DupBaixa"
  Moveto [Numero do Lancamento]
  Locate NLANC,NITEM
  If Retval
     Then If IsBlank([Data Pagamento Comissao])
             Then [Data Pagamento Comissao]=VSDGDTREFERENTE
                  UnLockRecord
          EndIf        
     Else Mensagem("O Lan‡amento "+ NLANC + " n„o possui baixa!// // A Data do Pagamento da Comiss„o, ficar  vazia !") 
  EndIf

  Moveto Tabela
EndScan
Do_it!
ClearAll
LIMPAGUARDE()
MENSAGEM("Atualizacao Concluida!")

EndProc
;*******************************************************************************
;* 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_OPSTATUS"      : Campo="TG_REPRESEN"
            Case Campo="TG_DTINI"         : Campo="TG_OPSTATUS"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_CODMODELO" : Campo="TG_DTFIM"
            Case Campo="TG_OPGERENCIA"    : Campo="TG_CODMODELO"
            Case Campo="TG_DTREFERENTE"   : Campo="TG_OPGERENCIA"
            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_OPSTATUS"
                    Case Campo="TG_OPSTATUS" : 
                         VSDGOPSTATUS=ControlValue("TG_OPSTATUS")
                         If Not IsBlank(VSDGOPSTATUS)
                            Then VSDGOPSTATUS=Upper(VSDGOPSTATUS)
                            Else VSDGOPSTATUS="N"
                         EndIf
                         Switch
                           Case VSDGOPSTATUS="S" : VSDGNOMOPSTATUS="Comissoes Pagas"
                           Case VSDGOPSTATUS="N" : VSDGNOMOPSTATUS="Comissoes a Pagar"
                         EndSwitch
                         Campo="TG_DTINI"
                    Case Campo="TG_DTINI"         : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"         : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO" : 
                         If VSDGOPSTATUS = "S"
                            Then Campo="YES"
                            Else Campo="TG_OPGERENCIA"
                         EndIf    
                    Case Campo="TG_OPGERENCIA"    :
                         If CheckTG_OPGERENCIA[1]
                            Then Campo="TG_DTREFERENTE"
                            Else Campo="YES"
                         EndIf 
                    Case Campo="TG_DTREFERENTE"   : 
                         VSDGDTREFERENTE=ControlValue("TG_DTREFERENTE")
                         If IsBlank(VSDGDTREFERENTE)
                            Then Mensagem("Informe a Data para Acerto")
                            Else If Not CheckTG_OPGERENCIA[1]
                                    Then VSDGDTREFERENTE=BlankDate()
                                         Campo="YES"  
                                    Else Campo="YES"    
                                 EndIf        
                         EndIf 
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
       MSG_CAMPO=""
  Case Campo="TG_OPSTATUS":
     MSG_CAMPO="Op‡„o: S=Comiss”es Pagas  N=Comiss”es a Pagar"      
  Case Campo="TG_DTREFERENTE":
     MSG_CAMPO="Informe a Data Referente"  
  Case Campo="TG_OPGERENCIA":
     MensagemCheckBoxes()
         
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ModeloRelatoriosCarregaLista()

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("01  Anal¡tico")
ModeloRelatoriosAdd("02  Sint‚tico")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

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

VSDGEMPRESA     =""
VSDGREPRESEN    =""
VSDGDTINI       =BlankDate()
VSDGDTFIM       =BlankDate()
VSDGDTREFERENTE = BlankDate() 
Gerou_Comissao_APagar = False
VSDGOPRELANALSINT =""


Array TG_OPGERENCIA[1]
TG_OPGERENCIA[1]="Atualizar comiss”es"

Array CheckTG_OPGERENCIA[ArraySize(TG_OPGERENCIA)]
CheckTG_OPGERENCIA[1]=False

ModeloRelatoriosCarregaLista()

While True
  ShowDialog "Comiss„o a Pagar por Representante/Vencimento" 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 16 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 "Status" For "TG_OPSTATUS"
    Accept @ 05,04 Width 04 "A1"  Picture "S,N" Tag "TG_OPSTATUS" To VSDGOPSTATUS
    Accept @ 05,09 Width 25 "A18"  Picture "!*!" Tag "TG_NOMOPSTATUS" To VSDGNOMOPSTATUS

    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

    Label  @ 00,35 "Comissäes nÆo Pagas" For "TG_OPGERENCIA"
    CheckBoxes @ 01,35 Height 1 Width 33 Tag "TG_OPGERENCIA"
    TG_OPGERENCIA[1] to CheckTG_OPGERENCIA[1]
    
    Label  @ 02,39 "como pagas em : " For "TG_DTREFERENTE"
    Accept @ 02,56 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREFERENTE" To VSDGDTREFERENTE

    @ 04,35 ?? "* Regras dos T¡tulos no per¡odo:"
    @ 05,35 ?? "    - Emitidos s¢ BOLETOS,"
    @ 06,35 ?? "    - Recebidos sem BOLETOS"

    Label  @ 09,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 10,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 10,06  Width 63 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO

    Pushbutton @ 12,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 12,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 not ValidarModelosRelatorios() then loop endif         

  If VSDGDTFIM=BlankDate()
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf
  
  If CheckTG_OPGERENCIA[1]
     Then If VSDGDTREFERENTE=BlankDate()
             Then Mensagem("Data para acerto n„o informado!")
                  Loop
          EndIF
  EndIf

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, processando")
  
  Tabela=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Ctarec\\Rm_0210A" Tabela 
  Empty Tabela

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    SELECIONA()
  EndWhile
  
  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela
          Loop
  EndIf
  
  If CheckTG_OPGERENCIA[1]
     Then BAIXA()
  EndIf   
  
  Gerou_Comissao_APagar=False

  If VSDGCODMODELO="01"
     Then IMPRIREL(Tabela,"R")
     Else IMPRIREL(Tabela,"1")
  EndIf
  
  Delete Tabela

EndWhile
ClearAll
Release Vars All
Release Procs All

