;** Rm_0025E  ******************************************************************
;*  Relatorio de Notas Fiscais Transportadora/ Frete Calculado                 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 04/05/2015 por Luis Gustavo
;Ultima Alteracao: 10/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 03/10/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes check campos notai                  
;Ultima Alteracao: 28/01/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes chamada principal RM_0025

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc RM_0029E_Seleciona()
ClearAll 
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC")
   Then {Ask} {\\Sistemas\\Cadastro\\Destinat}
        Moveto [Codigo                 ] Example "clie" TypeIn ", ~VSDGDESTINAT.."   
        If CIDADE<>""
           Then Moveto [Cidade         ] TypeIn CIDADE
        EndIf
        Moveto [UF                     ] TypeIn "~VSDGESTADO.."
        Moveto [Codigo da Area         ] Check TypeIn "~VSDGAREA.."
        Moveto [Descricao da Area      ] Check
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter Check
        Moveto [Codigo da Empresa       ] Example "cemp" TypeIn " ,~VSDGEMPRESA.."
        If IsBlank(VSDGNCARREG)
            Then Switch
                   Case VSDGOPDTES="1" : Moveto [Data de Emissao ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                   Case VSDGOPDTES="2" : Moveto [Data de Saida   ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                  EndSwitch
           Else Moveto [Numero_Carregamento] TypeIn "~VSDGNCARREG.."        
        EndIf
        Moveto [Numero do Documento     ] Example "num"
        Moveto [Serie do Documento      ] Example "ser"    
        Moveto [Codigo                  ] Example "clie"
        Moveto [Codigo da Transportadora] TypeIn "~VSDGTRANSP.."
        Moveto [Codigo da Destinacao    ] TypeIn "~VSDGDESTIN.."
        Moveto [Frete por Conta         ] TypeIn "~VSDGFRETEPC.."
        Moveto [Codigo do Representante ] TypeIn "~VSDGREPRESEN.."
        Moveto [Placa do Veiculo        ] TypeIn "~VSDGVEICULO.."
        Moveto [Situacao                ] TypeIn "Not C"
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter 
        Moveto [Codigo da Empresa       ] Example "cemp"
        Moveto [Numero do Documento     ] Example "num"
        Moveto [Serie do Documento      ] Example "ser"
        Moveto [Item do Documento       ] Check
        Moveto [Codigo do Item          ] Check Example "cit"
        Moveto [Descricao do Item       ] Check 
        Moveto [Quantidade              ] Check 
        Moveto [Quantidade              ] Check 
        Moveto [Unidade Fiscal          ] Check 
        Moveto [Preco Total             ] Check 
        Moveto [Valor Desconto Total    ] Check 
        Moveto [ICMS_CredSN_Valor       ] Check 
        Moveto [ICMS_ST_Aliquota        ] Check 
        Moveto [ICMS_ST_Valor           ] Check 
        Moveto [Aliquota Reduzida BCICMS] Check 
        Moveto [Situacao_Item           ] TypeIn "Not C"
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item           ] Example "cit"
        Moveto [Fator Conversao Embalagem] Check
        Moveto [Unidade Embalagem        ] Check
        Moveto [Codigo da Familia        ] Check
        Moveto [Descricao da Familia     ] Check 
        Do_It! 
        ClearAll
        
EndIf
EndProc ; (RM_0029E_Seleciona)

;*******************************************************************************
;   Calcula Comissao Frete por Item e Total                                    *
;*******************************************************************************
Proc RM_0029E_Calcula_ComissaoFrete()

{Ask} TypeIn Tabela Enter 
Moveto [ICMS_ST_Aliquota         ] TypeIn "Changeto Blank"  ;Utilizado p/ guardar Porcentagem de comissao da area
Moveto [Aliquota Reduzida BCICMS ] TypeIn "Changeto Blank"  ;Utilizado p/ guardar Porcentagem de comissao da familia
Moveto [ICMS_CredSN_Valor        ] TypeIn "Changeto Blank"  ;Utilizado p/ guardar o total do calculo do frete, por item
Moveto [ICMS_ST_Valor            ] TypeIn "Changeto Blank"  ;Utilizado p/ guardar o total do calculo do frete, por EmitDest
Do_It!
ClearAll    

For i from 1 To 2

  {Ask} TypeIn Tabela Enter Check
  If i = 1
     Then Moveto [Codigo da Area        ] Example "codarea" 
     Else Moveto [Codigo da Familia     ] Example "codfam" 
  EndIf 
  If i = 1
     Then {Ask} "\\Sistemas\\Cadastro\\Area" Enter
          Moveto [Codigo da Area        ] Example "codarea"
          Moveto [Comissao_Frete_Area   ] Check
     Else {Ask} "\\Sistemas\\Estoque\\Familia" Enter
          Moveto [Codigo da Familia     ] Example "codfam"
          Moveto [Comissao_Frete_Familia] Check   
  EndIf        
  Do_It!
  ClearAll
  
  {Ask} "Answer" Enter 
  Moveto [Codigo do Item           ] Example "codite"
  Moveto [Numero do Documento      ] Example "numdoc"
  Moveto [Item do Documento        ] Example "itemdoc"
  If i = 1
     Then Moveto [Comissao_Frete_Area      ] Example "comarea"
     Else Moveto [Comissao_Frete_Familia   ] Example "comfam" 
  EndIf   
  {Ask} TypeIn Tabela Enter
  Moveto [Codigo do Item           ] Example "codite"
  Moveto [Numero do Documento      ] Example "numdoc"
  Moveto [Item do Documento        ] Example "itemdoc"
  If i = 1 
     Then Moveto [ICMS_ST_Aliquota        ] TypeIn "Changeto" Example " comarea"
     Else Moveto [Aliquota Reduzida BCICMS] TypeIn "Changeto" Example " comfam" 
  EndIf   
  Do_It!
  ClearAll

EndFor
               
CoEdit Tabela
Moveto [ICMS_ST_Aliquota]
Scan                             ;**** Calcula a comissao do item em cima do valor do Produto ****
 If Not IsBlank([Aliquota Reduzida BCICMS]) 
    Then [ICMS_CredSN_Valor] = (([Preco Total]*[Aliquota Reduzida BCICMS])/100)
    Else [ICMS_CredSN_Valor] = (([Preco Total]*[ICMS_ST_Aliquota])/100)
         [Aliquota Reduzida BCICMS] = [ICMS_ST_Aliquota]     ;* Recebendo a porcetagem da area para ser mostrado no relatorio*  
 EndIf
EndScan 
Do_It!
ClearAll

{Ask} TypeIn Tabela Enter
Moveto [Numero do Documento] Check
Moveto [ICMS_CredSN_Valor  ] TypeIn "Calc sum as FreteTotal"
Do_It!
ClearAll  

{Ask} "Answer" Enter
Moveto [Numero do Documento] Example "numdoc"
Moveto [FreteTotal         ] Example "fretetotal"
{Ask} TypeIn Tabela Enter          
Moveto [Numero do Documento] Example "numdoc"
Moveto [ICMS_ST_Valor      ] TypeIn "changeto" Example " fretetotal"
Do_It!
ClearAll

If VSDGCODMODELO="2EB"   ;Sint‚tico
   Then {Ask} TypeIn Tabela Enter 
        Moveto [Codigo da Empresa       ] Check
        Moveto [Nome Fantasia Empresa   ] Check
        Moveto [Codigo da Destinacao    ] Check
        Moveto [Descricao da Destinacao ] Check
        Moveto [Codigo da Transportadora] Check
        Moveto [Nome Fantasia Transport ] Check
        Moveto [Data de Emissao         ] Check
        Moveto [Numero do Documento     ] Check
        Moveto [Numero do Pedido        ] Check
        Moveto [Codigo                  ] Check
        Moveto [Nome Fantasia EmitDest  ] Check
        Moveto [Valor do Frete          ] Check
        Moveto [Valor Nota Fiscal       ] Check
        Moveto [Peso Liquido            ] Check
        Moveto [Numero de Volumes       ] Check
        Moveto [ICMS_ST_Valor           ] Check
        Moveto [Descricao da Area       ] Check
        Do_It!
        ClearAll
        Rename "Answer" Tabela
EndIf        

EndProc

;*******************************************************************************
;  Processa dados                                                              *
;*******************************************************************************
Proc RM_0029E_Processa()

{Ask} TypeIn Tabela Enter
Moveto [Numero do Documento] Check
Do_It!
ClearAll
          
View Tabela          
Coedit "Answer"
Scan
  Achou=True
  Moveto Tabela
  Moveto [Numero do Documento]            
  Locate [Answer->Numero do Documento] 
  While [Numero do Documento] = [Answer->Numero do Documento] 
     [Numero de Parcelas] = BlankNum()
     If [Numero de Volumes]<>BlankNum()
        Then If Achou
                Then Achou = False
                     [Numero de Parcelas] = [Numero de Volumes]
                     UnLockRecord
             EndIf                            
     EndIf
     Skip
     If Eot() Then QuitLoop EndIf              
  EndWhile
  Moveto "Answer"            
EndScan                       
Do_It!
ClearAll
Delete "Answer"                              
     
Sort Tabela on "Codigo da Empresa","Numero do Documento","Serie do Documento"
ClearAll
                    
empant="***"
docant="***"
serant="***"
Edit Tabela
Scan

  If [Codigo da Empresa  ]<>empant Or
     [Numero do Documento]<>docant Or
     [Serie do Documento ]<>serant
     Then empant=[Codigo da Empresa  ]
          docant=[Numero do Documento]
          serant=[Serie do Documento ]
          
          [Peso Bruto  ]=1
     Else [Peso Liquido]=BlankNum()
          [Peso Bruto  ]=BlankNum()
  EndIf
  
EndScan
Do_It!
ClearAll
          
EndProc   
  
;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0029E_Principal()

AGUARDE("Aguarde, gerando o relat¢rio")
Tabela=Cria_Temp(PrivDir())

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

If not IsEmpty(Tabela)
   then If VSDGCODMODELO="2EA"
           Then RM_0029E_Processa()
        EndIf
           
        RM_0029E_Calcula_ComissaoFrete()
         
        If VSDGCODMODELO="2EA"
           Then CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2005" "2" Tabela "R"
           Else CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2005" "1" Tabela "R"
        EndIf
      
        IMPRIREL(Tabela,"R")
      
        Delete Tabela
   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_0029E_Principal()

Release Vars Tabela
Release Procs RM_0029E_Principal, RM_0029E_Seleciona, RM_0029E_Processa, RM_0029E_Calcula_ComissaoFrete