;** Rm_1200  *******************************************************************
;* 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: 05/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_NCONTROLE                   
;Ultima Alteracao: 12/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 26/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes lancamento caixa manuel e nota de entrada
;Ultima Alteracao: 10/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_DESTIN, TG_TPMOVDESTIN                  

;*******************************************************************************
;* 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
CoEdit Tabela,"Answer"
If Not IsEmpty("Answer")
   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    ]="1"
[Descricao]="Saldo Inicial Conta "+VSDGCONTA
[Sinal    ]="(=)"
[Valor    ]=(SALDOINI+TOTENTRA)-TOTSAIDA
UnLockRecord
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina p/ Selecionar Vendas                                                 *
;*******************************************************************************
Proc SelecionaVendas()
ClearAll

{Ask} {\\Sistemas\\Vendas} {NotaC} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn "~VSDGDTREF"
Moveto [Numero_Controle_Dia    ] TypeIn "~VSDGNCONTROLE.."
Moveto [Situacao               ] TypeIn "Not C"
switch
 case ListaRegra_VSDGDESTIN_Ativo  : Moveto [Codigo da Destinacao] TypeIn ListaRegra_VSDGDESTIN
 otherwise                         : Moveto [Codigo da Destinacao] TypeIn "~VSDGDESTIN.."
endswitch
Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
Moveto [Tipo Movimento Estoque ] TypeIn "S"
Do_It!
ClearAll

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

TOTVENDASAV=0
TOTVENDASAP=0
TOTVENDASOU=0
View "\\Sistemas\\Estoque\\NotaEC"
CoEdit Tabela,"Answer"
If Not IsEmpty("Answer")
   Then Scan
          Switch
            Case [Answer->Tipo de Pagamento]="V": TOTVENDASAV=TOTVENDASAV+[Valor Nota Fiscal]
            Case [Answer->Tipo de Pagamento]="P": TOTVENDASAP=TOTVENDASAP+[Valor Nota Fiscal]
            OtherWise                           : TOTVENDASOU=TOTVENDASOU+[Valor Nota Fiscal]
          EndSwitch
          If VSDGOPRELANALSINT="1"
             Then Moveto Tabela
                  End Down
                  Seq=Seq+1
                  Switch
                    Case [Answer->Tipo de Pagamento]="V": [Ordem   ]="2.1.2"
                    Case [Answer->Tipo de Pagamento]="P": [Ordem   ]="2.2.2"
                    OtherWise                           : [Ordem   ]="2.4.2"
                  EndSwitch
                  [Sequencia]=Seq
                  [Valor    ]=[Answer->Valor Nota Fiscal]
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],12,"  ")+
                              [Answer->Forma de Pagamento]+"  "+[Answer->Razao Social     ]
                  UnLockRecord
                  Moveto "Answer"
          EndIf

          
          If [Answer->Tipo Movimento Estoque ]="S" And
             Search("TROCA",[Answer->Descricao da Destinacao])>0
             Then           
									NE_ENCONTRADA=False
									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 NE_ENCONTRADA=True
                                  If [Answer->Valor Nota Fiscal]>[Valor Nota Fiscal] 
                                     Then VRNF=[Valor Nota Fiscal]
                                     Else VRNF=[Answer->Valor Nota Fiscal] 
                                  EndIf
									        EndIf
									EndIf
									
									If NE_ENCONTRADA
                     Then 
								          Switch
								            Case [Answer->Tipo de Pagamento]="V": TOTVENDASAV=TOTVENDASAV-VRNF
								            Case [Answer->Tipo de Pagamento]="P": TOTVENDASAP=TOTVENDASAP-VRNF
								            OtherWise                           : TOTVENDASOU=TOTVENDASOU-VRNF
								          EndSwitch
          
								          If VSDGOPRELANALSINT="1"
								             Then Moveto Tabela
								                  End Down
                                  Seq=Seq+1
                                  Switch
                                    Case [Answer->Tipo de Pagamento]="V": [Ordem   ]="2.1.2"
                                    Case [Answer->Tipo de Pagamento]="P": [Ordem   ]="2.2.2"
                                    OtherWise                           : [Ordem   ]="2.4.2"
                                  EndSwitch
                                  [Sequencia]=Seq
								                  [Valor    ]=([\Sistemas\Estoque\NotaEC->Valor Nota Fiscal]*-1)
								                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],12,"  ")+
								                              " \"      \"  * COM TROCA NA VENDA"
								                  UnLockRecord
								                  Moveto "Answer"
								          EndIf
                  EndIf
          EndIf
					Moveto "Answer"

        EndScan
EndIf
Moveto Tabela
End Down
[Ordem    ]="2"
[Descricao]="Vendas"
[Valor]=TOTVENDASAV+TOTVENDASAP
UnLockRecord

If TOTVENDASAV>0
   Then Moveto Tabela
        End Down
        [Ordem    ]="2.1"
        [Descricao]="  A Vista"
        [Sinal    ]=""
        [Valor    ]=TOTVENDASAV
        UnLockRecord
EndIf

If TOTVENDASAP>0
   Then Moveto Tabela
        If VSDGOPRELANALSINT="1"
           Then End Down
                [Ordem]="2.1.9"
                UnLockRecord
        EndIf
        End Down
        [Ordem    ]="2.2"
        [Descricao]="  A Prazo"
        [Valor    ]=TOTVENDASAP
        UnLockRecord
EndIf

If TOTVENDASOU>0
   Then Moveto Tabela
        End Down
        [Ordem    ]="2.4"
        [Descricao]="  Outros"
        [Valor    ]=TOTVENDASOU
        UnLockRecord

EndIf

Do_It!
ClearAll

{Ask} {\\Sistemas\\Vendas} {NotaC}
Moveto [Codigo da Empresa      ] Example "Empresa" TypeIn ", ~VSDGEMPRESA.."
Moveto [Numero do Documento    ] Example "Docto"
Moveto [Serie do Documento     ] Example "Serie"
Moveto [Data de Emissao        ] TypeIn "~VSDGDTREF"
Moveto [Numero_Controle_Dia    ] TypeIn "~VSDGNCONTROLE.."
switch
 case ListaRegra_VSDGDESTIN_Ativo  : Moveto [Codigo da Destinacao] TypeIn ListaRegra_VSDGDESTIN
 otherwise                         : Moveto [Codigo da Destinacao] TypeIn "~VSDGDESTIN.."
endswitch
Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
Moveto [Tipo Movimento Estoque ] TypeIn "S"
Moveto [Tipo de Pagamento      ] TypeIn "P"
Moveto [Situacao               ] TypeIn "Not C"
Moveto [Tipo do Documento      ] Check
Moveto [Razao Social           ] Check
{Ask} {\\Sistemas\\Vendas} {NotaV} Check
Moveto [Codigo da Empresa      ] Example "Empresa"
Moveto [Numero do Documento    ] Example "Docto"
Moveto [Serie do Documento     ] Example "Serie"
Do_It!
ClearAll

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

TOTVENDASEN=0
CoEdit Tabela,"Answer"
If Not IsEmpty("Answer")
   Then Scan For [Data]=VSDGDTREF
          TOTVENDASEN=TOTVENDASEN+[Valor]
          If VSDGOPRELANALSINT="1"
             Then Moveto Tabela
                  End Down
                  [Ordem    ]="2.3.2"
                  [Valor    ]=[Answer->Valor]
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],12,"  ")+
                              [Answer->Forma de Pagamento]+"  "+[Answer->Razao Social     ]
                  UnLockRecord
                  Moveto "Answer"
          EndIf
        EndScan
EndIf
If TOTVENDASEN>0
   Then Moveto Tabela
        If VSDGOPRELANALSINT="1"
           Then End Down
                [Ordem]="2.2.9"
                UnLockRecord
        EndIf
        End Down
        [Ordem    ]="2.3"
        [Descricao]="  A Prazo com Entrada"
        [Sinal    ]=""
        [Valor    ]=TOTVENDASEN
        UnLockRecord
EndIf
Do_It!
ClearAll

;----------
VENDASAV=0
;****** A Vista
{Ask} {\\Sistemas\\Cadastro} {TpPagto}
Moveto [Tipo do Pagamento        ] Example "tpg"
Moveto [Descricao Tipo Pagamento ] Check
{Ask} {\\Sistemas\\Vendas} {NotaC}
Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao          ] TypeIn "~VSDGDTREF"
Moveto [Numero_Controle_Dia      ] TypeIn "~VSDGNCONTROLE.."
Moveto [Situacao                 ] TypeIn "Not C"
switch
 case ListaRegra_VSDGDESTIN_Ativo  : Moveto [Codigo da Destinacao] TypeIn ListaRegra_VSDGDESTIN
 otherwise                         : Moveto [Codigo da Destinacao] TypeIn "~VSDGDESTIN.."
endswitch
Moveto [Descricao da Destinacao  ] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
Moveto [Tipo Movimento Estoque   ] TypeIn "S"
Moveto [Tipo de Pagamento        ] TypeIn "V"
Moveto [Forma de Pagamento       ] Check Example "tpg"
Moveto [Valor Nota Fiscal        ] TypeIn "Calc Sum As Soma"
Do_It!
ClearAll
CoEdit Tabela,"Answer"
If Not IsEmpty("Answer")
   Then Scan
          Moveto Tabela
          End Down
          [Ordem    ]="2.1.3"
          [Descricao]="    "+Completa([Answer->Descricao Tipo Pagamento],20," ")+
                      " = "+Format("W11.2,AR,EIC",[Answer->Soma])
          If [Answer->Forma de Pagamento]="DN" Or
             [Answer->Forma de Pagamento]="CH" Or
             [Answer->Forma de Pagamento]="CP"
             Then [Descricao]=[Descricao]+"(+)"
                  VENDASAV=VENDASAV+[Answer->Soma]
          EndIf

          UnLockRecord
          Moveto "Answer"
        EndScan
EndIf
Do_It!
ClearAll

;----------
VENDASAP=0
;****** A Prazo
{Ask} {\\Sistemas\\Cadastro} {TpPagto}
Moveto [Tipo do Pagamento        ] Example "tpg"
Moveto [Descricao Tipo Pagamento ] Check
{Ask} {\\Sistemas\\Vendas} {NotaC}
Moveto [Codigo da Empresa        ] Example "Empresa" TypeIn ",~VSDGEMPRESA.."
Moveto [Numero do Documento      ] Example "Docto"
Moveto [Serie do Documento       ] Example "Serie"
Moveto [Data de Emissao          ] Example "dte" TypeIn ",~VSDGDTREF"
Moveto [Numero_Controle_Dia      ] TypeIn "~VSDGNCONTROLE.."
Moveto [Situacao                 ] TypeIn "Not C"
switch
 case ListaRegra_VSDGDESTIN_Ativo  : Moveto [Codigo da Destinacao] TypeIn ListaRegra_VSDGDESTIN
 otherwise                         : Moveto [Codigo da Destinacao] TypeIn "~VSDGDESTIN.."
endswitch
Moveto [Descricao da Destinacao  ] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
Moveto [Tipo Movimento Estoque   ] TypeIn "S"
Moveto [Tipo de Pagamento        ] TypeIn "P"
{Ask} {\\Sistemas\\Vendas} {NotaV}
Moveto [Codigo da Empresa        ] Example "Empresa"
Moveto [Numero do Documento      ] Example "Docto"
Moveto [Serie do Documento       ] Example "Serie"
Moveto [Data                     ] TypeIn ">_dte"
Moveto [Forma de Pagamento       ] Check Example "tpg"
Moveto [Valor                    ] TypeIn "Calc Sum As Soma"
Do_It!
ClearAll
CoEdit Tabela,"Answer"
If Not IsEmpty("Answer")
   Then Scan
          Moveto Tabela
          End Down
          [Ordem    ]="2.2.3"
          [Descricao]="    "+Completa([Answer->Descricao Tipo Pagamento],20," ")+
                      " = "+Format("W11.2,AR,EIC",[Answer->Soma])
          If [Answer->Forma de Pagamento]="DN" Or
             [Answer->Forma de Pagamento]="CH" Or
             [Answer->Forma de Pagamento]="CP"
             Then [Descricao]=[Descricao]+"(+)"
                  VENDASAP=VENDASAP+[Answer->Soma]
          EndIf
          UnLockRecord
          Moveto "Answer"
        EndScan
EndIf
Do_It!
ClearAll

;----------
VENDASAPE=0
;****** A Prazo com Entrada
{Ask} {\\Sistemas\\Cadastro} {TpPagto}
Moveto [Tipo do Pagamento        ] Example "tpg"
Moveto [Descricao Tipo Pagamento ] Check
{Ask} {\\Sistemas\\Vendas} {NotaC}
Moveto [Codigo da Empresa        ] Example "Empresa" TypeIn ",~VSDGEMPRESA.."
Moveto [Numero do Documento      ] Example "Docto"
Moveto [Serie do Documento       ] Example "Serie"
Moveto [Data de Emissao          ] Example "dte" TypeIn ",~VSDGDTREF"
Moveto [Numero_Controle_Dia      ] TypeIn "~VSDGNCONTROLE.."
Moveto [Situacao                 ] TypeIn "Not C"
switch
 case ListaRegra_VSDGDESTIN_Ativo  : Moveto [Codigo da Destinacao] TypeIn ListaRegra_VSDGDESTIN
 otherwise                         : Moveto [Codigo da Destinacao] TypeIn "~VSDGDESTIN.."
endswitch
Moveto [Descricao da Destinacao  ] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
Moveto [Tipo Movimento Estoque   ] TypeIn "S"
Moveto [Tipo de Pagamento        ] TypeIn "P"
{Ask} {\\Sistemas\\Vendas} {NotaV}
Moveto [Codigo da Empresa        ] Example "Empresa"
Moveto [Numero do Documento      ] Example "Docto"
Moveto [Serie do Documento       ] Example "Serie"
Moveto [Data                     ] TypeIn "=_dte"
Moveto [Forma de Pagamento       ] Check Example "tpg"
Moveto [Valor                    ] TypeIn "Calc Sum As Soma"
Do_It!
ClearAll

CoEdit Tabela,"Answer"
If Not IsEmpty("Answer")
   Then Scan
          Moveto Tabela
          End Down
          [Ordem    ]="2.3.3"
          [Descricao]="    "+Completa([Answer->Descricao Tipo Pagamento],20," ")+
                      " = "+Format("W11.2,AR,EIC",[Answer->Soma])
          If [Answer->Forma de Pagamento]="DN" Or
             [Answer->Forma de Pagamento]="CH" Or
             [Answer->Forma de Pagamento]="CP"
             Then [Descricao]=[Descricao]+"(+)"
                  VENDASAPE=VENDASAPE+[Answer->Soma]
          EndIf
          UnLockRecord
          Moveto "Answer"

        EndScan
EndIf
Do_It!
ClearAll

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina p/ Selecionar Recebimentos                                           *
;*******************************************************************************
Proc SelecionaRecebimentos()
ClearAll

{Ask} {\\Sistemas\\Ctarec} {DupliC}
Moveto [Numero do Lancamento  ] Example "lanc"
Moveto [Tipo do Documento     ] Check
Moveto [Data de Emissao       ] TypeIn "Not ~VSDGDTREF"
Moveto [Numero do Documento   ] Check
Moveto [Razao Social          ] Check
{Ask} {\\Sistemas\\Ctarec} {DupBaixa} Check
Moveto [Numero do Lancamento  ] Example "lanc"
Moveto [Data do Pagamento     ] TypeIn "~VSDGDTREF"
Moveto [Tipo da Baixa         ] TypeIn "Blank or NORMAL"
Moveto [Codigo da Conta       ] TypeIn "~VSDGCONTA.."
Moveto [Numero_Controle_Dia   ] TypeIn "~VSDGNCONTROLE.."
Do_It!
ClearAll

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

TOTRECTO=0
CoEdit Tabela,"Answer"
If Not IsEmpty("Answer")
   Then Scan
          TOTRECTO=TOTRECTO+[Valor do Recebimento]
          If VSDGOPRELANALSINT="1"
             Then Moveto Tabela
                  End Down
                  [Ordem    ]="3.1"
                  [Valor    ]=[Answer->Valor do Recebimento]
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],16,"  ")+
                              [Answer->Razao Social     ]
                  UnLockRecord
                  Moveto "Answer"
          EndIf
        EndScan
EndIf
If TOTRECTO>0
   Then Moveto Tabela
        End Down
        [Ordem    ]="3"
        [Descricao]="Recebimentos de Titulos"
        [Sinal    ]="(+)"
        [Valor    ]=TOTRECTO
        UnLockRecord
EndIf
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina p/ Selecionar Pagamentos                                             *
;*******************************************************************************
Proc SelecionaPagamentos()
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
{Ask} {\\Sistemas\\Ctapag} {TitBaixa} Check
Moveto [Numero do Lancamento  ] Example "lanc"
Moveto [Data do Pagamento     ] TypeIn "~VSDGDTREF"
Moveto [Tipo da Baixa         ] TypeIn "Blank or NORMAL"
Moveto [Codigo da Conta       ] TypeIn "~VSDGCONTA.."
Moveto [Numero_Controle_Dia   ] TypeIn "~VSDGNCONTROLE.."
Do_It!
ClearAll

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

TOTPAGTO=0
CoEdit Tabela,"Answer"
If Not IsEmpty("Answer")
   Then Scan
          TOTPAGTO=TOTPAGTO+[Valor do Pagamento]
          If VSDGOPRELANALSINT="1"
             Then Moveto Tabela
                  End Down
                  [Ordem    ]="5.1"
                  [Valor    ]=[Answer->Valor do Pagamento]
                  [Descricao]="  "+Completa([Answer->Tipo do Documento]+"/"+[Answer->Numero do Documento],16,"  ")+
                              [Answer->Razao Social     ]
                  UnLockRecord
                  Moveto "Answer"
          EndIf
        EndScan
EndIf
If TOTPAGTO>0
   Then Moveto Tabela
        End Down
        [Ordem    ]="5"
        [Descricao]="Pagamentos de Titulos"
        [Sinal    ]="(-)"
        [Valor    ]=TOTPAGTO
        UnLockRecord
EndIf
Do_It!
ClearAll

EndProc

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

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

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

TOTOUTENT =0
TOTOUTSAI =0

TOTOUTENTD=0
TOTOUTSAID=0
CoEdit Tabela,"Answer"
If Not IsEmpty("Answer")
   Then Scan
          If [Answer->Tipo Movimento]="E"
             Then TOTOUTENTD=TOTOUTENTD+[Valor]
             Else TOTOUTSAID=TOTOUTSAID+[Valor]
          EndIf
          Switch
					  Case [Sistema Gerador]="MA" or   
					       [Sistema Gerador]="NE" : 
		          If [Answer->Tipo Movimento]="E"
		             Then TOTOUTENT =TOTOUTENT +[Valor]
		             Else TOTOUTSAI =TOTOUTSAI +[Valor]
		          EndIf
		          If VSDGOPRELANALSINT="1"
		             Then Moveto Tabela
		                  End Down
		                  If [Answer->Tipo Movimento]="E"
		                     Then [Ordem   ]="4.1"
		                     Else [Ordem   ]="6.1"
		                  EndIf
		                  [Valor    ]=[Answer->Valor]
		                  [Descricao]="  "+[Answer->Descricao do Historico]
		                  UnLockRecord
		                  Moveto "Answer"
		          EndIf
          EndSwitch
        EndScan
EndIf
If TOTOUTENT>0
   Then Moveto Tabela
        End Down
        [Ordem    ]="4"
        [Descricao]="Outras Entradas"
        [Sinal    ]="(+)"
        [Valor]=TOTOUTENT
        UnLockRecord
EndIf
If TOTOUTSAI>0
   Then Moveto Tabela
        End Down
        [Ordem    ]="6"
        [Descricao]="Outras Saidas"
        [Sinal    ]="(-)"
        [Valor]=TOTOUTSAI
        UnLockRecord
EndIf
Do_It!
ClearAll

EndProc   ; (Seleciona)


;*******************************************************************************
;* Rotina p/ Selecionar Somatoria                                              *
;*******************************************************************************
Proc SelecionaSomatorias()
ClearAll

SALDOCALC=(((SALDOINI+TOTENTRA)-TOTSAIDA)+
              (VENDASAV+VENDASAP+VENDASAPE+TOTOUTENT+TOTRECTO))-
              (TOTOUTSAI+TOTPAGTO)

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

SALDODIFE=SALDOCALC-SALDOCONT

CoEdit Tabela
End Down
[Ordem    ]="7"
[Descricao]="Saldo Final do dia Calculado"
[Sinal    ]="(=)"
[Valor    ]=SALDOCALC
UnLockRecord

End Down
[Ordem    ]="7.1"
[Descricao]="Saldo Real do dia na Conta"
[Sinal    ]="(=)"
[Valor    ]=SALDOCONT

UnLockRecord

End Down
[Ordem    ]="7.2"
[Descricao]="Diferenca de Saldos no dia"
[Sinal    ]="(=)"
[Valor    ]=SALDODIFE
UnLockRecord


Do_It!
ClearAll

EndProc   ; (Seleciona)


;*******************************************************************************
;* 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"] = -60: ListaRegra_F2()
     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_TPMOVDESTIN"   : Campo="TG_DESTIN"
            Case Campo="TG_NCONTROLE"     : Campo="TG_TPMOVDESTIN"
            Case Campo="TG_DTREF"         : Campo="TG_NCONTROLE"
            Case Campo="TG_OPRELANALSINT" : Campo="TG_DTREF"
            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_TPMOVDESTIN"
                    Case Campo="TG_TPMOVDESTIN"  : Campo="TG_NCONTROLE"
                    Case Campo="TG_NCONTROLE"    : Campo="TG_DTREF"
                    Case Campo="TG_DTREF"        : Campo="TG_OPRELANALSINT"
                    Case Campo="TG_OPRELANALSINT": 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"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

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

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

ListaRegra_Funcao("ListaRegra_TGAtivado","[TG_DESTIN]")

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, -60  
   @ 05,12   Height 15 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 "Destinacao"  For "TG_DESTIN"
    Accept @ 05,02 Width 06 "A3"  Picture "[&,#][#*#]" Tag "TG_DESTIN"    To VSDGDESTIN
    Accept @ 05,09 Width 21 "A30" Picture "!*!" Tag "TG_NOMDESTIN" To VSDGNOMDESTIN

    Label  @ 04,28 "TpMov" For "TG_TPMOVDESTIN"
    Accept @ 05,30 Width 04 "A1"  Picture "E,S" Tag "TG_TPMOVDESTIN" To VSDGTPMOVDESTIN

    Label  @ 06,00 "Controle Dia" For "TG_NCONTROLE"
    Accept @ 07,01 Width 9  "A6"  Picture "#*#" Tag "TG_NCONTROLE"    To VSDGNCONTROLE
    Accept @ 07,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMNCONTROLE" To VSDGNOMNCONTROLE

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

    Label  @ 00,35 "Op‡„o do Relat˘rio" For "TG_OPRELANALSINT"
    Accept @ 01,39 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELANALSINT" To VSDGOPRELANALSINT
    Accept @ 01,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPRELANASINT" To VSDGNOMOPRELANALSINT

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") 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

  DISPOSITIVO()
  If OK="" Then Loop EndIf

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

  Seq=0
  SelecionaConta()
  SelecionaVendas()
  SelecionaRecebimentos()
  SelecionaOutrasEntradasSaidas()
  SelecionaPagamentos()
  SelecionaSomatorias()

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

  IMPRIREL(Tabela,"R")

  Delete Tabela

EndWhile
ClearAll
Release Vars All
Release Procs All
