;** XX_1200B *******************************************************************
;* Relatorio Controle de Caixa                                                 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 13/04/2005 por Anivel augusto Rodrigues
;Ultima Alteracao: 14/11/2005 por Nikolas M. Mateus
;Motivo Alteracao: Inclusao do filtro por destinacao
;Ultima Alteracao: 06/04/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Saldo Calculdado/Real/Diferenca
;Ultima Alteracao: 21/05/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Troca na Venda                 
;Ultima Alteracao: 17/06/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Troca na Venda Credito         
;Ultima Alteracao: 13/07/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes historico                      
;Ultima Alteracao: 14/04/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sequencia Venda/Troca 
;Ultima Alteracao: 21/05/2014 por Luis Gustavo
;Motivo Alteracao: Relatorio Analitico e Sintetico, inclusao Outras Opera‡äes  
;Ultima Alteracao: 24/09/2014 por Kamila Gomes
;Motivo Alteracao: Ajustes Proc SelecionaVendas_Devolucoes()
;Ultima Alteracao: 07/10/2014 por Luis Gustavo
;Motivo Alteracao: Ajustes Proc SelecionaVendas_Devolucoes(). Estava somando errado.
;Ultima Alteracao: 10/10/2014 por Luis Gustavo
;Motivo Alteracao: Adicionado na Proc SelecionaVendas_Devolucoes() o Sys_codigo_cliente da Auditoria
;Ultima Alteracao: 22/10/2014 por Luis Gustavo
;Motivo Alteracao: Ajustes na rotina de vendas a prazo com entrada, estava mostrando o titulos duas vezes
;Ultima Alteracao: 21/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes inclusao titulo de credito     
;Ultima Alteracao: 24/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes inclusao SelecionaRecebimentos2(), calculo saldo com juros e descontos
;Ultima Alteracao: 12/01/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado VSDG_USUCONTA p/ ser exibido apenas p/ usu rios daquele registro pertecente …quela conta
;Ultima Alteracao: 25/01/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes SelecionaRecebimentos2() onde estava com CHECK, cancelando determinados campos necess rios para o funcionamento da rotina 
;Ultima Alteracao: 26/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro por usuario e vrjuros/descto no acerto
;Ultima Alteracao: 27/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes bug
;Ultima Alteracao: 17/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos colunas de valores
;Ultima Alteracao: 09/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Acerto, calculo diferencas  
;Ultima Alteracao: 18/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Vendas-Devolucoes  
;Ultima Alteracao: 19/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Moedas, Vendedores 
;Ultima Alteracao: 27/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes soma cheques acerto
;Ultima Alteracao: 27/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes despresar baixas por acerto Recebimentos/Pagamentos
;Ultima Alteracao: 27/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes DN entrada/saida
;Ultima Alteracao: 03/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Calculo Saldo   
;Ultima Alteracao: 07/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes imprime s¢ Faturamento, TOTACERTO
;Ultima Alteracao: 08/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Calculo Saldo   
;Ultima Alteracao: 04/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes totalizador Vendedores 
;Ultima Alteracao: 06/07/2016 por Bruno Carvalho
;Motivo Alteracao: Erro de sintaxe "For i form" / Ausˆncia de um EndIf na estrutura de condi‡Æo na proc Imprimir()
;Ultima Alteracao: 09/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes total moedas recebimentos 
;Ultima Alteracao: 12/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 11/04/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mais colunas divina panela   
;Ultima Alteracao: 05/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes doctos cancelados             
;Ultima Alteracao: 11/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CL=CartÆo Parcelado
;Ultima Alteracao: 13/07/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo p/ exibir justificativa de cancelamento quando ocorrer cancelamento 
;Ultima Alteracao: 14/07/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes    processo p/ exibir justificativa de cancelamento quando ocorrer cancelamento 
;Ultima Alteracao: 17/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Vendedores, moedas
;Ultima Alteracao: 02/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro por usuario/conta
;Ultima Alteracao: 04/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TotalVendedores(), nomecartao
;Ultima Alteracao: 05/08/2017 por Bruno Carvalho
;Motivo Alteracao: Substituido [Valor INSS] -> [Valor TC]
;Ultima Alteracao: 10/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes numero parcelas cartao       
;Ultima Alteracao: 12/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes checagem recebimentos/pagamentos
;Ultima Alteracao: 28/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes checagem recebimentos/pagamentos em acertos
;Ultima Alteracao: 29/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes varios cartoes por nota
;Ultima Alteracao: 22/11/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gravarecebimentos("CX2")
;Ultima Alteracao: 23/11/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes codigo moeda blank            
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()

;*******************************************************************************
;* Rotina p/ Selecionar Vendas                                                 *
;*******************************************************************************
Proc SelecionaVendas_Devolucoes()
private i,AUX_DESCRICAO

Tabela_Vendedores=Cria_Tabela("","Codigo(A4*),Nome(A20),Vendas($),Devolucoes($)")
Tabela_Moedas    =Cria_Tabela("","Codigo(A3*),NomeCartao(A20*),Nome(A20),Contador(S),Entradas($),Saidas($)")
Tabela_Recebtos  =Cria_Tabela("","Origem(A2*),Numero do Lancamento(A6*),SequenciaOuConta(A4*)")
Tabela_Cartoes   =Cria_Tabela("","Forma de Pagamento(A2*),Nome do Cartao(A15*),Valor($)")

ClearAll

{Ask} {\\Sistemas\\Vendas} {NotaC} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn "~VSDGDTREF"
Moveto [Codigo da Destinacao   ] TypeIn "~VSDGDESTIN.."
Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
Moveto [Tipo Movimento Estoque ] TypeIn "S"
Moveto [Situacao               ] TypeIn "Not C"

If VSDG_USUCONTA[1]
   Then Moveto [Codigo_Usuario] TypeIn "_Usu"
   
        {Ask} {\\Sistemas\\Cadastro\\Usuarios}
        Moveto [Chapa          ] TypeIn "_Usu"
        Moveto [Conta Padrao   ] TypeIn "~VSDGCONTA.." 
EndIf

Do_It!
ClearAll

Sort "Answer" on "Codigo da Empresa","Tipo do Documento","Codigo do Documento","Numero do Documento","Serie do Documento"
ClearAll

TOTARECEBER     =0
TOTAPAGAR       =0

TOTVENDAS       =0
TOTVENDAS_DEV   =0
TOTVENDAS_LIQ   =0

TOTVENDAS_DN    =0
TOTVENDAS_CH    =0
TOTVENDAS_NP    =0
TOTVENDAS_TCU   =0
TOTVENDAS_TCG   =0
TOTVENDAS_CD    =0
TOTVENDAS_CT    =0
TOTVENDAS_CL    =0
TOTVENDAS_R     =0
TOTVENDAS_AR    =0
TOTVENDAS_DIF   =0

TOTAC_RECEBIDO  =0
TOTAC_PAGO      =0

NR = NRecords("Answer")

View "\\Sistemas\\cadastro\\tppagto"
View "\\Sistemas\\ctacor\\Movcont"
View "\\Sistemas\\ctapag\\titulos"
View "\\Sistemas\\ctapag\\titbaixa"
View "\\Sistemas\\ctarec\\Duplic"
View "\\Sistemas\\ctarec\\Dupbaixa"
View "\\Sistemas\\Vendas\\Notav"
View "\\Sistemas\\Estoque\\NotaEC"
CoEdit Tabela_Cartoes,Tabela_Recebtos,Tabela_Vendedores,Tabela_Moedas,Tabela,"Answer"
If nr>0
   Then seq=0
        Scan

          vrnf   =[Valor Nota Fiscal]  ; vr nf
          vrdev  =blankNum()           ; vr devolucao na venda/troca
          vrliq  =blankNum()           ; vr liquido                         
          vrdn   =blankNum()           ; vr dinheiro                        
          vrch   =blankNum()           ; vr cheques                         
          vrnp   =blankNum()           ; vr nota promissoria
          vrcd   =blankNum()           ; vr cartao de debito
          vrct   =blankNum()           ; vr cartao de credito
          vrcl   =blankNum()           ; vr cartao de credito parcelado
          vrrec  =blankNum()           ; vr recebimento
          vrrec2 =blankNum()           ; vr recebimento2
          vrarec =blankNum()           ; vr das duplicatas
          vrarec2=blankNum()           ; vr das duplicatas2
          vrtcu  =blankNum()           ; vr titulo de credito utilizado
          vrtcg  =[Valor TC]           ; vr titulo de credito gerado
          vrdif  =blankNum()           ; vr diferenca no calculo conferencia

          vrout  =blankNum()           ; vr outros                              


          ;-- tratando troca ---------------------------------------------------
          istroca      =false
          If [Answer->Tipo Movimento Estoque ]="S" And
             Search("TROCA",[Answer->Descricao da Destinacao])>0
             Then 
                  istroca=true          

  								Moveto "\\Sistemas\\Estoque\\NotaEC"
  								Moveto [Codigo]
  								Locate IndexOrder By "NotaEC01" [Answer->Codigo],
  								       [Answer->Numero do Documento], [Answer->Serie do Documento]
  								If RetVal
  								   then If [Codigo da Empresa]=[Answer->Codigo da Empresa] And
  								           [Tipo de Operacao ]="D"
                             Then vrdev=[Valor Nota Fiscal] 
  								        EndIf
  								EndIf
          EndIf
          ;---------------------------------------------------------------------

          ;-- tratando recebimentos --------------------------------------------

          lanctocx=""

          Moveto "\\Sistemas\\CtaCor\\MovCont"
          Moveto [Codigo da Empresa]
          Locate IndexOrder by "IndCxa1" [Answer->Codigo da Empresa], [Answer->Tipo do Documento], [Answer->Numero do Documento]
          If RetVal
             Then While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
                        [Tipo do Documento  ]=[Answer->Tipo do Documento  ] And
                        [Numero do Documento]=[Answer->Numero do Documento]

                    vrbase=0
                    if [Codigo da Conta   ]=VSDGCONTA and
                       [Data              ]=VSDGDTREF and
                       [Codigo do EmitDest]=[Answer->Codigo] and
                       [Sistema Gerador   ]<>"CR" and
                       [Sistema Gerador   ]<>"CP"
                       then vrbase=([Valor]-[Valor do Juros])+[Valor do Desconto]
                            lanctocx=lanctocx+[Numero do Lancamento]+", "

                            gravarecebimentos("CX")

                            Moveto "\\Sistemas\\CtaCor\\MovCont"
                    endif
                    vrrec  =vrrec  +vrbase

                    Skip
                    If EOT() Then QuitLoop EndIf
                    Locate IndexOrder by "IndCxa1"Next [Answer->Codigo da Empresa], [Answer->Tipo do Documento], [Answer->Numero do Documento]
                    
                  EndWhile
          EndIf

          Moveto "\\Sistemas\\Ctarec\\Duplic"
          Moveto [Codigo da Empresa]
          Locate IndexOrder by "Inddup30" [Answer->Codigo da Empresa], [Answer->Codigo do Documento], [Answer->Numero do Documento]  
          If RetVal
             Then While [Codigo da Empresa   ]=[Answer->Codigo da Empresa  ] and
                        [Tipo Docto Gerador  ]=[Answer->Codigo do Documento] and
                        [Numero Docto Gerador]=[Answer->Numero do Documento]
                        
                    vrarec2=vrarec2+[valor do Documento]
                        
                    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]
                                    
                              vrbase=0
                              if [Codigo da Conta  ]=VSDGCONTA and
                                 [Data do Pagamento]=VSDGDTREF
                                 then
                                       if [Tipo da Baixa]<>"NORMAL"
                                          then
                                               ;vrout=vrout+[Valor do Recebimento]
                                          else
                                               Moveto "\\Sistemas\\CtaCor\\MovCont"
                                               Moveto [Numero do Lancamento]
                                               Locate [\Sistemas\CtaRec\DupBaixa->Lancamento Conta Corrente],
                                                      [\Sistemas\CtaRec\DupBaixa->Codigo da Conta]
                                               If RetVal
                                                  then 
                                                        if [Codigo da Conta   ]=VSDGCONTA and
                                                           [Data              ]=VSDGDTREF and
                                                           [Codigo do EmitDest]=[Answer->Codigo]
                                                           then vrbase=([Valor]-[Valor do Juros])+[Valor do Desconto]
                                                           
                                                                If [\Sistemas\CtaRec\DupBaixa->Bx Tipo Docto Gerador]="ACF"
                                                                   then TOTAC_RECEBIDO  =TOTAC_RECEBIDO + vrbase
                                                                endif
                                                                
                                                                gravarecebimentos("CX")
                                                                gravarecebimentos("CR")
                                                        endif
                                               endif
                                       endif
                              endif
                              vrrec2 =vrrec2 +vrbase
                              
                              Moveto "\\Sistemas\\Ctarec\\Dupbaixa"
                              Skip
                              If EOT() Then QuitLoop EndIf
                            EndWhile
                    EndIf

                    Moveto "\\Sistemas\\Ctarec\\Duplic"
                    Skip
                    If EOT() Then QuitLoop EndIf
                    Locate IndexOrder by "Inddup30" Next [Answer->Codigo da Empresa], [Answer->Codigo do Documento], [Answer->Numero do Documento]  
         
                  EndWhile
          EndIf
          ;---------------------------------------------------------------------


          

          ;-- tratando Moedas --------------------------------------------------
          GravaCartoes("Limpa","",0)

          Moveto "\\Sistemas\\Vendas\\Notav"
          Moveto [Codigo da Empresa]
          Locate [Answer->Codigo da Empresa], [Answer->Numero do Documento], [Answer->Serie do Documento]  
          If RetVal
             Then While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
                        [Numero do Documento]=[Answer->Numero do Documento] And
                        [Serie do Documento ]=[Answer->Serie do Documento ] 

                    switch
                      case [Forma de Pagamento]="CD" or 
                           [Forma de Pagamento]="CT" or 
                           [Forma de Pagamento]="CL"      : listamoedas([Forma de Pagamento],[Nome do Cartao],[Valor],"E")
                                                            GravaCartoes([Forma de Pagamento],[Nome do Cartao],[Valor])
                                                                                                                
                      case [Forma de Pagamento]="TC"      : listamoedas([Forma de Pagamento],""              ,[Valor],"E")
                                                            ChecaTC("UTC")
                         
                      otherwise                           : listamoedas([Forma de Pagamento],""              ,[Valor],"E")
                      
                    endswitch

                    if [Forma de Pagamento]="TC" 
                       then vrtcu=vrtcu+[Valor]
                    endif
                    if [Forma de Pagamento]="CH" or 
                       [Forma de Pagamento]="CP"    
                       then vrch =vrch +[Valor]
                    endif
                    if [Forma de Pagamento]="NP"  
                       then vrnp =vrnp +[Valor]
                    endif
                    if [Forma de Pagamento]="DN"  
                       then vrdn =vrdn +[Valor]
                    endif
                    if [Forma de Pagamento]="CD"  
                       then vrcd =vrcd +[Valor]
                    endif
                    if [Forma de Pagamento]="CT"  
                       then vrct =vrct +[Valor]
                    endif
                    if [Forma de Pagamento]="CL"  
                       then vrcl =vrcl +[Valor]
                    endif

                    Skip
                    If EOT() Then QuitLoop EndIf
                    
                  EndWhile
          EndIf
          ;---------------------------------------------------------------------

          ;-- Calculo diferen‡a ------------------------------------------------
          vrliq = vrnf - vrdev
          vrarec= (vrnf - vrdev)- vrrec
          vrdif = ( vrarec-vrarec2 ) + ( ( ( vrnf-vrdev ) -vrrec ) - ( vrarec- (vrrec+vrout+vrrec2) ) ) 
          vrrec = vrrec + vrrec2
          vrarec= vrarec2 - vrrec2 

          if vrdif =0 then vrdif =blanknum() endif
          if vrrec =0 then vrrec =blanknum() endif
          if vrarec=0 then vrarec=blanknum() endif
          
          ;---------------------------------------------------------------------
          
  				Moveto "Answer"
          
          ;-- tratando vendedores ----------------------------------------------
          listavendedor([Codigo do Representante],[Nome Fantasia Represent], vrnf, vrdev)

          TOTVENDAS       =TOTVENDAS       +vrnf          
          TOTVENDAS_DEV   =TOTVENDAS_DEV   +vrdev
          TOTVENDAS_LIQ   =TOTVENDAS_LIQ   +vrliq
          TOTVENDAS_DN    =TOTVENDAS_DN    +vrdn 
          TOTVENDAS_CH    =TOTVENDAS_CH    +vrch 
          TOTVENDAS_NP    =TOTVENDAS_NP    +vrnp 
          TOTVENDAS_CD    =TOTVENDAS_CD    +vrcd 
          TOTVENDAS_CT    =TOTVENDAS_CT    +vrct 
          TOTVENDAS_CL    =TOTVENDAS_CL    +vrcl 
          TOTVENDAS_R     =TOTVENDAS_R     +vrrec
          TOTVENDAS_AR    =TOTVENDAS_AR    +vrarec
          TOTVENDAS_TCU   =TOTVENDAS_TCU   +vrtcu
          TOTVENDAS_TCG   =TOTVENDAS_TCG   +vrtcg
          TOTVENDAS_DIF   =TOTVENDAS_DIF   +vrdif

          TOTARECEBER     =TOTARECEBER     +((vrnf-vrdev)-vrrec)

          If VSDGCODMODELO="01" or VSDGCODMODELO="01B"
             Then 
                  switch 
                    case wwc=0:
                      Moveto Tabela
                      End Down
    
                      Seq=Seq+1
                      [Ordem    ]="02.01"
                      [Sequencia]=Seq
                      [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],12," ")+IsNfe([Answer->Codigo do Documento])+
                                       Completa([Answer->Codigo]+"-"+[Answer->Razao Social],20," ")+"  "+
                                       Completa([Answer->Descricao CondPagto],10," ")+"  "+
                                       Completa([Answer->Forma de Pagamento ],18," ")
                          
                      [vr1] =vrnf     
                      [vr2] =vrdev     
                      [vr3] =vrliq     
                      [vr4] =vrdn      
                      [vr5] =vrch      
                      [vr6] =vrnp      
                      [vr7]= vrtcu     
                      [vr8] =vrtcg     
                      [vr9] =vrcd      
                      [vr10]=vrct      
                      [vr11]=vrcl      
                      [vr12]=vrrec     
                      [vr13]=vrarec     
                      [vr14]=vrdif     
                      UnLockRecord
                    
                    otherwise          :
                      sdescr=Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],12," ")+IsNfe([Answer->Codigo do Documento])+
                             Completa([Answer->Codigo]+"-"+[Answer->Razao Social],20," ")+"  "+
                             Completa([Answer->Descricao CondPagto],10," ")+"  "
                      
                      Moveto Tabela_Cartoes
                      scan
                        copytoarray regtc
    
                        Moveto Tabela
                        End Down
      
                        Seq=Seq+1
                        [Ordem    ]="02.01"
                        [Sequencia]=Seq
                                         
                        switch
                          case wwc=1 and regtc["Forma de Pagamento"]="CL":
                            [Descricao]="  "+sdescr+
                                             Completa(regtc["Forma de Pagamento"],03," ")+
                                             Completa(strval([Answer->Numero de Parcelas])+"P "+regtc["Nome do Cartao"],15," ") 
                          
                          otherwise :
                            [Descricao]="  "+sdescr+
                                             Completa(regtc["Forma de Pagamento"],03," ")+
                                             Completa(regtc["Nome do Cartao"    ],15," ") 
                                           
                        endswitch                 
                        [vr1] =vrnf     
                        [vr2] =vrdev     
                        [vr3] =vrliq     
                        [vr4] =vrdn      
                        [vr5] =vrch      
                        [vr6] =vrnp      
                        [vr7]= vrtcu     
                        [vr8] =vrtcg
                        switch
                          case regtc["Forma de Pagamento"]="CD": [vr9 ]=regtc["Valor"]
                          case regtc["Forma de Pagamento"]="CT": [vr10]=regtc["Valor"]
                          case regtc["Forma de Pagamento"]="CL": [vr11]=regtc["Valor"]
                        endswitch
                        [vr12]=vrrec     
                        [vr13]=vrarec     
                        [vr14]=vrdif     
                        UnLockRecord

                        sdescr=spaces(49)
                        vrnf  =blanknum()
                        vrdev =blanknum()     
                        vrliq =blanknum()     
                        vrdn  =blanknum()     
                        vrch  =blanknum()     
                        vrnp  =blanknum()     
                        vrtcu =blanknum()     
                        vrtcg =blanknum()
                        vrcd  =blanknum()
                        vrct   =blanknum()
                        vrcl  =blanknum()
                        vrrec =blanknum()     
                        vrarec=blanknum()     
                        vrdif =blanknum()    

                        Moveto Tabela_Cartoes
                      endscan                  
                    
                  endswitch  
          EndIf

  				Moveto "Answer"
        
        EndScan
EndIf

Moveto Tabela
End Down
[Ordem    ]="02"
[Acerto   ]="X"
[Descricao]="Vendas e Trocas"
[Vr1      ]=TOTVENDAS  
[Vr2      ]=TOTVENDAS_DEV
[Vr3      ]=TOTVENDAS_LIQ
[Vr4      ]=TOTVENDAS_DN  
[Vr5      ]=TOTVENDAS_CH  
[Vr6      ]=TOTVENDAS_NP 
[Vr7      ]=TOTVENDAS_TCU
[Vr8      ]=TOTVENDAS_TCG
[Vr9      ]=TOTVENDAS_CD  
[Vr10     ]=TOTVENDAS_CT  
[Vr11     ]=TOTVENDAS_CL 
[Vr12     ]=TOTVENDAS_R
[Vr13     ]=TOTVENDAS_AR
[Vr14     ]=TOTVENDAS_DIF
UnLockRecord

End Down
[Ordem    ]="02.01"
[Sequencia]=99999
UnLockRecord


ListaMoedas("TCG","",TOTVENDAS_TCG,"S")

Do_It!
ClearAll
           
;********************** Outras Saidas ******************************************
     
{Ask} {\\Sistemas\\Vendas} {NotaC} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn "~VSDGDTREF"
Moveto [Situacao               ] TypeIn "Not C"
Moveto [Codigo da Destinacao   ] TypeIn "~VSDGDESTIN.."
Moveto [Descricao da Destinacao] TypeIn "Not ..VEND.., Not..SERV.., Not..SAIDA.."
Moveto [Tipo Movimento Estoque ] TypeIn "S"

If VSDG_USUCONTA[1]
   Then Moveto [Codigo_Usuario] TypeIn "_Usu"
   
        {Ask} {\\Sistemas\\Cadastro\\Usuarios}
        Moveto [Chapa          ] TypeIn "_Usu"
        Moveto [Conta Padrao   ] TypeIn "~VSDGCONTA.." 
EndIf

Do_It!
CLearAll

Sort "Answer" on "Codigo da Empresa","Tipo do Documento","Numero do Documento"
ClearAll

TOTOUTSAINF     =0

nr=nrecords("answer")

If nr>0
   Then 
        seq=1

        CoEdit Tabela,"Answer"
        
        Moveto "Answer"
        Scan
        
          vrnf   =[Valor Nota Fiscal]  ; vr nf

          TOTOUTSAINF = TOTOUTSAINF + vrnf

          If VSDGCODMODELO="01" or VSDGCODMODELO="01B"
             Then Moveto Tabela
                  End Down

                  Seq=Seq+1
                  [Ordem    ]="02.9.2"
                  [Sequencia]=Seq
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],12," ")+IsNfe([Answer->Codigo do Documento])+
                                   Completa([Answer->Codigo]+"-"+[Answer->Razao Social],20," ")+"  "+
                                   Completa([Answer->Descricao da Destinacao],19," ")+"  "
                  [vr1]=vrnf     
                  UnLockRecord

          endif

          Moveto "Answer"
        EndScan
        
        Moveto Tabela
        End Down
        [Ordem    ]="02.9.1"
        [Sequencia]=1
        [Acerto   ]="X"
        [Descricao]="Outras Saidas"
        [Vr1      ]=TOTOUTSAINF  
        UnLockRecord
        
        End Down
        [Ordem    ]="02.9.2"
        [Sequencia]=99999
        UnLockRecord
        
        Do_It!
        ClearAll

endif



;*************** Apurando devolu‡äes *******************************************

{Ask} {\\Sistemas\\Vendas} {NotaC} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn "~VSDGDTREF"
Moveto [Situacao               ] TypeIn "Not C"
Moveto [Codigo da Destinacao   ] TypeIn "~VSDGDESTIN.."
Moveto [Descricao da Destinacao] TypeIn "..DEVOL.."
Moveto [Tipo Movimento Estoque ] TypeIn "E"

If VSDG_USUCONTA[1]
   Then Moveto [Codigo_Usuario] TypeIn "_Usu"
   
        {Ask} {\\Sistemas\\Cadastro\\Usuarios}
        Moveto [Chapa          ] TypeIn "_Usu"
        Moveto [Conta Padrao   ] TypeIn "~VSDGCONTA.." 
EndIf

Do_It!
ClearAll

Sort "Answer" on "Codigo da Empresa","Tipo do Documento","Numero do Documento"
ClearAll

TOTDEVOL        =0

TOTDEVOLU       =0

TOTDEVOLU_DN    =0
TOTDEVOLU_CH    =0
TOTDEVOLU_NP    =0
TOTDEVOLU_CD    =0
TOTDEVOLU_CT    =0
TOTDEVOLU_CL    =0

TOTDEVOLU_P     =0
TOTDEVOLU_AP    =0

TOTDEVOLU_TCU   =0
TOTDEVOLU_TCG   =0

TOTDEVOLU_DIF   =0

NR = NRecords("Answer")

View "\\Sistemas\\cadastro\\tppagto"
View "\\Sistemas\\ctacor\\Movcont"
View "\\Sistemas\\ctapag\\Titulos"
View "\\Sistemas\\ctapag\\titbaixa"
View "\\Sistemas\\Vendas\\Notav"
CoEdit Tabela_Recebtos,Tabela_Vendedores,Tabela_Moedas,Tabela,"Answer"
If nr>0
   Then seq=0
        Scan

          vrnf   =[Valor Nota Fiscal]  ; vr nf
          vrdev  =blankNum()           ; vr devolucao
          vrdn   =blankNum()           ; vr dinheiro                        
          vrch   =blankNum()           ; vr cheques                         
          vrnp   =blankNum()           ; vr nota promissoria                
          vrcd   =blankNum()           ; vr cartao de debito
          vrct   =blankNum()           ; vr cartao de credito
          vrcl   =blankNum()           ; vr cartao de credito parcelado
          vrpag  =blankNum()           ; vr pagamento    
          vrpag2 =blankNum()           ; vr pagamento2   
          vrapag =blankNum()           ; vr dos titulos          
          vrapag2=blankNum()           ; vr dos titulos2         
          vrtcu  =blankNum()           ; vr titulo de credito utilizado
          vrtcg  =[Valor TC]           ; vr titulo de credito gerado
          vrdif  =blankNum()           ; vr diferenca no calculo conferencia

          vrout  =blankNum()           ; vr outros                              

          TOTDEVOL   =TOTDEVOL   +[Valor Nota Fiscal]

          ;-- tratando recebimentos --------------------------------------------
        
          Moveto "\\Sistemas\\CtaCor\\MovCont"
          Moveto [Codigo da Empresa]
          Locate IndexOrder by "IndCxa1" [Answer->Codigo da Empresa], [Answer->Tipo do Documento], [Answer->Numero do Documento]
          If RetVal
             Then While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
                        [Tipo do Documento  ]=[Answer->Tipo do Documento  ] And
                        [Numero do Documento]=[Answer->Numero do Documento]

                    vrbase=0
                    if [Codigo da Conta   ]=VSDGCONTA and
                       [Data              ]=VSDGDTREF and
                       [Codigo do EmitDest]=[Answer->Codigo] and
                       [Sistema Gerador   ]<>"CP" and
                       [Sistema Gerador   ]<>"CR"
                       then vrbase=([Valor]-[Valor do Juros])+[Valor do Desconto]
                       
                            gravarecebimentos("CX")

                            Moveto "\\Sistemas\\CtaCor\\MovCont"
                    endif
                    vrpag  =vrpag  +vrbase

                    Skip
                    If EOT() Then QuitLoop EndIf
                    Locate IndexOrder by "IndCxa1"Next [Answer->Codigo da Empresa], [Answer->Tipo do Documento], [Answer->Numero do Documento]
                    
                  EndWhile
          EndIf

          Moveto "\\Sistemas\\Ctapag\\Titulos"
          Moveto [Codigo da Empresa]
          Locate IndexOrder by "Indtit30" [Answer->Codigo da Empresa], [Answer->Codigo do Documento], [Answer->Numero do Documento]  
          If RetVal
             Then While [Codigo da Empresa   ]=[Answer->Codigo da Empresa  ] and
                        [Codigo do Documento ]=[Answer->Codigo do Documento] and
                        [Lancamento Gerador  ]=[Answer->Numero do Documento]
                        
                    vrapag2=vrapag2+[valor do Documento]
                        
                    Moveto "\\Sistemas\\Ctapag\\Titbaixa"
                    Moveto [Numero do Lancamento]
                    Locate [\sistemas\ctapag\titulos->numero do lancamento]  
                    If RetVal
                       Then While [Numero do Lancamento]=[\sistemas\ctapag\titulos->numero do lancamento]
                                    
                              vrbase=0
                              if [Codigo da Conta  ]=VSDGCONTA and
                                 [Data do Pagamento]=VSDGDTREF
                                 then
                                       if [Tipo da Baixa]<>"NORMAL"
                                          then
                                               ;vrout=vrout+[Valor do Recebimento]
                                          else
                                               Moveto "\\Sistemas\\CtaCor\\MovCont"
                                               Moveto [Numero do Lancamento]
                                               Locate [\Sistemas\Ctapag\titbaixa->Lancamento Conta Corrente],
                                                      [\Sistemas\Ctapag\titbaixa->Codigo da Conta]
                                               If RetVal
                                                  then 
                                                        if [Codigo da Conta   ]=VSDGCONTA and
                                                           [Data              ]=VSDGDTREF and
                                                           [Codigo do EmitDest]=[Answer->Codigo]
                                                           then vrbase=([Valor]-[Valor do Juros])+[Valor do Desconto]

                                                                If [\Sistemas\Ctapag\titBaixa->Bx Tipo Docto Gerador]="ACF"
                                                                   then TOTAC_PAGO      =TOTAC_PAGO     + vrbase
                                                                endif   

                                                                gravarecebimentos("CX")
                                                                gravarecebimentos("CP")
                                                        endif
                                               endif
                                       endif
                              endif
                              vrpag2  =vrpag2  +vrbase
                              
                              Moveto "\\Sistemas\\Ctapag\\titbaixa"
                              Skip
                              If EOT() Then QuitLoop EndIf
                            EndWhile
                    EndIf

                    Moveto "\\Sistemas\\Ctapag\\titulos"
                    Skip
                    If EOT() Then QuitLoop EndIf
                    Locate IndexOrder by "Indtit30" Next [Answer->Codigo da Empresa], [Answer->Codigo do Documento], [Answer->Numero do Documento]  
         
                  EndWhile
          EndIf
          ;---------------------------------------------------------------------


          ;-- tratando Moedas --------------------------------------------------
          Moveto "\\Sistemas\\Vendas\\Notav"
          Moveto [Codigo da Empresa]
          Locate [Answer->Codigo da Empresa], [Answer->Numero do Documento], [Answer->Serie do Documento]  
          If RetVal
             Then While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
                        [Numero do Documento]=[Answer->Numero do Documento] And
                        [Serie do Documento ]=[Answer->Serie do Documento ] 

                    switch
                      case [Forma de Pagamento]="CD"     : listamoedas([Forma de Pagamento],[Nome do Cartao],[Valor],"S")

                      case [Forma de Pagamento]="CT" or 
                           [Forma de Pagamento]="CL"     : listamoedas([Forma de Pagamento],[Nome do Cartao],[Valor],"S")
                         
                      case [Forma de Pagamento]="TC"     : listamoedas([Forma de Pagamento],""              ,[Valor],"S")
                         
                      otherwise                          : listamoedas([Forma de Pagamento],""              ,[Valor],"S")
                      
                    endswitch

                    if [Forma de Pagamento]="TC" 
                       then vrtcu=vrtcu+[Valor]
                    endif
                    if [Forma de Pagamento]="CH" or 
                       [Forma de Pagamento]="CP"    
                       then vrch =vrch +[Valor]
                    endif
                    if [Forma de Pagamento]="NP"  
                       then vrnp =vrnp +[Valor]
                    endif
                    if [Forma de Pagamento]="DN"  
                       then vrdn =vrdn +[Valor]
                    endif
                    if [Forma de Pagamento]="CD"  
                       then vrcd =vrcd +[Valor]
                    endif
                    if [Forma de Pagamento]="CT"  
                       then vrct =vrct +[Valor]
                    endif
                    if [Forma de Pagamento]="CL"  
                       then vrcl =vrcl +[Valor]
                    endif

                    Skip
                    If EOT() Then QuitLoop EndIf
                    
                  EndWhile
          EndIf
          ;---------------------------------------------------------------------

          ;-- Calculo diferen‡a ------------------------------------------------
          vrapag= (vrnf - vrdev)- vrpag
          vrdif = ( vrapag-vrapag2 ) + ( ( ( vrnf-vrdev ) -vrpag ) - ( vrapag- (vrpag+vrout+vrpag2) ) ) 
          vrpag = vrpag + vrpag2
          vrapag= vrapag2 - vrpag2 

          if vrdif =0 then vrdif =blanknum() endif
          if vrpag =0 then vrpag =blanknum() endif
          if vrapag=0 then vrapag=blanknum() endif
          
          ;---------------------------------------------------------------------
          
  				Moveto "Answer"
          ;-- tratando vendedores ----------------------------------------------
          listavendedor([Codigo do Representante],[Nome Fantasia Represent], 0, vrnf)

          TOTDEVOLU       =TOTDEVOLU       +vrnf          
          TOTDEVOLU_DN    =TOTDEVOLU_DN    +vrdn 
          TOTDEVOLU_CH    =TOTDEVOLU_CH    +vrch 
          TOTDEVOLU_NP    =TOTDEVOLU_NP    +vrnp
          TOTDEVOLU_CD    =TOTDEVOLU_CD    +vrcd
          TOTDEVOLU_CT    =TOTDEVOLU_CT    +vrct
          TOTDEVOLU_CL    =TOTDEVOLU_CL    +vrcl
          TOTDEVOLU_P     =TOTDEVOLU_P     +vrpag
          TOTDEVOLU_AP    =TOTDEVOLU_AP    +vrapag
          TOTDEVOLU_TCU   =TOTDEVOLU_TCU   +vrtcu
          TOTDEVOLU_TCG   =TOTDEVOLU_TCG   +vrtcg
          TOTDEVOLU_DIF   =TOTDEVOLU_DIF   +vrdif

          If VSDGCODMODELO="01" or VSDGCODMODELO="01B"
             Then Moveto Tabela
                  End Down

                  Seq=Seq+1
                  [Grupo    ]="1"
                  [Ordem    ]="03.1.1"
                  [Sequencia]=Seq
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],12," ")+IsNfe([Answer->Codigo do Documento])+
                                   Completa([Answer->Codigo]+"-"+[Answer->Razao Social],20," ")+"  "+
                                   Completa([Answer->Descricao CondPagto],10," ")+"  "+
                                   Completa([Answer->Forma de Pagamento ],18," ")

                  [vr2] =vrnf     
                  [vr4] =vrdn      
                  [vr5] =vrch      
                  [vr6] =vrnp      
                  [vr7]= vrtcu     
                  [vr8] =vrtcg     
                  [vr9] =vrcd     
                  [vr10]=vrct     
                  [vr11]=vrcl     
                  [vr12]=vrpag
                  [vr13]=vrapag
                  [vr14]=vrdif     
                  UnLockRecord

          EndIf

  				Moveto "Answer"
        
        EndScan
EndIf

If TOTDEVOL>0
   Then 
   
        Moveto Tabela
        End Down
        [Grupo    ]="1"
        [Ordem    ]="03.1"
        [Sequencia]=2    
        [Acerto   ]="X"
        [Descricao]="Devolucoes"
        [Vr2      ]=TOTDEVOLU  
        [Vr4      ]=TOTDEVOLU_DN  
        [Vr5      ]=TOTDEVOLU_CH  
        [Vr6      ]=TOTDEVOLU_NP 
        [Vr7      ]=TOTDEVOLU_TCU
        [Vr8      ]=TOTDEVOLU_TCG
        [Vr9      ]=TOTDEVOLU_CD 
        [Vr10     ]=TOTDEVOLU_CT 
        [Vr11     ]=TOTDEVOLU_CL  
        [Vr12     ]=TOTDEVOLU_P
        [Vr13     ]=TOTDEVOLU_AP
        [Vr14     ]=TOTDEVOLU_DIF
        UnLockRecord
        
        End Down
        [Grupo    ]="1"
        [Ordem    ]="03.1.1"
        [Sequencia]=99999
        
        End Down
        [Ordem    ]="01.3"
        [Sequencia]=3
        [Acerto   ]="X"
        [Descricao]="Vendas - Devolucoes"
        [Vr1      ]=TOTVENDAS
        [Vr2      ]=TOTVENDAS_DEV+TOTDEVOLU
        [Vr3      ]=[Vr1]-[Vr2]
        UnLockRecord
        
        End Down
        [Ordem    ]="01.3"
        [Sequencia]=4
        UnLockRecord

        listamoedas("DN" ,"",TOTDEVOLU_DN ,"S")
        listamoedas("TCG","",TOTDEVOLU_TCG,"S")
EndIf
Do_It!
ClearAll


;*************** Compras *********** *******************************************

{Ask} {\\Sistemas\\Estoque} {NotaEC} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn "~VSDGDTREF"
Moveto [Tipo de Operacao       ] TypeIn "C"
moveto [Sistema Gerador        ] TypeIn "NF"
moveto [Codigo do Documento    ] TypeIn "ROM.."

If VSDG_USUCONTA[1]
   Then Moveto [Codigo_Usuario] TypeIn "_Usu"
   
        {Ask} {\\Sistemas\\Cadastro\\Usuarios}
        Moveto [Chapa          ] TypeIn "_Usu"
        Moveto [Conta Padrao   ] TypeIn "~VSDGCONTA.." 
EndIf

Do_It!

ClearAll

Sort "Answer" on "Codigo da Empresa","Tipo do Documento","Numero do Documento"
ClearAll

TOTCOMPR        =0
TOTCOMPRU       =0
TOTCOMPRU_DN    =0
TOTCOMPRU_CH    =0
TOTCOMPRU_NP    =0
TOTCOMPRU_CD    =0
TOTCOMPRU_CT    =0
TOTCOMPRU_CL    =0
TOTCOMPRU_P     =0
TOTCOMPRU_AP    =0
TOTCOMPRU_DIF   =0

NR = NRecords("Answer")

View "\\Sistemas\\cadastro\\tppagto"
View "\\Sistemas\\ctacor\\Movcont"
View "\\Sistemas\\ctapag\\Titulos"
View "\\Sistemas\\ctapag\\titbaixa"
View "\\Sistemas\\Vendas\\FaturaC"
View "\\Sistemas\\Vendas\\FaturaV"
CoEdit Tabela_Recebtos,Tabela,Tabela_Moedas,"Answer"
If nr>0
   Then seq=0
        Scan

          vrnf   =[Valor Nota Fiscal]  ; vr nf
          vrdev  =blankNum()           ; vr devolucao na venda/troca
          vrdn   =blankNum()           ; vr dinheiro                        
          vrch   =blankNum()           ; vr cheques                         
          vrnp   =blankNum()           ; vr nota promissoria                
          vrcd   =blankNum()           ; vr cartao de debito
          vrct   =blankNum()           ; vr cartao de credito
          vrcl   =blankNum()           ; vr cartao de credito parcelado
          vrpag  =blankNum()           ; vr pagamento    
          vrpag2 =blankNum()           ; vr pagamento2   
          vrapag =blankNum()           ; vr dos titulos          
          vrapag2=blankNum()           ; vr dos titulos2         
          vrdif  =blankNum()           ; vr diferenca no calculo conferencia

          vrout  =blankNum()           ; vr outros                              

          TOTCOMPR   =TOTCOMPR   +[Valor Nota Fiscal]

          ;-- tratando recebimentos --------------------------------------------
        
          Moveto "\\Sistemas\\CtaCor\\MovCont"
          Moveto [Codigo da Empresa]
          Locate IndexOrder by "IndCxa1" [Answer->Codigo da Empresa], [Answer->Tipo do Documento], [Answer->Numero do Documento]
          If RetVal
             Then While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
                        [Tipo do Documento  ]=[Answer->Tipo do Documento  ] And
                        [Numero do Documento]=[Answer->Numero do Documento]

                    vrbase=0
                    if [Codigo da Conta   ]=VSDGCONTA and
                       [Data              ]=VSDGDTREF and
                       [Codigo do EmitDest]=[Answer->Codigo] and
                       [Sistema Gerador   ]<>"CP" and
                       [Sistema Gerador   ]<>"CR"
                       then vrbase=([Valor]-[Valor do Juros])+[Valor do Desconto]

                            gravarecebimentos("CX")

                            Moveto "\\Sistemas\\CtaCor\\MovCont"
                    endif
                    vrpag  =vrpag  +vrbase

                    Skip
                    If EOT() Then QuitLoop EndIf
                    Locate IndexOrder by "IndCxa1"Next [Answer->Codigo da Empresa], [Answer->Tipo do Documento], [Answer->Numero do Documento]
                    
                  EndWhile
          EndIf

          Moveto "\\Sistemas\\Ctapag\\Titulos"
          Moveto [Codigo da Empresa]
          Locate IndexOrder by "Indtit30" [Answer->Codigo da Empresa], [Answer->Codigo do Documento], [Answer->Numero do Documento]  
          If RetVal
             Then While [Codigo da Empresa   ]=[Answer->Codigo da Empresa  ] and
                        [Codigo do Documento ]=[Answer->Codigo do Documento] and
                        [Lancamento Gerador  ]=[Answer->Numero do Documento]
                        
                    vrapag2=vrapag2+[valor do Documento]
                        
                    Moveto "\\Sistemas\\Ctapag\\Titbaixa"
                    Moveto [Numero do Lancamento]
                    Locate [\sistemas\ctapag\titulos->numero do lancamento]  
                    If RetVal
                       Then While [Numero do Lancamento]=[\sistemas\ctapag\titulos->numero do lancamento]
                                    
                              vrbase=0
                              if [Codigo da Conta  ]=VSDGCONTA and
                                 [Data do Pagamento]=VSDGDTREF
                                 then
                                       if [Tipo da Baixa]<>"NORMAL"
                                          then
                                               ;vrout=vrout+[Valor do Recebimento]
                                          else
                                               Moveto "\\Sistemas\\CtaCor\\MovCont"
                                               Moveto [Numero do Lancamento]
                                               Locate [\Sistemas\Ctapag\titbaixa->Lancamento Conta Corrente],
                                                      [\Sistemas\Ctapag\titbaixa->Codigo da Conta]
                                               If RetVal
                                                  then 
                                                        if [Codigo da Conta   ]=VSDGCONTA and
                                                           [Data              ]=VSDGDTREF and
                                                           [Codigo do EmitDest]=[Answer->Codigo]
                                                           then vrbase=([Valor]-[Valor do Juros])+[Valor do Desconto]
                                                           
                                                                If [\Sistemas\Ctapag\titBaixa->Bx Tipo Docto Gerador]="ACF"
                                                                   then TOTAC_PAGO      =TOTAC_PAGO     + vrbase
                                                                endif
                                                                
                                                                gravarecebimentos("CX")
                                                                gravarecebimentos("CP")
                                                        endif
                                               endif
                                       endif
                              endif
                              vrpag2  =vrpag2  +vrbase
                              
                              Moveto "\\Sistemas\\Ctapag\\titbaixa"
                              Skip
                              If EOT() Then QuitLoop EndIf
                            EndWhile
                    EndIf

                    Moveto "\\Sistemas\\Ctapag\\titulos"
                    Skip
                    If EOT() Then QuitLoop EndIf
                    Locate IndexOrder by "Indtit30" Next [Answer->Codigo da Empresa], [Answer->Codigo do Documento], [Answer->Numero do Documento]  
         
                  EndWhile
          EndIf
          ;---------------------------------------------------------------------


          ;-- tratando Moedas --------------------------------------------------
          wcondpg=""
          wformpg=""
          wnumof =""

          Moveto "\\Sistemas\\Vendas\\Faturac"
          Moveto [Numero Nota Gerada]
          Locate [Answer->Numero do Documento]
          if retval
             then while true
                    if [Data de Emissao]=[Answer->Data de Emissao]
                       then
                            wnumof =[NUmero da OF       ]
                            wcondpg=[Descricao CondPagto]
                            wformpg=[Forma de Pagamento ]
                       
                            quitloop
                    endif
                    skip
                    if eot() then quitloop endif

                    locate next [Answer->Numero do Documento]
                    if not retval
                       then quitloop
                    endif           
                  endwhile
          endif
          
          Moveto "\\Sistemas\\Vendas\\Faturav"
          Moveto [Numero da OF]
          Locate wnumof  
          If RetVal
             Then While [Numero da OF       ]=wnumof

                    switch
                      case [Forma de Pagamento]="CD" or 
                           [Forma de Pagamento]="CT" or 
                           [Forma de Pagamento]="CL"    : listamoedas([Forma de Pagamento],[Nome do Cartao],[Valor],"S")
                         
                      case [Forma de Pagamento]="TC"    : listamoedas([Forma de Pagamento],""              ,[Valor],"S")
                         
                      otherwise                         : listamoedas([Forma de Pagamento],""              ,[Valor],"S")
                      
                    endswitch

                    if [Forma de Pagamento]="CH" or 
                       [Forma de Pagamento]="CP"    
                       then vrch =vrch +[Valor]
                    endif
                    if [Forma de Pagamento]="NP"  
                       then vrnp =vrnp +[Valor]
                    endif
                    if [Forma de Pagamento]="DN"  
                       then vrdn =vrdn +[Valor]
                    endif
                    if [Forma de Pagamento]="CD"  
                       then vrcd =vrcd +[Valor]
                    endif
                    if [Forma de Pagamento]="CT"  
                       then vrct =vrct +[Valor]
                    endif
                    if [Forma de Pagamento]="CL"  
                       then vrcl =vrcl +[Valor]
                    endif

                    Skip
                    If EOT() Then QuitLoop EndIf
                    
                  EndWhile
          EndIf
          ;---------------------------------------------------------------------

          ;-- Calculo diferen‡a ------------------------------------------------
          vrapag= (vrnf - vrdev)- vrpag
          vrdif = ( vrapag-vrapag2 ) + ( ( ( vrnf-vrdev ) -vrpag ) - ( vrapag- (vrpag+vrout+vrpag2) ) ) 
          vrpag = vrpag + vrpag2
          vrapag= vrapag2 - vrpag2 

          if vrdif =0 then vrdif =blanknum() endif
          if vrpag =0 then vrpag =blanknum() endif
          if vrapag=0 then vrapag=blanknum() endif
          
          ;---------------------------------------------------------------------
          
  				Moveto "Answer"

          TOTCOMPRU       =TOTCOMPRU       +vrnf          
          TOTCOMPRU_DN    =TOTCOMPRU_DN    +vrdn 
          TOTCOMPRU_CH    =TOTCOMPRU_CH    +vrch 
          TOTCOMPRU_NP    =TOTCOMPRU_NP    +vrnp 
          TOTCOMPRU_CD    =TOTCOMPRU_CD    +vrcd 
          TOTCOMPRU_CT    =TOTCOMPRU_CT    +vrct 
          TOTCOMPRU_CL    =TOTCOMPRU_CL    +vrcl 
          TOTCOMPRU_P     =TOTCOMPRU_P     +vrpag
          TOTCOMPRU_AP    =TOTCOMPRU_AP    +vrapag
          TOTCOMPRU_DIF   =TOTCOMPRU_DIF   +vrdif

          TOTAPAGAR       =TOTAPAGAR       +((vrnf-vrdev)-vrpag)

          If VSDGCODMODELO="01" or VSDGCODMODELO="01B"
             Then Moveto Tabela
                  End Down

                  Seq=Seq+1
                  [Grupo    ]="1"
                  [Ordem    ]="03.2.1"
                  [Sequencia]=Seq
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],12," ")+"   "+
                                   Completa([Answer->Codigo]+"-"+[Answer->Razao Social],20," ")+"  "+
                                   Completa(wcondpg,10," ")+"  "+
                                   Completa(wformpg,03," ")
                      
                  [vr1] =vrnf     
                  [vr3] =vrnf      
                  [vr4] =vrdn      
                  [vr5] =vrch      
                  [vr6] =vrnp      
                  [vr9] =vrcd      
                  [vr10]=vrct      
                  [vr11]=vrcl      
                  [vr12]=vrpag
                  [vr13]=vrapag
                  [vr14]=vrdif     
                  UnLockRecord

          EndIf

  				Moveto "Answer"
        
        EndScan
EndIf

If TOTCOMPR>0
   Then 
        
        Moveto Tabela
        End Down
        [Grupo    ]="1"
        [Ordem    ]="03.2"
        [Sequencia]=2    
        [Acerto   ]="X"
        [Descricao]="Compras"
        [Vr1      ]=TOTCOMPRU  
        [Vr3      ]=TOTCOMPRU  
        [Vr4      ]=TOTCOMPRU_DN  
        [Vr5      ]=TOTCOMPRU_CH  
        [Vr6      ]=TOTCOMPRU_NP 
        [Vr9      ]=TOTCOMPRU_CD 
        [Vr10     ]=TOTCOMPRU_CT 
        [Vr11     ]=TOTCOMPRU_CL 
        [Vr12     ]=TOTCOMPRU_P
        [Vr13     ]=TOTCOMPRU_AP
        [Vr14     ]=TOTCOMPRU_DIF
        UnLockRecord

        End Down
        [Grupo    ]="1"
        [Ordem    ]="03.2.1"
        [Sequencia]=99999
        UnLockRecord
        
        listamoedas("DN" ,"",TOTCOMPRU_DN,"S")
EndIf
Do_It!
ClearAll

;********************** Outras Entradas ****************************************
{Ask} {\\Sistemas\\Vendas} {NotaC} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn "~VSDGDTREF"
Moveto [Situacao               ] TypeIn "Not C"
Moveto [Codigo da Destinacao   ] TypeIn "~VSDGDESTIN.."
Moveto [Descricao da Destinacao] TypeIn "Not ..DEVOL.."
Moveto [Tipo Movimento Estoque ] TypeIn "E"

If VSDG_USUCONTA[1]
   Then Moveto [Codigo_Usuario] TypeIn "_Usu"
   
        {Ask} {\\Sistemas\\Cadastro\\Usuarios}
        Moveto [Chapa          ] TypeIn "_Usu"
        Moveto [Conta Padrao   ] TypeIn "~VSDGCONTA.." 
EndIf

Do_It!
CLearAll

Sort "Answer" on "Codigo da Empresa","Tipo do Documento","Numero do Documento"
ClearAll

TOTOUTENTNF     =0

nr=nrecords("answer")

CoEdit Tabela,"Answer"
If nr>0
   Then 
        seq=1

        Moveto "Answer"
        Scan
        
          vrnf   =[Valor Nota Fiscal]  ; vr nf

          TOTOUTENTNF = TOTOUTENTNF + vrnf

          If VSDGCODMODELO="01" or VSDGCODMODELO="01B"
             Then Moveto Tabela
                  End Down

                  Seq=Seq+1
                  [Grupo    ]="1"
                  [Ordem    ]="04.03"
                  [Sequencia]=Seq
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],12," ")+IsNfe([Answer->Codigo do Documento])+
                                   Completa([Answer->Codigo]+"-"+[Answer->Razao Social],20," ")+"  "+
                                   Completa([Answer->Descricao da Destinacao],19," ")+"  "
                      
                  [vr1]=vrnf     
                  UnLockRecord

          endif

          Moveto "Answer"
        EndScan

        Seq=Seq+1
        Moveto Tabela
        End Down
        [Grupo    ]="1"
        [Ordem    ]="04.02"
        [Sequencia]=1
        [Acerto   ]="X"
        [Descricao]="Outras Entradas"
        [Vr1      ]=TOTOUTENTNF  
        unlockrecord

        End Down
        [Grupo    ]="1"
        [Ordem    ]="04.03"
        [Sequencia]=99999
        unlockrecord
        
endif
Do_It!
ClearAll

;********************** Doctos Cancelados **************************************
{Ask} {\\Sistemas\\Vendas} {NotaC} Check
Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao          ] TypeIn "~VSDGDTREF"
Moveto [Situacao                 ] TypeIn "C"
Moveto [Codigo da Destinacao     ] TypeIn "~VSDGDESTIN.."

If VSDG_USUCONTA[1]
   Then Moveto [Codigo_Usuario] TypeIn "_Usu"
   
        {Ask} {\\Sistemas\\Cadastro\\Usuarios}
        Moveto [Chapa          ] TypeIn "_Usu"
        Moveto [Conta Padrao   ] TypeIn "~VSDGCONTA.." 
EndIf

Do_It!
CLearAll

Sort "Answer" on "Codigo da Empresa","Tipo do Documento","Numero do Documento"
ClearAll

TOTCANCELADO    =0

NR = NRecords("answer")

CoEdit Tabela,"Answer"
If nr>0
   Then seq=1
        
        Moveto "Answer"
        Scan
        
          vrnf                       = [Valor Nota Fiscal        ]  ; vr nf
          TOTCANCELADO               = TOTCANCELADO + vrnf

          If VSDGCODMODELO="01" or VSDGCODMODELO="01B"
             Then Moveto Tabela
                  End Down

                  Seq=Seq+1
                  
                  [Grupo    ]="1"
                  [Ordem    ]="04.04"
                  [Sequencia]=Seq
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],12," ")+IsNfe([Answer->Codigo do Documento])+
                                   Completa([Answer->Codigo]+"-"+[Answer->Razao Social],20," ")+"  "+
                                   Completa([Answer->Descricao da Destinacao],19," ")+"  "
                  [vr1]=vrnf     

                  ;----- Justificativa de Cancelamento [Observacao na Nota Fiscal] -------------------------- 
                  AUX_DESCRICAO = ""
                  JUSTIFICATIVA_CANCELAMENTO = [Answer->Observacao na Nota Fiscal]
                  PosI = Search("[**CANCEL",JUSTIFICATIVA_CANCELAMENTO)
                  PosF = SearchFrom("**]",JUSTIFICATIVA_CANCELAMENTO,PosI)
                  If PosI>0 And PosF>0
                     Then JUSTIFICATIVA_CANCELAMENTO = Ltrim(Rtrim(SubStr(JUSTIFICATIVA_CANCELAMENTO,PosI+13,PosF)))
                          PosF = Search("**]",JUSTIFICATIVA_CANCELAMENTO)
                          If PosF>0 
                             Then JUSTIFICATIVA_CANCELAMENTO = SubStr(JUSTIFICATIVA_CANCELAMENTO,1,PosF-1)
                          EndIf   
                          AUX_DESCRICAO =JUSTIFICATIVA_CANCELAMENTO   
                  EndIf
                  
                  [Descricao2]=AUX_DESCRICAO
                  UnLockRecord
          EndIf
          Moveto "Answer"
        EndScan

        Seq=Seq+1
        Moveto Tabela
        End Down
        [Grupo    ]="1"
        [Ordem    ]="04.04"
        [Sequencia]=1
        [Acerto   ]="X"
        [Descricao]="Doctos Emitidos e Cancelados"
        [Vr1      ]=TOTCANCELADO
        unlockrecord

        End Down
        [Grupo    ]="1"
        [Ordem    ]="04.04"
        [Sequencia]=99999
        unlockrecord
endif
Do_It!
ClearAll

Release Vars PosI,PosF,AUX_CHAR,JUSTIFICATIVA_CANCELAMENTO

EndProc

;*******************************************************************************
;* Rotina p/                                                                   *
;*******************************************************************************
Proc IsNfe(codigo)
private s

s=""
if search("NFE",codigo)>0
   then s=[Answer->Sistema Gerador]
endif
    
return Completa(s,3," ")
endproc

;*******************************************************************************
;* Rotina p/                                                                   *
;*******************************************************************************
Proc GravaCartoes(fp,nc,vr)
private fp,nc,vr, ntabela

ntabela=table()

switch
  case fp="Limpa" :
    moveto Tabela_Cartoes
    while not recordstatus("New") del endwhile
    wwc=0

  otherwise       :
    moveto Tabela_Cartoes
    moveto [Forma de Pagamento  ]
    locate fp,nc
    if not retval
       then end
            Down
            [Forma de Pagamento  ]=fp
            [Nome do Cartao      ]=nc
            wwc=wwc+1
    endif        
    [Valor               ]=[Valor]+vr

endswitch

moveto ntabela  
endproc

;*******************************************************************************
;* Rotina p/                                                                   *
;*******************************************************************************
Proc GravaRecebimentos(tipo)
private tipo

switch
  case tipo="CX":
    moveto Tabela_Recebtos
    moveto [Origem]
    Locate "CX",[\sistemas\CtaCor\MovCont->Numero do Lancamento],[\sistemas\CtaCor\MovCont->Codigo da Conta]
    if not retval
       then
            end
            Down
            [Origem              ]="CX"
            [Numero do Lancamento]=[\sistemas\CtaCor\MovCont->Numero do Lancamento]
            [SequenciaOuConta    ]=[\sistemas\CtaCor\MovCont->Codigo da Conta     ]
    endif
  
  case tipo="CR":
    moveto Tabela_Recebtos
    moveto [Origem]
    Locate "CR",[\sistemas\ctarec\dupbaixa->Numero do Lancamento],[\sistemas\ctarec\dupbaixa->Sequencia da Baixa  ]
    if not retval
       then
            end
            Down
            [Origem              ]="CR"
            [Numero do Lancamento]=[\sistemas\ctarec\dupbaixa->Numero do Lancamento]
            [SequenciaOuConta    ]=[\sistemas\ctarec\dupbaixa->Sequencia da Baixa  ]
    endif

  case tipo="CP":
    moveto Tabela_Recebtos
    moveto [Origem]
    Locate "CP",[\sistemas\ctapag\titbaixa->Numero do Lancamento],[\sistemas\ctapag\titbaixa->Sequencia da Baixa  ]
    if not retval
       then
            end
            Down
            [Origem              ]="CP"
            [Numero do Lancamento]=[\sistemas\ctapag\titbaixa->Numero do Lancamento]
            [SequenciaOuConta    ]=[\sistemas\ctapag\titbaixa->Sequencia da Baixa  ]
    endif
  
  case tipo="CX2":
    moveto Tabela_Recebtos
    moveto [Origem]
    Locate "CX",[Answer->Lancamento Conta Corrente],[Answer->Codigo da Conta]
    if not retval
       then
            end
            Down
            [Origem              ]="CX"
            [Numero do Lancamento]=[Answer->Lancamento Conta Corrente]
            [SequenciaOuConta    ]=[Answer->Codigo da Conta          ]
    endif
  
endswitch
endproc

;*******************************************************************************
;* Rotina p/                                                                   *
;*******************************************************************************
Proc ChecaTC(tipo)
private tipo, lancto, ntabela, titok

ntabela=table()
titok=false
switch
  case tipo="TCG":
    

  case tipo="UTC":
    if [NotaV->Forma de Pagamento ]="TC" and SubsTr([NotaV->Numero do Cartao],1,3)="CP-"
       then lancto=Substr([NotaV->Numero do Cartao],4,6)
  
            Moveto "\\Sistemas\\Ctapag\\Titulos"
            Moveto [Numero do Lancamento]
            Locate lancto  
            If RetVal
               Then
                    if [Tipo do Pagamento]="TC"
                       then
                            Moveto "\\Sistemas\\Ctapag\\Titbaixa"
                            Moveto [Numero do Lancamento]
                            Locate [\sistemas\ctapag\titulos->numero do lancamento]  
                            If RetVal
                               Then While [Numero do Lancamento]=[\sistemas\ctapag\titulos->numero do lancamento]
                                            
                                      if [Codigo da Conta      ]=VSDGCONTA    and
                                         [Data do Pagamento    ]=VSDGDTREF    and
                                         [Tipo da Baixa        ]="DEVOLUCAO" 
                                         then
                                              gravarecebimentos("CP")
                                              titok=true
                                      endif
                                      
                                      Moveto "\\Sistemas\\Ctapag\\titbaixa"
                                      Skip
                                      If EOT() Then QuitLoop EndIf
                                    EndWhile
                            EndIf
                    EndIf
            EndIf
    endif   

  case tipo="UTCAC":

endswitch

moveto ntabela
return titok
endproc

;*******************************************************************************
;* Rotina p/ Selecionar Recebimentos                                           *
;*******************************************************************************
Proc SelecionaRecebimentos()
private lanctook

ClearAll

{Ask} {\\Sistemas\\Ctarec} {DupliC}
Moveto [Numero do Lancamento    ] Example "lanc"
Moveto [Tipo do Documento       ] Check
Moveto [Numero do Documento     ] Check
Moveto [Razao Social            ] Check
Moveto [Data de Emissao         ] check 
Moveto [Sistema Gerador         ] check
{Ask} {\\Sistemas\\Ctarec} {DupBaixa} Check
Moveto [Numero do Lancamento     ] Example "lanc"
Moveto [Data do Pagamento        ] TypeIn "~VSDGDTREF"
Moveto [Codigo da Conta          ] TypeIn "~VSDGCONTA.."   
Do_It!
ClearAll

Sort "Answer" on "Codigo da Conta","Tipo do Documento","Numero do Documento"
ClearAll

TOTRECTO =0
TOTJUR   =0
TOTDESC  =0
nr=nrecords("answer")

View "\\sistemas\\cadastro\\tppagto"
CoEdit Tabela_Recebtos,Tabela,Tabela_Moedas,"Answer"
If nr>0
   then seq=10
   
        Moveto "Answer"
        Scan
        
          lanctook=false
          moveto Tabela_Recebtos
          moveto [Origem]
          locate "CR",[Answer->Numero do Lancamento],[Answer->Sequencia da Baixa]
          if retval
             then lanctook=true
          endif
          
          moveto "Answer"
          if lanctook
             then loop
          endif        
        
          TOTRECTO=TOTRECTO+[Valor do Recebimento]
          TOTJUR  =TOTJUR  +[Answer->Valor do Juros   ]
          TOTDESC =TOTDESC +[Answer->Valor do Desconto]

          listamoedas("DN","",[Valor do Recebimento],"E")

          If VSDGCODMODELO="01" or VSDGCODMODELO="01B"
             Then Moveto Tabela
                  End Down
                  [Grupo    ]="2"
                  [Ordem    ]="05.1"
                  Seq=Seq+1
                  [Sequencia]=Seq
                  [Vr1      ]=[Answer->Valor do Recebimento]
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],16,"  ")+
                              [Answer->Razao Social     ]
                  [Vr2      ]=[Answer->Valor do Juros   ]
                  [Vr3      ]=[Answer->Valor do Desconto]
                  UnLockRecord
                  
          EndIf

          gravarecebimentos("CX2")
          
          Moveto "Answer"
        EndScan
EndIf
If TOTRECTO>0
   Then 
        Moveto Tabela
        End Down
        [Grupo    ]="2"
        [Ordem    ]="05"
        [Sequencia]=2
        [Acerto   ]="X"
        [Descricao]="Recebimentos de Titulos"
        [Sinal    ]="(+)"
        [Vr1      ]=TOTRECTO
        [Vr2      ]=TOTJUR  
        [Vr3      ]=TOTDESC  
        UnLockRecord

        End Down
        [Grupo    ]="2"
        [Ordem    ]="05.1"
        [Sequencia]=99999
        UnLockRecord
EndIf
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina p/ Selecionar Pagamentos                                             *
;*******************************************************************************
Proc SelecionaPagamentos()
private lanctook

ClearAll

{Ask} {\\Sistemas\\Ctapag} {Titulos}
Moveto [Numero do Lancamento    ] Example "lanc"
Moveto [Tipo do Documento       ] Check
Moveto [Numero do Documento     ] Check
Moveto [Razao Social            ] Check
Moveto [Data de Emissao         ] check 
Moveto [Sistema Gerador         ] check
Moveto [Tipo do Pagamento       ] typeIn "not TC"
{Ask} {\\Sistemas\\Ctapag} {TitBaixa} Check
Moveto [Numero do Lancamento     ] Example "lanc"
Moveto [Data do Pagamento        ] TypeIn "~VSDGDTREF"
Moveto [Codigo da Conta          ] TypeIn "~VSDGCONTA.."   
Do_It!
ClearAll

Sort "Answer" on "Codigo da Conta","Tipo do Documento","Numero do Documento"
ClearAll

TOTPAGTO =0
TOTJUR   =0
TOTDESC  =0

nr=nrecords("answer")

View "\\sistemas\\cadastro\\tppagto"
CoEdit Tabela_Recebtos,Tabela,Tabela_Moedas,"Answer"
If nr>0
   Then 
        seq=10
        Scan
        
          lanctook=false
          moveto Tabela_Recebtos
          moveto [Origem]
          locate "CP",[Answer->Numero do Lancamento],[Answer->Sequencia da Baixa]
          if retval
             then lanctook=true
          endif
          
          moveto "Answer"
          if lanctook
             then loop
          endif        

          TOTPAGTO=TOTPAGTO+[Valor do Pagamento]
          TOTJUR  =TOTJUR  +[Answer->Valor do Juros   ]
          TOTDESC =TOTDESC +[Answer->Valor do Desconto]

          listamoedas("DN","",[Valor do Pagamento],"S")

          If VSDGCODMODELO="01" or VSDGCODMODELO="01B"
             Then Moveto Tabela
                  End Down
                  [Grupo    ]="2"
                  [Ordem    ]="07.1"
                  Seq=Seq+1
                  [Sequencia]=Seq
                  [Vr1      ]=[Answer->Valor do Pagamento]
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],16,"  ")+
                              [Answer->Razao Social     ]
                  [Vr2      ]=[Answer->Valor do Juros   ]
                  [Vr3      ]=[Answer->Valor do Desconto]
                  UnLockRecord
          EndIf
          
          gravarecebimentos("CX2")
          
          Moveto "Answer"
          
        EndScan
EndIf

If TOTPAGTO>0
   Then 
        Moveto Tabela
        End Down
        [Grupo    ]="2"
        [Ordem    ]="07"
        [Sequencia]=2
        [Acerto   ]="X"
        [Descricao]="Pagamentos de Titulos"
        [Sinal    ]="(-)"
        [Vr1      ]=TOTPAGTO
        [Vr2      ]=TOTJUR  
        [Vr3      ]=TOTDESC  
        UnLockRecord

        End Down
        [Grupo    ]="2"
        [Ordem    ]="07.1"
        [Sequencia]=99999
        UnLockRecord
        
EndIf
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina p/ Selecionar Pagamentos                                             *
;*******************************************************************************
Proc SelecionaPagamentosTC()
private lanctook

ClearAll

{Ask} {\\Sistemas\\Ctapag} {Titulos}
Moveto [Numero do Lancamento    ] Example "lanc"
Moveto [Tipo do Documento       ] Check
Moveto [Numero do Documento     ] Check
Moveto [Razao Social            ] Check
Moveto [Data de Emissao         ] check 
Moveto [Sistema Gerador         ] check
Moveto [Tipo do Pagamento       ] typeIn "TC"
{Ask} {\\Sistemas\\Ctapag} {TitBaixa} Check
Moveto [Numero do Lancamento    ] Example "lanc"
Moveto [Data do Pagamento       ] TypeIn "~VSDGDTREF"
Moveto [Codigo da Conta         ] TypeIn "~VSDGCONTA.."
Do_It!
ClearAll

Sort "Answer" on "Codigo da Conta","Tipo do Documento","Numero do Documento"
ClearAll

TOTPAGTOTC =0

nr=nrecords("answer")

View "\\sistemas\\cadastro\\tppagto"
CoEdit Tabela_Recebtos,Tabela,Tabela_Moedas,"Answer"
If nr>0
   Then 
        seq=10
        Scan

          TOTPAGTOTC=TOTPAGTOTC+[Valor do Pagamento]

          If VSDGCODMODELO="01" or VSDGCODMODELO="01B"
             Then Moveto Tabela
                  End Down
                  [Grupo    ]="2"
                  [Ordem    ]="07.2"
                  Seq=Seq+1
                  [Sequencia]=Seq
                  [Vr1      ]=[Answer->Valor do Pagamento]
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],16,"  ")+
                                   format("D13",[Answer->Data de Emissao])+" "+
                                   [Answer->Razao Social     ]
                  UnLockRecord
                  Moveto "Answer"
          EndIf
        EndScan
EndIf

If TOTPAGTOTC>0
   Then 
        Moveto Tabela
        End Down
        [Grupo    ]="2"
        [Ordem    ]="07.2"
        [Sequencia]=2
        [Acerto   ]="X"
        [Descricao]="TC Utilizados"
        [Sinal    ]="   "
        [Vr1      ]=TOTPAGTOTC
        [Vr2      ]=0  
        [Vr3      ]=0  
        UnLockRecord

        End Down
        [Grupo    ]="2"
        [Ordem    ]="07.2"
        [Sequencia]=99999
        UnLockRecord
        
EndIf
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina p/ Selecionar Acertos                                                *
;*******************************************************************************
Proc SelecionaAcertos()
private vrjur, vrdes, vrtcu, vrtcg, vrpro
ClearAll

{Ask} {\\Sistemas\\Ctacor} {Bxautc} check
Moveto [Data da Baixa           ] TypeIn "~VSDGDTREF"
Moveto [Codigo da Conta         ] TypeIn "~VSDGCONTA.."
Moveto [Situacao                ] TypeIn "ATUALIZADO"
Do_It!
ClearAll

Sort "Answer" on "Codigo da Conta","Numero do Lote"
ClearAll

TOTACERTO=0

TOTAC_ARC=0
TOTAC_APG=0
TOTAC_CHE=0
TOTAC_CHS=0

TOTAC_JUR=0
TOTAC_DES=0
TOTAC_PRO=0
TOTAC_TCG=0

TOTAC_ORC=0
TOTAC_OPG=0
TOTAC_VTR=0

nr=nrecords("answer")

If nr>0
   Then 
        View "\\Sistemas\\Ctarec\\Duplic"
        View "\\Sistemas\\Ctarec\\DupBaixa"
        View "\\Sistemas\\Ctapag\\Titulos"
        View "\\Sistemas\\Ctapag\\TitBaixa"
        View "\\Sistemas\\CtaCor\\MovCont"
        View "\\sistemas\\cadastro\\tppagto"
        View "\\sistemas\\ctacor\\bxautie"
        View "\\sistemas\\ctacor\\bxautir"
        View "\\sistemas\\ctacor\\bxautip"
        View "\\sistemas\\ctacor\\conta"
        View Tabela_Recebtos
        View Tabela_Moedas
        View Tabela
        View "Answer"
        CoeditKey

        seq=10

        Moveto "Answer"
        Scan

          Moveto "\\sistemas\\ctacor\\bxautip"
          moveto [Numero do Lote]
          locate [answer->numero do lote]
          if retval
             then while [numero do lote]=[answer->numero do lote]

                    Moveto "\\Sistemas\\Ctapag\\Titulos"
                    Moveto [Numero do Lancamento]
                    Locate [\sistemas\ctacor\bxautip->Numero do Lancamento]   
                    If RetVal
                       Then   
                            Moveto "\\Sistemas\\Ctapag\\Titbaixa"
                            Moveto [Numero do Lancamento]
                            Locate [\sistemas\ctapag\titulos->numero do lancamento]  
                            If RetVal
                               Then While [Numero do Lancamento]=[\sistemas\ctapag\titulos->numero do lancamento]
                                            
                                      if [Codigo da Conta        ]=VSDGCONTA and
                                         [Data do Pagamento      ]=VSDGDTREF and
                                         [Bx Sistema Gerador     ]="BX"      and 
                                         [Bx Tipo Docto Gerador  ]="ACF"     and
                                         [Bx Numero Docto Gerador]=[Answer->Numero do Lote]
                                         then
                                               if [Tipo da Baixa]<>"NORMAL"
                                                  then
                                                       gravarecebimentos("CP")

                                                  else
                                                       Moveto "\\Sistemas\\CtaCor\\MovCont"
                                                       Moveto [Numero do Lancamento]
                                                       Locate [\Sistemas\Ctapag\titbaixa->Lancamento Conta Corrente],
                                                              [\Sistemas\Ctapag\titbaixa->Codigo da Conta]
                                                       If RetVal
                                                          then 
                                                                if [Codigo da Conta   ]=VSDGCONTA and
                                                                   [Data              ]=VSDGDTREF and
                                                                   [Codigo do EmitDest]=[Answer->Codigo]
                                                                   then
                                                                        gravarecebimentos("CX")
                                                                        gravarecebimentos("CP")
                                                                endif
                                                       endif
                                               endif
                                      endif
                                      
                                      Moveto "\\Sistemas\\Ctapag\\titbaixa"
                                      Skip
                                      If EOT() Then QuitLoop EndIf
                                    EndWhile
                            EndIf
                    EndIf

                    Moveto "\\sistemas\\ctacor\\bxautip"
                    skip
                    if eot() then quitloop endif
                  endwhile
          endif    

          Moveto "\\sistemas\\ctacor\\bxautir"
          moveto [Numero do Lote]
          locate [answer->numero do lote]
          if retval
             then while [numero do lote]=[answer->numero do lote]

                    Moveto "\\Sistemas\\Ctarec\\Duplic"
                    Moveto [Numero do Lancamento]
                    Locate [\sistemas\ctacor\bxautir->Numero do Lancamento]   
                    If RetVal
                       Then   
                            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]
                                            
                                      if [Codigo da Conta        ]=VSDGCONTA and
                                         [Data do Pagamento      ]=VSDGDTREF and
                                         [Bx Sistema Gerador     ]="BX"      and 
                                         [Bx Tipo Docto Gerador  ]="ACF"     and
                                         [Bx Numero Docto Gerador]=[Answer->Numero do Lote]
                                         then
                                               if [Tipo da Baixa]<>"NORMAL"
                                                  then
                                                       gravarecebimentos("CR")
                                                  else
                                                       Moveto "\\Sistemas\\CtaCor\\MovCont"
                                                       Moveto [Numero do Lancamento]
                                                       Locate [\Sistemas\Ctarec\dupbaixa->Lancamento Conta Corrente],
                                                              [\Sistemas\Ctarec\dupbaixa->Codigo da Conta]
                                                       If RetVal
                                                          then 
                                                                if [Codigo da Conta   ]=VSDGCONTA and
                                                                   [Data              ]=VSDGDTREF and
                                                                   [Codigo do EmitDest]=[Answer->Codigo]
                                                                   then
                                                                        gravarecebimentos("CX")
                                                                        gravarecebimentos("CR")
                                                                endif
                                                       endif
                                               endif
                                      endif
                                      
                                      Moveto "\\Sistemas\\Ctarec\\dupbaixa"
                                      Skip
                                      If EOT() Then QuitLoop EndIf
                                    EndWhile
                            EndIf
                    EndIf

                    Moveto "\\sistemas\\ctacor\\bxautir"
                    skip
                    if eot() then quitloop endif
                  endwhile
          endif    

          getrecord "\\sistemas\\ctacor\\conta" [Answer->Codigo da Conta] to regconta
          if retval
             then
                  Moveto "\\Sistemas\\CtaCor\\MovCont"
                  Moveto [Empresa Gerador]
                  Locate IndexOrder by "Indcxa30" regconta["Codigo da Empresa"], [Answer->Numero do Lote]
                  If RetVal
                     Then While [Empresa Gerador    ]=regconta["Codigo da Empresa"] And
                                [Lancamento Gerador ]=[Answer->Numero do Lote     ] 
        
                            if [Codigo da Conta   ]=VSDGCONTA and
                               [Data              ]=VSDGDTREF and
                               [Sistema Gerador   ]="AF" 
                               then gravarecebimentos("CX")
        
                                    Moveto "\\Sistemas\\CtaCor\\MovCont"
                            endif
        
                            Skip
                            If EOT() Then QuitLoop EndIf
                            Locate IndexOrder by "Indcxa30" Next regconta["Codigo da Empresa"], [Answer->Numero do Lote]
                            
                          EndWhile
                  EndIf
          endif
          
          moveto "Answer"
          vrjur=0
          vrdes=0
          vrtcg=0
          vrpro=0

          if [Answer->Tipo_TCGerado]="P" then vrtcg=[Answer->Valor_TCGerado] endif ; titulo de credito
          if [Answer->Tipo_TCGerado]="R" then vrpro=[Answer->Valor_TCGerado] endif ; promissoria
          
          Moveto "\\sistemas\\ctacor\\bxautie"
          moveto [Numero do Lote]
          locate [answer->numero do lote]
          if retval
             then while [numero do lote]=[answer->numero do lote]
             
                    vrjur=vrjur+[Bx Valor do Juros   ]
                    vrdes=vrdes+[Bx Valor do Desconto]
             
                    TOTAC_CHE    =TOTAC_CHE    +[Valor]
                    listamoedas("CH","",[Valor],"E")
             
                    skip
                    if eot() then quitloop endif
                  endwhile
          endif    

          TOTACERTO= TOTACERTO + [Answer->Total_Receber]  
          TOTACERTO= TOTACERTO - [Answer->Total_Pagar  ] 
          
          TOTACERTO=(TOTACERTO+ vrtcg+ vrdes)-(vrpro+vrjur)  

          If VSDGCODMODELO="01" or VSDGCODMODELO="01B"
             Then
                  MSGJUROS=Format("W6.2",[Answer->Taxa de Juros])+"   "+[Answer->Tipo Taxa de Juros]+"  " 
                  Switch
                    Case [Answer->Tipo Taxa de Juros]=""  : MSGJUROS=MSGJUROS+"   " 
                    Case [Answer->Tipo Taxa de Juros]="D" : MSGJUROS=MSGJUROS+"Dia" 
                    Case [Answer->Tipo Taxa de Juros]="M" : MSGJUROS=MSGJUROS+"Mˆs"
                    Case [Answer->Tipo Taxa de Juros]="A" : MSGJUROS=MSGJUROS+"Ano" 
                  EndSwitch 
                  MSGJUROS=MSGJUROS+"/"+Format("W3,AR",[Answer->NDias Taxa de JUros])+" Dias"

             
                  Moveto Tabela
                  End Down

                  Seq=Seq+1
                  [Grupo    ]="3"
                  [Ordem    ]="07.10"
                  [Sequencia]=Seq
                  [Descricao]="  "+Completa("AF"+"/"+[Answer->Numero do Lote],12," ")+
                                   Completa([Answer->Codigo]+"-"+[Answer->Razao Social],21," ")+"  "+
                                   Completa(MSGJUROS,21," ")        
                      
                  [vr2 ]=[Answer->Total_Receber]     
                  [vr3 ]=[Answer->Total_Pagar  ]     
                  [vr4 ]=[Answer->Total_Cheque_Recebido ]     
                  [vr5 ]=[Answer->Total_Cheque_Utilizado]     
                  [vr6 ]=vrjur
                  [vr7 ]=vrdes 
                  [Vr8 ]=vrpro
                  [Vr9 ]=vrtcg
                  [vr10]=[Answer->OutrosValores_Recebido]     
                  [vr11]=[Answer->OutrosValores_Pago    ]     
                  [vr12]=[Answer->Valor_Troco           ]     
                  
                  UnLockRecord

                  Moveto "Answer"
          endif
          
          TOTAC_ARC=TOTAC_ARC+[Answer->Total_Receber]
          TOTAC_APG=TOTAC_APG+[Answer->Total_Pagar  ]
          TOTAC_CHS=TOTAC_CHS+[Answer->Total_Cheque_Utilizado]
          
          TOTAC_JUR=TOTAC_JUR+vrjur
          TOTAC_DES=TOTAC_DES+vrdes
          TOTAC_PRO=TOTAC_PRO+vrpro
          TOTAC_TCG=TOTAC_TCG+vrtcg

          TOTAC_ORC=TOTAC_ORC+[Answer->OutrosValores_Recebido]     
          TOTAC_OPG=TOTAC_OPG+[Answer->OutrosValores_Pago    ]     
          TOTAC_VTR=TOTAC_VTR+[Answer->Valor_Troco           ]     

          listamoedas("DN","",[Answer->OutrosValores_Recebido],"E")

          listamoedas("DN","",[Answer->OutrosValores_Pago    ],"S")
          listamoedas("DN","",[Answer->Valor_Troco           ],"S")

          listamoedas("NP" ,"",vrpro,"E")
          listamoedas("TCG","",vrtcg,"S")
           
        EndScan

        Moveto Tabela
        End Down
        [Grupo    ]="3"
        [Ordem    ]="07.10"
        [Sequencia]=1       
        [Acerto   ]="X"
        [Descricao]="Acertos Financeiros"
        [Vr2      ]=TOTAC_ARC  
        [Vr3      ]=TOTAC_APG        
        [Vr4      ]=TOTAC_CHE    
        [Vr5      ]=TOTAC_CHS   
        [Vr6      ]=TOTAC_JUR         
        [Vr7      ]=TOTAC_DES       
        [Vr8      ]=TOTAC_PRO
        [Vr9      ]=TOTAC_TCG
        [Vr10     ]=TOTAC_ORC
        [Vr11     ]=TOTAC_OPG
        [Vr12     ]=TOTAC_VTR
        UnLockRecord

        End Down
        [Grupo    ]="3"
        [Ordem    ]="07.10"
        [Sequencia]=99999   
        UnLockRecord

        Do_It!
        ClearAll

EndIf

EndProc

;*******************************************************************************
;* Rotina p/ Selecionar Outras Entradas/Saidas                                 *
;*******************************************************************************
Proc SelecionaOutrasEntradasSaidas()
private lanctook

ClearAll

{Ask} {\\Sistemas\\Ctacor} {MovCont} Check
Moveto [Data                  ] TypeIn "~VSDGDTREF"
Moveto [Codigo da Conta       ] TypeIn "~VSDGCONTA.."
Do_It!
ClearAll

Sort "Answer" on "Codigo da Conta","Numero do Lancamento"
ClearAll

TOTOUTENT =0
TOTJURENT =0
TOTDESENT =0

TOTOUTSAI =0
TOTJURSAI =0
TOTDESSAI =0

TOTOUTENTD=0
TOTOUTSAID=0

nr=nrecords("answer")

View "\\sistemas\\cadastro\\tppagto"
CoEdit Tabela_Recebtos,Tabela,Tabela_Moedas,"Answer"
If nr>0
   Then 
        seq=10
        Scan
	        If [Answer->Tipo Movimento]="E"
	           Then TOTOUTENTD  =TOTOUTENTD  +[Valor]

	           Else TOTOUTSAID  =TOTOUTSAID  +[Valor]

	        EndIf
	        
          lanctook=false
          moveto Tabela_Recebtos
          moveto [Origem]
          locate "CX",[Answer->Numero do Lancamento],[Answer->Codigo da Conta]
          if retval
             then lanctook=true
          endif
          
          moveto "Answer"
          if not lanctook
             then
    		          If [Answer->Tipo Movimento]="E"
    		             Then TOTOUTENT =TOTOUTENT +[Valor]
                          TOTJURENT =TOTJURENT +[Answer->Valor do Juros   ]
                          TOTDESENT =TOTDESENT +[Answer->Valor do Desconto]
    
                          listamoedas("DN","",[Valor],"E")
     
    		             Else TOTOUTSAI =TOTOUTSAI +[Valor]
                          TOTJURSAI =TOTJURSAI +[Answer->Valor do Juros   ]
                          TOTDESSAI =TOTDESSAI +[Answer->Valor do Desconto]
    
                          listamoedas("DN","",[Valor],"S")
    
    		          EndIf
                  If VSDGCODMODELO="01" or VSDGCODMODELO="01B"
    		             Then Moveto Tabela
    		                  End Down
    		                  If [Answer->Tipo Movimento]="E"
    		                     Then [Ordem   ]="06.1"
    		                     Else [Ordem   ]="08.1"
    		                  EndIf
                          Seq=Seq+1
                          [Grupo    ]="2"
                          [Sequencia]=Seq
    		                  [Vr1      ]=[Answer->Valor]
    		                  [Descricao]="  "+[Answer->Descricao do Historico]
    		                  [Vr2      ]=[Answer->Valor do Juros   ]
    		                  [Vr3      ]=[Answer->Valor do Desconto]
    		                  UnLockRecord
    		                  Moveto "Answer"
    		          EndIf
          endif
        EndScan
EndIf

If TOTOUTENT>0
   Then 
        Moveto Tabela
        End Down
        [Grupo    ]="2"
        [Ordem    ]="06"
        [Sequencia]=2
        [Acerto   ]="X"
        [Descricao]="Outras Entradas da Conta"
        [Sinal    ]="(+)"
        [Vr1      ]=TOTOUTENT
        [Vr2      ]=TOTJURENT
        [Vr3      ]=TOTDESENT
        UnLockRecord

        End Down
        [Grupo    ]="2"
        [Ordem    ]="06.1"
        [Sequencia]=99999
        UnLockRecord
        
EndIf
If TOTOUTSAI>0
   Then 
        Moveto Tabela
        End Down
        [Grupo    ]="2"
        [Ordem    ]="08"
        [Sequencia]=4
        [Acerto   ]="X"
        [Descricao]="Outras Saidas da Conta"
        [Sinal    ]="(-)"
        [Vr1      ]=TOTOUTSAI
        [Vr2      ]=TOTJURSAI
        [Vr3      ]=TOTDESSAI
        UnLockRecord

        End Down
        [Grupo    ]="2"
        [Ordem    ]="08.1"
        [Sequencia]=99999
        UnLockRecord
        
EndIf
Do_It!
ClearAll

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina p/ Selecionar Conta                                                  *
;*******************************************************************************
Proc SelecionaConta()
ClearAll

SALDOINI =0
ANOREF   =StrVal(Year(VSDGDTREF))
MESREF   =AlinhM(StrVal(Month(VSDGDTREF)),2)
VSDGDTINI=DateVal(MESREF+"/"+"01"+"/"+ANOREF)
                
View "\\Sistemas\\Ctacor\\SaldCont"
Moveto [Codigo da Conta]
Locate VSDGCONTA,ANOREF,MESREF
If Not RetVal
   Then Mensagem("Conta sem Saldo Inicial Informado !// //Saldo Inicial ser  = 0")
   Else SALDOINI=[Saldo Inicial]
EndIf
ClearImage

{Ask} {\\Sistemas\\Ctacor} {Movcont}
Moveto [Codigo da Conta        ] TypeIn "~VSDGCONTA.."
Moveto [Data                   ] TypeIn ">=~VSDGDTINI, <~VSDGDTREF"
Moveto [Tipo Movimento         ] Check
Moveto [Valor                  ] TypeIn "Calc Sum as Soma"
Do_It!
ClearAll

TOTENTRA=0
TOTSAIDA=0

nr=nrecords("answer")

CoEdit Tabela,"Answer"
If nr>0
   Then 
        Scan
          If [Tipo Movimento]="E" Then TOTENTRA=[Soma] EndIf
          If [Tipo Movimento]="S" Then TOTSAIDA=[Soma] EndIf
        EndScan
EndIf

Moveto Tabela
End Down
[Ordem    ]="01.1"
[Acerto   ]="X"
[Descricao]="Saldo Inicial"
[Sinal    ]="(=)"
[Vr1      ]=(SALDOINI+TOTENTRA)-TOTSAIDA
UnLockRecord

End Down
[Ordem    ]="01.2"
UnLockRecord
Do_It!
ClearAll

EndProc


;*******************************************************************************
;* Rotina p/ imprimir total vendedores                                         *
;*******************************************************************************
Proc TotalVendedores()

if sys_codigo_cliente="0294" or
   sys_codigo_cliente="0000"   
   then return
endif

TOTVVENDEDOR=0
TOTDVENDEDOR=0
i           =0
Moveto Tabela_Vendedores
Scan
  copytoarray regvendedor

  i=i+1

  Moveto Tabela
  End Down
  [Grupo    ]="5"
  [Ordem    ]="01"
  [Sequencia]=i       
  [Descricao]=regvendedor["Codigo"]+" "+regvendedor["Nome"]
  [Vr1      ]=regvendedor["Vendas"]  
  [Vr2      ]=regvendedor["Devolucoes"]  
  [Vr3      ]=[vr1]-[vr2]    
  UnLockRecord

  TOTVVENDEDOR=TOTVVENDEDOR+regvendedor["Vendas"]
  TOTDVENDEDOR=TOTDVENDEDOR+regvendedor["Devolucoes"]

  moveto Tabela_Vendedores
endScan


Moveto Tabela
End Down
[Grupo    ]="5"
[Ordem    ]="01"
[Sequencia]=0       
[Acerto   ]="X"
[Descricao]="Vendedores"
[Vr1      ]=TOTVVENDEDOR
[Vr2      ]=TOTDVENDEDOR        
[Vr3      ]=[vr1]-[vr2]    
UnLockRecord

Moveto Tabela
End Down
[Grupo    ]="5"
[Ordem    ]="01"
[Sequencia]=99999       
UnLockRecord

endproc

;*******************************************************************************
;* Rotina p/ Selecionar Somatoria                                              *
;*******************************************************************************
Proc SelecionaSomatorias()
private i, regvendedor, regmoeda, totmoedae, totmoedas
ClearAll

CoEdit Tabela_Moedas, Tabela_Vendedores, Tabela

;-- Total Moedas ---------------------------------------------------------------
i        =0
totmoedae=0
totmoedas=0
Moveto Tabela_Moedas
Scan
  copytoarray regmoeda

  i=i+1

  Moveto Tabela
  End Down
  [Grupo    ]="4"
  [Ordem    ]="01"
  [Sequencia]=i       
  [Descricao]=format("W4,AL",regmoeda["Codigo"])+Format("W21,AL",regmoeda["Nome"])+Format("W20,AL",regmoeda["NomeCartao"])+" "+format("W4,EIC",regmoeda["Contador"])
  [Vr1      ]=regmoeda["Entradas"]  
  [Vr2      ]=regmoeda["Saidas"  ]
  
  if regmoeda["Codigo"]=" DN" then [Vr3      ]=[vr1]-[vr2] endif    
  UnLockRecord

  totmoedae=totmoedae+regmoeda["Entradas"]
  totmoedas=totmoedas+regmoeda["Saidas"  ]

  moveto Tabela_Moedas
endScan



Moveto Tabela
End Down
[Grupo    ]="4"
[Ordem    ]="00"
[Sequencia]=1       
[Acerto   ]="X"
[Descricao]="Moedas"
[Vr1      ]=totmoedae
[Vr2      ]=totmoedas
UnLockRecord

Moveto Tabela
End Down
[Grupo    ]="4"
[Ordem    ]="01"
[Sequencia]=99999       
UnLockRecord

;-------------------------------------------------------------------------------

;-- Total Vendedores -----------------------------------------------------------
TotalVendedores()
;-------------------------------------------------------------------------------

;-- Saldos ---------------------------------------------------------------------
SALDOCALC=(SALDOINI+TOTENTRA)-TOTSAIDA

SALDOCALC=SALDOCALC + ( TOTVENDAS_R + TOTRECTO + TOTOUTENT )
SALDOCALC=SALDOCALC - ( TOTDEVOLU_P + TOTCOMPRU_P + TOTPAGTO + TOTOUTSAI )

SALDOCALC=SALDOCALC + TOTACERTO

SALDOCALC=( SALDOCALC + TOTAC_PAGO) - TOTAC_RECEBIDO

SALDOCONT=(((SALDOINI+TOTENTRA)-TOTSAIDA)+TOTOUTENTD)-TOTOUTSAID

SALDODIFE=SALDOCALC-SALDOCONT
;-------------------------------------------------------------------------------

End Down
[Grupo    ]="9"
[Ordem    ]="10"
[Sequencia]=1
[Descricao]=""
[Sinal    ]=""
[Vr1      ]=blanknum()
UnLockRecord

End Down
[Grupo    ]="9"
[Ordem    ]="10"
[Sequencia]=5
[Acerto   ]="X"
[Descricao]="Saldo Final do dia Calculado"
[Sinal    ]="(=)"
[Vr1      ]=SALDOCALC
UnLockRecord

End Down
[Grupo    ]="9"
[Ordem    ]="10"
[Sequencia]=6
[Descricao]=""
[Sinal    ]=""
[Vr1      ]=blanknum()
UnLockRecord

End Down
[Grupo    ]="9"
[Ordem    ]="10"
[Sequencia]=7
[Acerto   ]="X"
[Descricao]="Saldo Real  do dia na Conta"
[Sinal    ]="(=)"
[Vr1      ]=SALDOCONT

UnLockRecord

End Down
[Grupo    ]="9"
[Ordem    ]="10"
[Sequencia]=8
[Acerto   ]="X"
[Descricao]="Diferenca de Saldos no dia"
[Sinal    ]="(=)"
[Vr1      ]=SALDODIFE
UnLockRecord

Do_It!
ClearAll

EndProc   ; (Seleciona)

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc listavendedor(codigo, nome, vvalor, dvalor)
private codigo, nome, vvalor, dvalor, tabold

tabold=table() 

moveto tabela_vendedores
moveto [codigo]
locate codigo
if not retval
   then end
        down
        [Codigo]=codigo
        [Nome  ]=nome
endif        

[Vendas    ]=[Vendas    ]+vvalor
[Devolucoes]=[Devolucoes]+dvalor
unlockrecord

moveto tabold
endproc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc listamoedas(codigo, nomecartao, valor, tipo)
private codigo, nomecartao, nome, valor, tipo, tabold, regtppagto

tabold=table() 

nome=""
if codigo="DN"  then codigo    =" DN"       endif 
if codigo="TC"  then nomecartao="UTILIZADO" endif

if codigo="TCG" then nome      ="TITULO DE CREDITO"             
                     nomecartao="GERADO"               endif

moveto tabela_moedas     
moveto [codigo]
locate codigo, nomecartao
if not retval
   then 
        getrecord "\\sistemas\\cadastro\\tppagto" ltrim(codigo) to regtppagto
        if retval
           then nome=regtppagto["Descricao Tipo Pagamento"]
        endif   
        
        end
        down
        [Codigo    ]=codigo
        [NomeCartao]=nomecartao
        [Nome      ]=nome
endif        
switch
  case tipo="E" : [Entradas]=[Entradas]+valor
  case tipo="S" : [Saidas  ]=[Saidas  ]+valor
endswitch
[Contador]=[Contador]+1
unlockrecord

moveto tabold
endproc

;*******************************************************************************
;* Rotina de Impressao                                                         *
;*******************************************************************************
Proc Imprimir()

ARQIMP=PrivDir()+"XX_1200B.txt"
If IsFile(ARQIMP)
   Then Deleta_Arquivo(ARQIMP)
EndIf     

Sort Tabela On "Grupo","Ordem","Sequencia"
ClearAll

If Not IsAssigned(NOMEMPRESA) Then NOMEMPRESA = "" EndIf

Grupo = "***"
CONTA = 0
TPAGE = 47
NPAGE = 0
LINHA = 0

Coedit Tabela
Grupo = [Grupo]
Scan
  ;---- Verifica Grupos --------------------------------------------------------
  CONTA = CONTA + 1
; If CONTA > 1 And Grupo = "***" And Rtrim([Grupo])<>""
;    Then Grupo = [Grupo]
;         If LINHA <> 0
;            Then LINHA = 0
;         EndIf
;         Print File ARQIMP "\f"
; EndIf
  
  If Grupo<>"***" And Grupo <> [Grupo]
     Then Grupo = [Grupo]
          
          If LINHA + 2 >= TPAGE
             Then LINHA = 0
                  Print File ARQIMP "\f"
             Else LINHA = LINHA + 2     

                  Switch
                    Case [Grupo] = "1" : Print File ARQIMP Spaces(2)+tit01_1+"\n"
                                         Print File ARQIMP Spaces(2)+tit01_2+"\n"
                    Case [Grupo] = "2" : Print File ARQIMP Spaces(2)+tit02_1+"\n"
                                         Print File ARQIMP Spaces(2)+tit02_2+"\n"
                    Case [Grupo] = "3" : Print File ARQIMP Spaces(2)+tit03_1+"\n"
                                         Print File ARQIMP Spaces(2)+tit03_2+"\n"  
                    Case [Grupo] = "3" : Print File ARQIMP Spaces(2)+tit03_1+"\n"
                                         Print File ARQIMP Spaces(2)+tit03_2+"\n"  
                    Case [Grupo] = "4" : Print File ARQIMP Spaces(2)+tit04_1+"\n"
                                         Print File ARQIMP Spaces(2)+tit04_2+"\n"  
                    Case [Grupo] = "5" : Print File ARQIMP Spaces(2)+tit05_1+"\n"
                                         Print File ARQIMP Spaces(2)+tit05_2+"\n"  
                  EndSwitch
          endif
  EndIf
  
  ;---- Cabe‡alho -------------------------------------------------------------- 
  If LINHA =0
     Then NPAGE = NPAGE + 1

          Print File ARQIMP CI_20CPP
          Print File ARQIMP "\n\n"
          Print File ARQIMP Spaces(2)+Fill("-",226)+"\n"
          Print File ARQIMP Spaces(2)+Format("W40",NOMEMPRESA)+Spaces(144)+"EMISSAO: "+Format("D13",Today())+"-"+Time()+Spaces(4)+"PAG: "+Format("W3,AR",NPAGE)+"\n"
          Print File ARQIMP Spaces(2)+Fill("-",226)+"\n"
          Print File ARQIMP "\n"
          Print File ARQIMP Spaces(2)+"Controle do Caixa "+Format("W33",VSDGCONTA+" "+VSDGNOMCONTA)+" de "+Format("D13",VSDGDTREF)+" - "+
                                      Format("W6",VSDGNCONTROLE)+Spaces(14)+"Empresa "+Format("W33",VSDGEMPRESA+" "+VSDGNOMEMP)+"\n\n"      
          
          Switch
            Case [Grupo] = "1" : Print File ARQIMP Spaces(2)+tit01_1+"\n"
                                 Print File ARQIMP Spaces(2)+tit01_2+"\n"
            Case [Grupo] = "2" : Print File ARQIMP Spaces(2)+tit02_1+"\n"
                                 Print File ARQIMP Spaces(2)+tit02_2+"\n"
            Case [Grupo] = "3" : Print File ARQIMP Spaces(2)+tit03_1+"\n"
                                 Print File ARQIMP Spaces(2)+tit03_2+"\n"  
            Case [Grupo] = "4" : Print File ARQIMP Spaces(2)+tit04_1+"\n"
                                 Print File ARQIMP Spaces(2)+tit04_2+"\n"  
            Case [Grupo] = "5" : Print File ARQIMP Spaces(2)+tit05_1+"\n"
                                 Print File ARQIMP Spaces(2)+tit05_2+"\n"  
            OtherWise          : Print File ARQIMP Spaces(2)+tit00_1+"\n"
                                 Print File ARQIMP Spaces(2)+tit00_2+"\n"  
          EndSwitch
          LINHA = 10
  EndIf   
  LINHA = LINHA + 1
  
  ;---- Itens ------------------------------------------------------------------
  Print File ARQIMP Spaces(2)
  If Upper(Rtrim([Acerto]))="X" 
     Then Print File ARQIMP CI_INEG
  EndIf


  if isblank([Descricao2])
     then
          Print File ARQIMP Format("W68",[Descricao])+
                            Format("W12.2,EIC",[Vr1])+Format("W3,AL",[Sinal])+
                            Format("W11.2,EIC",[Vr2])+
                            Format("W11.2,EIC",[Vr3])+
                            Format("W11.2,EIC",[Vr4])+
                            Format("W11.2,EIC",[Vr5])+
                            Format("W11.2,EIC",[Vr6])+
                            Format("W11.2,EIC",[Vr7])+
                            Format("W11.2,EIC",[Vr8])+
                            Format("W11.2,EIC",[Vr9])+
                            Format("W11.2,EIC",[Vr10])+
                            Format("W11.2,EIC",[Vr11])+
                            Format("W11.2,EIC",[Vr12])+
                            Format("W11.2,EIC",[Vr13])+"\n"
     else
          Print File ARQIMP Format("W68",[Descricao])+
                            Format("W12.2,EIC",[Vr1])+Format("W3,AL",[Sinal])+
                            [Descricao2]+"\n"
  endif
  
  If Upper(Rtrim([Acerto]))="X" 
     Then Print File ARQIMP CI_FNEG
  EndIf
                      
  If LINHA >= TPAGE
     Then LINHA = 0
          Print File ARQIMP "\f"
  EndIf
EndScan
Do_It!
ClearAll

ImpriArq(ARQIMP)

EndProc ;Imprimir()


;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_CONTA"         : Campo="TG_EMPRESA"
            Case Campo="TG_DESTIN"        : Campo="TG_CONTA"
            Case Campo="TG_DTREF"         : Campo="TG_DESTIN"
            Case Campo="TG_USUCONTA"      : Campo="TG_DTREF"
            Case Campo="TG_CODMODELO"     : Campo="TG_USUCONTA"
            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_CONTA"
                    Case Campo="TG_CONTA"        : Campo="TG_DESTIN"
                    Case Campo="TG_DESTIN"       : Campo="TG_DTREF"
                    Case Campo="TG_DTREF"        : Campo="TG_USUCONTA"
                    Case Campo="TG_USUCONTA"     : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"    : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA"  :
     MSG_CAMPO="Somente uma Empresa disponivel"
  Case Campo="TG_CONTA"    :
     MSG_CAMPO="Somente uma Conta disponivel"
  Case Campo="TG_USUCONTA" :
     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 - Faturamento + Movimento da Conta")
ModeloRelatoriosAdd("01B Anal¡tico - S¢ Faturamento")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("02  Sint‚tico - Faturamento + Movimento da Conta")
ModeloRelatoriosAdd("02B Sint‚tico - S¢ Faturamento")
ModeloRelatoriosAdd("Fim")

EndProc ;ModeloRelatoriosCarregaLista

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

sys_Valor()

If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA    =""  EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE  =""  EndIf

VSDGEMPRESA  =""
VSDGCONTA    =""
VSDGNCONTROLE=SYS_CONTROLE_DIA
VSDGDTREF    =Today()

Array VSDG_USUCONTA[1]
VSDG_USUCONTA[1] = False

ModeloRelatoriosCarregaLista()

While True

  ShowDialog "Controle do Caixa" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 14 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 "Conta"  For "TG_CONTA"
    Accept @ 03,01 Width 07 "A4"  Picture "#*#" Tag "TG_CONTA"    To VSDGCONTA
    Accept @ 03,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMCONTA" To VSDGNOMCONTA

    Label  @ 04,00 "Destina‡ao"  For "TG_DESTIN"
    Accept @ 05,02 Width 06 "A3"  Picture "#*#" Tag "TG_DESTIN"    To VSDGDESTIN
    Accept @ 05,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMDESTIN" To VSDGNOMDESTIN

    Label  @ 00,35 "Data Referente" For "TG_DTREF"
    Accept @ 01,36 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF

    CheckBoxes @03,35 Height 1 Width 33 Tag "TG_USUCONTA"
    "Conta padr„o por usu rio" to VSDG_USUCONTA[1]

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

    Pushbutton @ 10,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 10,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  if not ValidarModelosRelatorios() then loop endif         

  If VSDGCONTA=""
     Then Mensagem("Conta Invalida !")
          Loop
  EndIf

  If VSDGTPCONTA<>"X"
     Then Mensagem("Tipo de conta inv lida !// Informar conta tipo CAIXA !")
          Loop
  EndIf

  if not IsUsuarioEmpresa(VSDGEMPRESA) then loop Endif

  DISPOSITIVO()
  If OK="" Then Loop EndIf

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

  Seq=0
  SelecionaVendas_Devolucoes()

  If VSDGCODMODELO="01" or VSDGCODMODELO="02"
     then
          SelecionaAcertos()
          SelecionaConta()
          SelecionaRecebimentos()
          SelecionaOutrasEntradasSaidas()
          SelecionaPagamentos()
          SelecionaPagamentosTC()
          SelecionaSomatorias()
  endif

  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela
          Loop
  EndIf

  tit00_1="Documento                                                                  Valor     Devolucao (+)Liquido "+
  "        DN      CH/CP         NP        TCU        TCG         CD         CT         CL (+)Recbido  A Receber  Diferenca"
  tit00_2="-------------------------------------------------------------------- -----------    ---------- ---------- "+
  "---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------"

  tit01_1="Documento                                                                  Valor     Devolucao (-)Liquido "+
  "        DN      CH/CP         NP        TCU        TCG         CD         CT         CL    (-)Pago    A Pagar  Diferenca"
  tit01_2="-------------------------------------------------------------------- -----------    ---------- ---------- "+
  "---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------"

                                                                                             
  tit02_1="Documento                                                                  Valor         Juros  Descontos "
  tit02_2="-------------------------------------------------------------------- -----------    ---------- ---------- "

  tit03_1="Documento                                                                            A Receber    A Pagar "+
  "  CH Receb  CH Utiliz   (-)Juros (+)Desctos      (-)NP     (+)TCG    Out Rec    Out Pag      Troco  "
  tit03_2="--------------------------------------------------------------------                 --------- ---------- "+
  "---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------  "

  tit04_1="Descricao                                                                Entrada         Saida    Liquido "
  tit04_2="-------------------------------------------------------------------- -----------    ---------- ---------- "

  tit05_1="Descricao                                                                 Vendas    Devolucoes    Liquido "
  tit05_2="-------------------------------------------------------------------- -----------    ---------- ---------- "

  Impressao_Orientacao="Paisagem"
  Imprimir()
  
  Delete Tabela
  Delete Tabela_Vendedores
  Delete Tabela_Moedas     
  Delete Tabela_Recebtos     
  Delete Tabela_Cartoes     
EndWhile
ClearAll
Release Vars All
Release Procs All
