;** AC_DUPCM *******************************************************************
;* Ajustes na Valor e Saldo da Comissao na Duplic e DupBaixa conforme NOTA     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 10/09/2018 por Bruno Carvalho
;Ultima Alteracao:   /  /     por                     
;Motivo Alteracao:       

;*******************************************************************************
;Rotina Corre‡Æo de Tabelas                                                    *
;*******************************************************************************
Proc Correcao_Tabelas_VendasEspecial()

If SYS_CODIGO_CLIENTE<>"0388" Or Search("FECHANO",Upper(Diretorio))>0 
   Then Return
EndIf   

If IsTable("NotaC") 
   Then DATAM_EMPRESA                     = "***"
        DATAM_PARAM_COMISSAO_JUROS_DESCTO = ""
        View "\\Sistemas\\Ctarec\\DupBaixa"
        View "\\Sistemas\\Ctarec\\Duplic"
        CoEdit "NotaC"
        Scan
          Barra(NRecords("NotaC"), RecNo())
          Aguarde("Aguarde, ajustando o valor/saldo da comissÆo "+BARRA_STRING)
          
          If DATAM_EMPRESA<>[Codigo da Empresa]
             Then DATAM_EMPRESA = [Codigo da Empresa]
                  GetRecord "\\Sistemas\\Ctarec\\P_Duplic" DATAM_EMPRESA To REG_DATAM_DUPLIC
                  If RetVal
                    Then DATAM_PARAM_COMISSAO_JUROS_DESCTO = REG_DATAM_DUPLIC["Comissao_Juros_Descto"]
                  EndIf  
          EndIf   
          
          DATAM_CHV_EMPRESA   = [Codigo da Empresa        ]
          DATAM_CHV_TPDOCTO   = [Codigo do Documento      ]
          DATAM_CHV_NUMERO    = [Numero do Documento      ]    
          DATAM_PORC_COMISSAO = [Comissao do Representante]
          
          If DATAM_PORC_COMISSAO=0 Or IsBlank(DATAM_PORC_COMISSAO) 
             Then Loop
          EndIf   
          
          Moveto "\\Sistemas\\Ctarec\\Duplic"
          Moveto [Codigo da Empresa]
          Locate IndexOrder by "Inddup30" DATAM_CHV_EMPRESA,DATAM_CHV_TPDOCTO,DATAM_CHV_NUMERO
          If RetVal 
             Then If [Valor da Comissao]=0 Or IsBlank([Valor da Comissao])
                     Then While [Codigo da Empresa   ]=DATAM_CHV_EMPRESA And
                                [Tipo Docto Gerador  ]=DATAM_CHV_TPDOCTO And
                                [Numero Docto Gerador]=DATAM_CHV_NUMERO  And
                                [Sequencia Gerador   ]>""     
                            
                            DATAM_DUPLIC_VALOR_DOCTO  = [Valor do Documento  ]
                            DATAM_DUPLIC_SALDO_DOCTO  = [Saldo do Documento  ]
                             
                            DATAM_VSD_I_Vr_Comissao   = 0
                            
                            [Valor da Comissao]       = NDecimal(((DATAM_DUPLIC_VALOR_DOCTO)*DATAM_PORC_COMISSAO)/100,2)
                            [Saldo da Comissao]       = [Valor da Comissao ]
                            AUX_SALDO_DOCTO           = [Valor do Documento]            ;Ter  o saldo decrementado
                            
                            ;---- Apurando o valor das baixas --------------------------
                            Moveto "\\Sistemas\\Ctarec\\DupBaixa"
                            Moveto [Numero do Lancamento]
                            Locate [\Sistemas\Ctarec\Duplic->Numero do Lancamento]
                            If RetVal
                               Then While [Numero do Lancamento] = [\Sistemas\Ctarec\Duplic->Numero do Lancamento]
                                      DATAM_VSD_I_Vr_Descto = [Valor do Desconto]            
                                      If IsBlank(DATAM_VSD_I_Vr_Descto) Then DATAM_VSD_I_Vr_Descto=0 EndIf
                                      
                                      TXCOMIS=(([Valor do Recebimento]+DATAM_VSD_I_Vr_Descto-[Valor do Juros])*100)/(AUX_SALDO_DOCTO)
                                      AUX_SALDO_DOCTO = AUX_SALDO_DOCTO-([Valor do Recebimento]+DATAM_VSD_I_Vr_Descto-[Valor do Juros])
                                      
                                      VSD_I_Vr_Comissao=NDecimal((([\Sistemas\Ctarec\Duplic->Saldo da Comissao])*TXCOMIS)/100,2)
                                      
                                      If VSD_I_Vr_Comissao=([\Sistemas\Ctarec\Duplic->Saldo da Comissao]+0.01) Or
                                         VSD_I_Vr_Comissao=([\Sistemas\Ctarec\Duplic->Saldo da Comissao]-0.01)   
                                         Then VSD_I_Vr_Comissao=[\Sistemas\Ctarec\Duplic->Saldo da Comissao]   
                                      EndIf
                                      
                                      [\Sistemas\Ctarec\Duplic->Saldo da Comissao] = 
                                                                NDecimal([\Sistemas\Ctarec\Duplic->Saldo da Comissao]-VSD_I_Vr_Comissao,2)   
                                      [Valor da Comissao    ] = NDecimal(VSD_I_Vr_Comissao,2)
                                      DATAM_VSD_I_Vr_Comissao = DATAM_VSD_I_Vr_Comissao + [Valor da Comissao]
                                      Skip
                                      If Eot() Then QuitLoop EndIF
                                    EndWhile
                                    Moveto "\\Sistemas\\Ctarec\\Duplic"
                                    [Saldo da Comissao] = [Valor da Comissao] - DATAM_VSD_I_Vr_Comissao
                               Else Moveto "\\Sistemas\\Ctarec\\Duplic"
                                    [Saldo da Comissao] = [Valor da Comissao]     
                            EndIf    
                            Skip 
                            If EOT() Then QuitLoop EndIf
                            Locate Next IndexOrder by "Inddup30" DATAM_CHV_EMPRESA,DATAM_CHV_TPDOCTO,DATAM_CHV_NUMERO
                            If Not RetVal Then Quitloop EndIf
                          EndWhile   
                          UnLockRecord
                  EndIf
          EndIf
          Moveto "NotaC"
        EndScan     
        Do_It!
        ClearAll
          
        Release Vars DATAM_PARAM_COMISSAO_JUROS_DESCTO,DATAM_VSD_I_Vr_Comissao,
                     DATAM_DUPLIC_SALDO_DOCTO,DATAM_VSD_I_Vr_Descto,
                     DATAM_DUPLIC_VALOR_DOCTO,DATAM_PORC_COMISSAO,
                     AUX_SALDO_DOCTO
EndIf    

EndProc ;Correcao_Tabelas_VendasEspecial()

;*******************************************************************************
;Rotina Principal
;*******************************************************************************
Autolib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
SYS_VALOR()

While True
  If Verifica_Usuario()
     Then QuitLoop
     Else ConfGeral("Comunicar os usuarios !// //Deseja Continuar com Atualizacao ?")
          If OK<>"S"
             Then Exit
          EndIf
  EndIf
EndWhile

MSG = Completa("Ajustes no valor e saldo da comissÆo no Contas a Receber!",69," ")+"//"+
      Completa("Este  processo  ir   ajustar  o  valor  e saldo do comissionamento na",69," ")+"//"+
      Completa("Duplic e na DupBaixa conforme a nota localizada!",69," ")+"////"+
      Completa("- Ocorrer  ajustes somente em lan‡amentos que o valor da comissÆo for",69," ")+"//"+
      Completa("  ZERO ou branco!",69," ")+"//"+
      Completa("Deseja continuar com este processo?",69," ") 

ConfGeral(MSG)
If Ok<>"S"
   Then Release Vars All
        Release Procs All
        Return
EndIf

MSG = "Deseja realizar o BACKUP da DUPLIC e DUPBAIXA?"
ConfGeral(MSG)
If Ok="S"
   Then Aguarde("Copiando a tabela DUPLIC para BK_DUP !")
        Copy "\\Sistemas\\Ctarec\\DupBaixa" "\\Sistemas\\Ctarec\\BK_DUPBX" 
        Copy "\\Sistemas\\Ctarec\\Duplic"   "\\Sistemas\\Ctarec\\BK_DUP"
EndIf

;************************** VENDAS/FECHAMES/ESPECIAL ***************************
Diretorio="\\Sistemas\\Vendas\\"
Diretorios_Fechames_C(Diretorio)
Array_Diretorios[1]=""
For i From 1 to DynArraySize(Array_Diretorios)
  If i=1  
     Then Diretorio="\\Sistemas\\Vendas"
     Else Diretorio="\\Sistemas\\Vendas\\Fechames\\"+Array_Diretorios[i]
  EndIf   
  Aguardes("Atualizando Pasta: "+Diretorio)
  {Tools} {More} {Directory} TypeIn Diretorio Enter
          
  Correcao_Tabelas_VendasEspecial() 
  LimpAguarde()
EndFor    
LimpAguardes()

;-------------------------------------------------------------------------------
SetDir "\\Sistemas\\Ctarec"
FastMsg("Processo realizado com sucesso!")

Release Vars All
Release Procs All
