;** RM_0256B  ******************************************************************
;* Resumo das Entradas - Composicao de Dias                                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 24/07/2014 por Bruno Carvalho            
;Ultima Alteracao: 19/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: 23/01/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao script concentrador RM_0256, substitui RM_0760A

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

If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC")
   Then For i From 1 To 2
          {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
          Moveto [Numero do Lancamento    ] Check 
          Moveto [Codigo da Empresa       ] Check TypeIn "~VSDGEMPRESA2.."
          Moveto [Nome Fantasia Empresa   ] Check  
          Moveto [Data de Emissao         ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
          Moveto [Data de Entrada         ] Check
          Moveto [Tipo de Pagamento       ] Check
          If i = 1 
             Then TypeIn "V"
             Else TypeIn "P"
          EndIf     
          Moveto [Razao Social            ] Check TypeIn "as Descricao Tipo Pagamento"
          Moveto [Valor Desconto          ] Check
          Moveto [Valor Nota Fiscal       ] Check
          Do_It!
          ClearAll
       
          If Not IsEmpty("Answer")
             Then NR = NRecords("Answer")
                   
                  If i = 1 
                     Then View "Notaecv"
                          Coedit "Answer"
                          Scan
                            Barra(NR, RecNo())
                            Aguarde("Aguarde, Composi‡„o de Dias - A Vista "+BARRA_STRING)
                            
                            COM_DIAS = ""
                            [Descricao Tipo Pagamento] = ""
                            CopyToArray REG_NOTAEC
                            
                            ;---- Monta Composi‡Æo de Dias ---------------------
                            Moveto "Notaecv"
                            Moveto [Numero do Lancamento]
                            Locate REG_NOTAEC["Numero do Lancamento"]
                            If RetVal
                               Then COM_DIAS = "0"
                             EndIf
                             
                             Moveto "Answer"
                             If COM_DIAS <> ""  
                                Then [Descricao Tipo Pagamento] = COM_DIAS
                                     UnLockRecord
                             EndIf        
                          EndScan
                          Do_It!
                          ClearAll
                  EndIf       
                
                  If i = 2
                     Then View "Notaecp"
                          Coedit "Answer"
                          Scan for [Tipo de Pagamento] = "P"
                            Barra(NR, RecNo())
                            Aguarde("Aguarde, Composi‡„o de Dias - A Prazo "+BARRA_STRING)
                            
                            [Descricao Tipo Pagamento] = ""
                            CopyToArray REG_NOTAEC
                            
                            ;---- Monta Composi‡Æo de Dias ---------------------
                            Moveto "Notaecp"
                            Moveto [Numero do Lancamento]
                            Locate REG_NOTAEC["Numero do Lancamento"]
                            If RetVal
                               Then CONT     = 0
                                    COM_DIAS = ""
                                    NUM_PARC = 0
                                    
                                    While [Numero do Lancamento] = REG_NOTAEC["Numero do Lancamento"]
                                          CONT = CONT + 1
                                          
                                          If ([Data de Vencimento]-REG_NOTAEC["Data de Emissao"]) < 0
                                             Then AUX_COM_DIAS = "0000"
                                             Else AUX_COM_DIAS = AlinhM(StrVal([Data de Vencimento]-REG_NOTAEC["Data de Emissao"]),4)
                                          EndIf
                                                                                                                                           
                                          If Search(AUX_COM_DIAS,COM_DIAS) = 0
                                             Then NUM_PARC = NUM_PARC + 1
                                                  If Int(NumVal(AUX_COM_DIAS)) = 0 
                                                     Then If CONT > 1
                                                             Then COM_DIAS = AUX_COM_DIAS + "/" + COM_DIAS
                                                             Else COM_DIAS = AUX_COM_DIAS                         
                                                           EndIf
                                                     Else If CONT > 1
                                                             Then COM_DIAS = COM_DIAS + "/" + AUX_COM_DIAS
                                                             Else COM_DIAS = COM_DIAS + AUX_COM_DIAS
                                                          EndIf
                                                  EndIf            
                                          EndIf   
                                          
                                          Skip
                                          If Eot() Then QuitLoop EndIf
                                    EndWhile
                            
                                    CONT         = 0
                                    AUX_COM_DIAS = COM_DIAS
                                    Pos = Search("/",AUX_COM_DIAS)
                                    
                                    If Pos = 0
                                       Then COM_DIAS = StrVal(Int(NumVal(AUX_COM_DIAS)))
                                       Else COM_DIAS = ""
                                    EndIf   
                                    
                                    While Pos > 0
                                      INT_DIAS = Int(NumVal(SubStr(AUX_COM_DIAS,1,Pos-1)))
                                      If Pos <> 100000
                                         Then AUX_COM_DIAS = SubStr(AUX_COM_DIAS,Pos+1,Len(AUX_COM_DIAS))
                                      EndIf
                                      CONT = CONT + 1
                                      
                                      If CONT > 1
                                         Then COM_DIAS = COM_DIAS + "/" + StrVal(INT_DIAS)  
                                         Else COM_DIAS = COM_DIAS + StrVal(INT_DIAS)
                                      EndIf  
                                      If Pos = 100000
                                         Then QuitLoop 
                                      EndIf   
                                      
                                      Pos = Search("/",AUX_COM_DIAS)
                                      If Pos = 0
                                         Then Pos = 100000
                                      EndIf 
                                    EndWhile
                                    
                                    If COM_DIAS="" Or COM_DIAS=BlankNum()
                                       Then COM_DIAS = "0"
                                            NUM_PARC = 1
                                    EndIf
                             EndIf
                             
                             Moveto "Answer"
                             [Descricao Tipo Pagamento] = COM_DIAS  
                             UnLockRecord
                          EndScan
                          Do_It!
                          ClearAll
                          
                          Release Vars REG_NOTAEC,Pos,CONT,COM_DIAS,NUM_PARC,AUX_COM_DIAS,INT_DIAS
                  EndIF       
                 
                  If Not IsEmpty("Answer")
                     Then {Ask} {Answer}
                          Moveto [Numero do Lancamento    ] Example "NumL"
                          Moveto [Codigo da Empresa       ] Example "CodE"
                          Moveto [Nome Fantasia Empresa   ] Example "NomF"  
                          Moveto [Data de Emissao         ] Example "DatM"
                          Moveto [Tipo de Pagamento       ] Example "TipP" 
                          Moveto [Valor Desconto          ] Example "VrD"
                          Moveto [Valor Nota Fiscal       ] Example "VrF"
                          Moveto [Descricao Tipo Pagamento] Example "DesT"
                          {Ask} TypeIn Tabela Enter "Fast Insert" Enter
                          Moveto [Numero do Lancamento    ] Example "NumL"
                          Moveto [Codigo da Empresa       ] Example "CodE"
                          Moveto [Nome Fantasia Empresa   ] Example "NomF"  
                          Moveto [Data de Emissao         ] Example "DatM"
                          Moveto [Tipo de Pagamento       ] Example "TipP"  
                          Moveto [Valor Desconto          ] Example "VrD"
                          Moveto [Valor Nota Fiscal       ] Example "VrF"
                          Moveto [Descricao Tipo Pagamento] Example "DesT"
                          Do_It!
                          ClearAll
                  EndIf      
          EndIF    
        EndFor
EndIf

EndProc ;Seleciona()

;*******************************************************************************
;* Rotina para Processar Registros                                             *
;*******************************************************************************
Proc RM_0256B_Processa()
Private Pos,CONT,COM_DIAS,NUM_PARC,AUX_COM_DIAS,INT_DIAS,REG_NOTAEC

;***** 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
   Else {Ask} {\\Sistemas\\Cadastro\\Empresas}
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Nome Fantasia Empresa  ] Example "nemp"
        {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Nome Fantasia Empresa  ] TypeIn "changeto _nemp"
        Do_It!
        ClearAll
EndIf

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa       ] Check
Moveto [Descricao Tipo Pagamento] Check TypeIn "Calc Count All as Notas" 
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa       ] Example "CodE"
Moveto [Descricao Tipo Pagamento] Example "CondP"
Moveto [Notas                   ] Example "Notas"
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa       ] Example "CodE"
Moveto [Descricao Tipo Pagamento] Example "CondP"
Moveto [Notas                   ] TypeIn "Changeto _Notas"
Do_It!
ClearAll

;---- Calculando porcentagem das notas conforme condi‡Æo de pagamento ---------- 
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa] Check  
Moveto [Valor Nota Fiscal] TypeIn "Calc Sum as Valor"
Do_It!
ClearAll

AUX    = 0

View "Answer"
Scan
  AUX = [Valor]       
EndScan
ClearAll

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa       ] Check
Moveto [Descricao Tipo Pagamento] Check
Moveto [Valor Nota Fiscal       ] TypeIn "Calc Sum as Valor"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa       ] Example "CodE" 
Moveto [Descricao Tipo Pagamento] Example "CodP"
Moveto [Valor                   ] Example "Vr"
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa       ] Example "CodE"
Moveto [Descricao Tipo Pagamento] Example "CodP"
Moveto [Porcentagem             ] TypeIn "Changeto (_Vr * 100) / ~AUX"
Do_It!
ClearAll


{Ask} TypeIn Tabela Enter 
Moveto [Codigo da Empresa       ] Check
Moveto [Descricao Tipo Pagamento] Check
Moveto [Valor Nota Fiscal       ] TypeIn "Calc Sum as Valor"
Do_It!
ClearAll 

Sort "Answer" On "Valor" D
ClearAll

CONTADOR = 0
Coedit "Answer"  
Scan
  CONTADOR = CONTADOR + 1
  [Valor] = CONTADOR
EndScan
Do_It!
ClearAll 

View "Answer"
Coedit Tabela
Scan
  COND_PAGTO = [Descricao Tipo Pagamento]
   
  Moveto "Answer"
  Moveto [Descricao Tipo Pagamento]
  Locate COND_PAGTO
  If RetVal
     Then VALOR = AlinhM(StrVal(NumVal([Valor])),4)
     Else Moveto Tabela
          Loop
  EndIf
  Moveto Tabela
  [Descricao Tipo Pagamento] = VALOR + " " + [Descricao Tipo Pagamento]
EndScan
Do_It!
ClearAll

EndProc ;Processa()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0256B_Principal()

AGUARDE("Aguarde, Gerando o Relat¢rio")

Tabela = Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Estoque\\RM_0760" Tabela
Empty Tabela

Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  RM_0256B_Seleciona()
EndWhile

If not IsEmpty(Tabela)
   then
        RM_0256B_Processa()

       ;switch
       ;  case VSDGOPRELCODALFRANK2="2"  : Seta_Ordem_Report(Tabela,"8","Codigo do Item","Descricao do Item"  ,"")
       ;  case VSDGOPRELCODALFRANK2="3"  : Seta_Ordem_Report(Tabela,"8","Codigo do Item","Compras_Quantidade" ,"D")
       ;  case VSDGOPRELCODALFRANK2="4"  : Seta_Ordem_Report(Tabela,"8","Codigo do Item","Compras_Preco Total","D")
       ;endswitch

        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_0256B_Principal()

Release Vars Tabela
Release Procs RM_0256B_Principal, RM_0256B_Seleciona, RM_0256B_Processa
