;** RM_0246B *******************************************************************
;* Resumo das Operacoes ECF's - Formas Pagto                                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 27/04/2002 por Anivel Augusto Rodrigues
;Ultima Alteracao: 08/09/2004 por Jos‚ Lu¡s Ameno da Silva
;Motivo Alteracao: PrivDir
;Ultima Alteracao: 19/10/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cupom
;Ultima Alteracao: 17/08/2012 por Bruno Carvalho e Kamila
;Motivo Alteracao: Ajustado report e ASK p/ quebrar por tipo de documento
;Ultima Alteracao: 06/09/2012 por Kamila Gomes        
;Motivo Alteracao: Ajustado filtro por tipo de documento
;Ultima Alteracao: 20/12/2012 por Kamila Gomes        
;Motivo Alteracao: Ajustado Valor Vendas Liquidas
;Ultima Alteracao: 13/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 11/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CL=CartÆo Parcelado
;Ultima Alteracao: 05/08/2017 por Bruno Carvalho
;Motivo Alteracao: Substituido [Valor IR] -> [Valor DebitoCredito]
;Ultima Alteracao: 14/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes demonstrar apenas formas de pagamento, outros dados j  estÆo no rm_0249 conferencia Reduzao Z
;Ultima Alteracao: 25/01/2018 por Kamila Gomes
;Motivo Alteracao: Ajustes checkplus forma de pagamento
;Ultima Alteracao: 17/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes NFCE                   
;Ultima Alteracao: 10/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes agrupado RM_0246    
;Ultima Alteracao: 10/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes substituido RM_0243    

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc RM_0246B_SELECIONA()
ClearAll

If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV")
   Then
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa       ] Example "cemp" Check TypeIn "!, ~VSDGEMPRESA.."
        Moveto [Numero do Documento     ] Example "ndoc" Check TypeIn "!"
        Moveto [Serie do Documento      ] Example "sdoc" Check TypeIn "!"
        Moveto [Codigo do Documento     ] TypeIn "~VSDGTPDOCTO.."

        switch
          case EXECUTOR_RM_0246A=true : ; todos tipos de documento
          
          otherwise:
            Moveto [Tipo do Documento      ] TypeIn "CUP.. or NFCE"
            If VSDGCODMODELO="01B"
               then Moveto [Situacao               ] TypeIn "Not C"
            Endif   
           
        endswitch

        Moveto [Nome Fantasia Empresa   ] Check
        Moveto [Tipo de Pagamento       ] Check TypeIn "V Or P"
        Moveto [Data de Emissao         ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Hora de Saida           ] Check
        Moveto [Valor Desconto          ] Check
        Moveto [Valor Mercadoria Liquido] Check
        Moveto [Valor Nota Fiscal       ] Check
        Moveto [Valor DebitoCredito     ] Check
        Moveto [Descricao da Destinacao ] TypeIn "..VEND.. or ..SERV.. OR ..SAIDA.."
        Moveto [Tipo Movimento Estoque  ] TypeIn "S"
        Moveto [Situacao                ] Check
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV" Enter
        Moveto [Codigo da Empresa       ] Example "cemp"
        Moveto [Numero do Documento     ] Example "ndoc"
        Moveto [Serie do Documento      ] Example "sdoc"
        Moveto [Forma de Pagamento      ] CheckPlus
        Moveto [Nome do Cartao          ] CheckPlus
        Moveto [Valor                   ] CheckPlus
        Moveto [Data                    ] CheckPlus
        Do_It!
        ClearAll
        
        For i From 1 To 2
          {Ask} {Answer} TypeIn "Fast Delete"
          If i=1
             Then Moveto [Data de Emissao        ] TypeIn "~VSDGDTINI"
                  Moveto [Hora de Saida          ] TypeIn "<~VSDGHRINI"
             Else Moveto [Data de Emissao        ] TypeIn "~VSDGDTFIM"
                  Moveto [Hora de Saida          ] TypeIn ">~VSDGHRFIM"
          EndIf
          Do_It!
          ClearAll
        EndFor
        
        RM_0246B_Adiciona_Dados()
endif

EndProc

;*******************************************************************************
;* Rotina adicionar dados na Db temporaria                                     *
;*******************************************************************************
Proc RM_0246B_Adiciona_Dados()

If IsEmpty("Answer")
   Then Return
EndIf

If SYS_CODIGO_CLIENTE="0078"
   Then {Ask} {\\Sistemas\\Posto\\FPgtoECF}
        Moveto [Tipo do Pagamento      ] Example "fpg"
        Moveto [Tipo de Pagamento      ] Example "tp"
        {Ask} {Answer} ;TypeIn "Fast"
        Moveto [Forma de Pagamento     ] Example "fpg"
        Moveto [Tipo de Pagamento      ] TypeIn "Changeto " Example "tp"
        Do_It!
        ClearAll
EndIf

{Ask} {\\Sistemas\\Cadastro\\TpPagto}
Moveto [Tipo do Pagamento       ] Example "fpg"
Moveto [Descricao Tipo Pagamento] Check
{Ask} {Answer} CheckPlus
Moveto [Forma de Pagamento      ] Example "fpg" TypeIn "!"
Do_It!
ClearAll

View Tabela
Edit "Answer"
Scan For [Situacao]<>"C"

   Moveto Tabela
   Moveto [Codigo da Empresa]
   Locate [Answer->Codigo da Empresa],[Answer->Serie do Documento],"0",[Answer->Forma de Pagamento],[Answer->Nome do Cartao]
   If Not RetVal                        
      Then End Down
           [Codigo da Empresa       ]=[Answer->Codigo da Empresa       ]
           [Serie do Documento      ]=[Answer->Serie do Documento      ]
           [Tipo Registro           ]="0"
           [Forma de Pagamento      ]=[Answer->Forma de Pagamento      ]
           [Nome do Cartao          ]=[Answer->Nome do Cartao          ]
           [Descricao Tipo Pagamento]=[Answer->Descricao Tipo Pagamento]+"/"+[Nome do Cartao]
           [Nome Fantasia Empresa   ]=[Answer->Nome Fantasia Empresa   ]
   EndIf
   If [Answer->Tipo de Pagamento]="V"
      Then [Valor a Vista]=[Valor a Vista]+[Answer->Valor]
           [Valor Total  ]=[Valor Total  ]+[Answer->Valor]
      Else If [Answer->Data]=[Answer->Data de Emissao]
              Then If ([Answer->Forma de Pagamento]="NO" Or
                       [Answer->Forma de Pagamento]="CO" Or
                       [Answer->Forma de Pagamento]="CT" Or
                       [Answer->Forma de Pagamento]="CL")
                      Then [Valor a Prazo]=[Valor a Prazo]+[Answer->Valor]
                           [Valor Total  ]=[Valor Total  ]+[Answer->Valor]
                      Else [Valor a Vista]=[Valor a Vista]+[Answer->Valor]
                           [Valor Total  ]=[Valor Total  ]+[Answer->Valor]
                    EndIf
               Else [Valor a Prazo]=[Valor a Prazo]+[Answer->Valor]
                    [Valor Total  ]=[Valor Total  ]+[Answer->Valor]
           EndIf
           
   EndIf
   Moveto "Answer"
EndScan
Do_It!
ClearAll 

EndProc

;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc RM_0246B_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
   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

EndProc    ;  (Processa)


;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0246B_Principal()

AGUARDE("Aguarde, gerando o relat¢rio")

Tabela=Cria_Temp(PrivDir())
Empty "\\Base\\Sistemas\\Vendas\\Rm_0243"
Copy "\\Base\\Sistemas\\Vendas\\Rm_0243"  Tabela

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

If not IsEmpty(Tabela)
   Then 
        RM_0246B_Processa()

        IMPRIREL(Tabela,"R")
  
   Else MENSAGEM("N„o existem registros a processar")
EndIf

Delete Tabela
EndProc

;-- Chamada principal ----------------------------------------------------------
RM_0246B_Principal()

Release Vars Tabela
Release Procs RM_0246B_Principal, RM_0246B_Seleciona, RM_0246B_Adiciona_Dados, RM_0246B_Processa 
