'Nome       : CtaCdi.std
'Tipo       : CDI
'Data       : 2008/09/04
'Versao     : 1.0a
'Descricao  : Consultas diversas CTA

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0a  2008/??/?? --------------------------------------------------
'Ajustar tamanho de dimensao para listagem
'Nao considerar movimentos anulados

'- Versao : 1.0   2006/10/02 --------------------------------------------------
'Versao base


'==============================================================================
#DEF - Definicao global do documento
'==============================================================================
Caracteres invalidos             [CarInv]=#
Subtotalizadores                 [SbtNiv]=3
##


'==============================================================================
#ESP - Campos especificos
'==============================================================================
Opcoes a usar (TDO,NDO,CT,ART,DTL) [EspOpcUsa]=TDO,CT,ART,DTL
##


'==============================================================================
#LIM - Limites especificos
'==============================================================================
Data do dia          [Data]=DtDia;*
Texto limite          [Txt]=TxtLim;*
Numero limite         [Num]=NumLim;*
Data de hoje         [Data]=DtHoj;[DTH]
Mes da Data de hoje  [Data]=DtMes;[DTH_MES]
##


'==============================================================================
#SQL - Comandos SQL
'==============================================================================
Base de dados           [BD]=EmpFic$("EMP","Cemp,Emp_Dat.mdb")
'Base de dados           [BD]=EmpFic$("EMP","Cta,Cta.mdb")


Resumo por conta            [Cmd]=ResCt=+
   +SELECT [Ct$] as CT1, [Ct$] as CT2, +
   +Count(*) AS NUM, +
   +(SELECT Sum([Vl]) FROM {Opc_TB.CtaMOV} WHERE RecVal <> 255 AND [Tv$] = 'D' AND [Ct$] = BASE.[Ct$]) AS VTD, +
   +(SELECT Sum([Vl]) FROM {Opc_TB.CtaMOV} WHERE RecVal <> 255 AND [Tv$] = 'C' AND [Ct$] = BASE.[Ct$]) AS VTC +
   +FROM {Opc_TB.CtaMOV} BASE +
   +WHERE [Tdoc$] LIKE '{Opc_DocTdo}' +
   +AND [Ndoc$] >='{Opc_DocNdo.Ini}' AND [Ndoc$] <='{Opc_DocNdo.Fim}' +
   +AND [Ct$] >='{Opc_Ct.Ini}' AND [Ct$] <='{Opc_Ct.Fim}' +
   +GROUP BY [Ct$] +
   +ORDER BY [Ct$]


Resumo por conta - totais [Cmd]=ResCt_Tot=+
   +SELECT '' AS CT1, 'Totais' AS CT2, +
   +Count(*) AS NUM, +
   +(SELECT Sum([Vl]) FROM {Opc_TB.CtaMOV} WHERE RecVal <> 255 AND [Tv$] = 'D' AND [Ct$] >='{Opc_Ct.Ini}' AND [Ct$] <='{Opc_Ct.Fim}') AS VTD, +
   +(SELECT Sum([Vl]) FROM {Opc_TB.CtaMOV} WHERE RecVal <> 255 AND [Tv$] = 'C' AND [Ct$] >='{Opc_Ct.Ini}' AND [Ct$] <='{Opc_Ct.Fim}') AS VTC +
   +FROM {Opc_TB.CtaMOV} BASE +
   +WHERE [Tdoc$] LIKE '{Opc_DocTdo}' +
   +AND [Ndoc$] >='{Opc_DocNdo.Ini}' AND [Ndoc$] <='{Opc_DocNdo.Fim}' +
   +AND [Ct$] >='{Opc_Ct.Ini}' AND [Ct$] <='{Opc_Ct.Fim}'


Resumo por razao          [Cmd]=ResRz=+
   +SELECT left([Ct$],2) as CT1, left([Ct$],2) as CT2, +
   +Count(*) AS NUM, +
   +(SELECT Sum([Vl]) FROM {Opc_TB.CtaMOV} WHERE RecVal <> 255 AND [Tv$] = 'D' AND left([Ct$],2) = left(BASE.[Ct$],2)) AS VTD, +
   +(SELECT Sum([Vl]) FROM {Opc_TB.CtaMOV} WHERE RecVal <> 255 AND [Tv$] = 'C' AND left([Ct$],2) = left(BASE.[Ct$],2)) AS VTC +
   +FROM {Opc_TB.CtaMOV} BASE +
   +WHERE [Tdoc$] LIKE '{Opc_DocTdo}' +
   +AND [Ndoc$] >='{Opc_DocNdo.Ini}' AND [Ndoc$] <='{Opc_DocNdo.Fim}' +
   +AND [Ct$] >='{Opc_Ct.Ini}' AND [Ct$] <='{Opc_Ct.Fim}' +
   +GROUP BY left([Ct$],2) +
   +ORDER BY left([Ct$],2)


Resumo por razao - totais [Cmd]=ResRz_Tot=+
   +SELECT '' AS CT1, 'Totais' AS CT2, +
   +Count(*) AS NUM, +
   +(SELECT Sum([Vl]) FROM {Opc_TB.CtaMOV} WHERE RecVal <> 255 AND [Tv$] = 'D' AND [Ct$] >='{Opc_Ct.Ini}' AND [Ct$] <='{Opc_Ct.Fim}') AS VTD, +
   +(SELECT Sum([Vl]) FROM {Opc_TB.CtaMOV} WHERE RecVal <> 255 AND [Tv$] = 'C' AND [Ct$] >='{Opc_Ct.Ini}' AND [Ct$] <='{Opc_Ct.Fim}') AS VTC +
   +FROM {Opc_TB.CtaMOV} BASE +
   +WHERE [Tdoc$] LIKE '{Opc_DocTdo}' +
   +AND [Ndoc$] >='{Opc_DocNdo.Ini}' AND [Ndoc$] <='{Opc_DocNdo.Fim}' +
   +AND [Ct$] >='{Opc_Ct.Ini}' AND [Ct$] <='{Opc_Ct.Fim}'


Dados a listar              [Cmd]=ConMov=+
   +SELECT [Ct$], [Ct$], Vl AS VL1, [Tv$] as TPV  +
   +FROM {Opc_TB.CtaMOV} +
   +WHERE RecVal <> 255 AND [Tdoc$] LIKE '{Opc_DocTdo}' +
   +AND [Ndoc$] >='{Opc_DocNdo.Ini}' AND [Ndoc$] <='{Opc_DocNdo.Fim}' +
   +AND [Ct$] >='{Opc_Ct.Ini}' AND [Ct$] <='{Opc_Ct.Fim}' +
   +ORDER BY [Ct$], Dtl;


Contas para consulta        [Cmd]=CtCon=+
   +SELECT [Ct$] as CT, [Nome$] as NOM +
   +FROM {Opc_TB.CtaMST} +
   +WHERE  [Ct$] >='{Opc_Ct.Ini}' AND [Ct$] <='{Opc_Ct.Fim}' +
   +ORDER BY [Ct$]

Contas de movimento         [Cmd]=CtMov=+
   +SELECT [Ct$] as CT, [Nome$] as NOM +
   +FROM {Opc_TB.CtaMST} +
   +WHERE [CodTrat$] = '9' +
   +AND   [Ct$] >= '{Opc_Ct.Ini}' AND [Ct$] <= '{Opc_Ct.Fim}' +
   +ORDER BY [Ct$]


Ultimos movimentos da conta    [Cmd]=CtUmv=+
   +SELECT TOP {UMV.NRG} * +
   +FROM {Opc_TB.CtaMOV} +
   +WHERE RecVal <> 255 AND [Ct$] = '{UMV.CT}' +
   +ORDER BY [Dtl] DESC

##


'==============================================================================
#DOC - Resumo de movimentos por conta
'==============================================================================
Tipo                       [DocTip]=ResCt
Nome                       [DocNom]=ResCt,Resumo de movimentos por conta

'formato
Controlo de acesso         [DocAce]=CTA_LST
Impressora                 [DocPrt]=
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=132
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'funcoes de listagem
Listar cabecalho            [FxCAB]=ResCt_Cab
Listar linhas               [FxLIN]=ResCt_Lin
Listar fim                  [FxFIM]=ResCt_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResCt
Subtotalizadores           [SQLSbt]=


'especifico para consulta
Aspecto            (GRE/PAG) [ConAsp]=GRE

Registar coluna  [ConDco]=N,Ct1,Codigo,      1005,<,T  ,=
Registar coluna  [ConDco]=N,Ct2,Nome,        3630,<,CBK,Cta_Mst_Nome$
Registar coluna  [ConDco]=N,NUM,Numero,       900,>,N  ,6.0
Registar coluna  [ConDco]=N,VTD,Debito,      1500,>,N  ,14.2
Registar coluna  [ConDco]=N,VTC,Credito,     1500,>,N  ,14.2
Registar coluna  [ConDco]=C,   ,Saldo,       1500,>,N  ,14.2,COL:VTD-COL:VTC
Registar coluna  [ConDco]=C,   ,Obs,           15,>,T  ,=
##


'==============================================================================
#DOC - Resumo de movimentos por razao
'==============================================================================
Tipo                       [DocTip]=ResRz
Nome                       [DocNom]=ResRz,Resumo de movimentos por razao

'formato
Impressora                 [DocPrt]=
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=132
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'funcoes de listagem
Listar cabecalho            [FxCAB]=ResCt_Cab
Listar linhas               [FxLIN]=ResCt_Lin
Listar fim                  [FxFIM]=ResCt_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResRz
Subtotalizadores           [SQLSbt]=


'especifico para consulta
Aspecto            (GRE/PAG) [ConAsp]=GRE

Registar coluna  [ConDco]=N,Ct1,Codigo,      1005,<,T  ,=
Registar coluna  [ConDco]=N,Ct2,Nome,        3630,<,CBK,Cta_Mst_Nome$
Registar coluna  [ConDco]=N,NUM,Numero,       900,>,N  ,6.0
Registar coluna  [ConDco]=N,VTD,Debito,      1500,>,N  ,14.2
Registar coluna  [ConDco]=N,VTC,Credito,     1500,>,N  ,14.2
Registar coluna  [ConDco]=C,   ,Saldo,       1500,>,N  ,14.2,COL:VTD-COL:VTC
Registar coluna  [ConDco]=C,   ,Obs,           15,>,T  ,=
##


'==============================================================================
#DOC - Movimentos
'==============================================================================
Tipo                       [DocTip]=Mov
Nome                       [DocNom]=Mov,Movimentos


'formato
Impressora                 [DocPrt]=
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'funcoes de listagem
Listar cabecalho            [FxCAB]=Doc2_Cab
Listar linhas               [FxLIN]=Doc2_Lin
Listar fim                  [FxFIM]=Doc2_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ConMov
Subtotalizadores           [SQLSbt]=


'especifico para consulta
Aspecto            (GRE/PAG) [ConAsp]=GRE

'A dimensao total devera ser:                   9135
Registar coluna  [ConDco]=N,Ct$,Codi go,        1005,<,T  ,=
Registar coluna  [ConDco]=N,Ct$,Nome,           3630,<,CBK,Cta_Mst_Nome$
Registar coluna  [ConDco]=N,VL1,Valor,         1500,>,N  ,14.2
Registar coluna  [ConDco]=N,TPV,Tipo,          1000,|,T  ,=
Registar coluna  [ConDco]=C,   ,,                15,>,T  ,=
##


'==============================================================================
#DOC - Ultimos movimentos
'==============================================================================
Tipo                       [DocTip]=Conta
Nome                       [DocNom]=CtUmva,Ultimos movimentos

'formato
Impressora                 [DocPrt]=
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'funcoes de listagem
Listar cabecalho            [FxCAB]=
Listar linhas               [FxLIN]=
Listar fim                  [FxFIM]=

'controlo de listagem SQL
Gerador de limites         [SQLLim]=
Gerador de dados a listar  [SQLDat]=
Subtotalizadores           [SQLSbt]=

'parametros especificos

'especifico para consulta
Aspecto            (GRE/PAG) [ConAsp]=PAG
Dimensoes                    [ConDim]=200,100,MM
Opcoes diversas              [ConOpc]=

Registar funcao               [ConFx]=Conta+MOV,CtUmv,[ACE=CTA_CON]
##


'==============================================================================
#VAR - Variaveis
'==============================================================================
'MemTxt$(1xx) - Opcoes
'MemTxt$(2xx) - titulos de colunas
'MemTxt$(3xx) - valores das colunas
'MemNum(3xx)  - valores das colunas

Pag      = Doc_CntPag
DataExt  = FrmVal$(Sig_DtHoje,45,0)
Tit080   = TxTit$("TT=10CPI, LD, PT=40C",Memtxt$(1))
Tit132   = TxTit$("TT=16CPI, LD, PT=66C",Memtxt$(1))

Opc01    = MemTxt$(101)
Opc02    = MemTxt$(102)
Opc03    = MemTxt$(103)
Opc04    = MemTxt$(104)
Opc05    = MemTxt$(105)
Opc06    = MemTxt$(106)

'colunas 
vCod     = MemTxt$(301)
vNom     = MemTxt$(302)

vNum     = FrmNum$( 8.0,MemNum(303))
vDeb     = FrmNum$(14.2,MemNum(304))
vCre     = FrmNum$(14.2,MemNum(305))
vSal     = FrmNum$(14.2,MemNum(306))

nNum     = FrmNum$( 8.0,TotCnt("vNum"))
tNum     = FrmNum$( 8.0,Total(vNum))
tDeb     = FrmNum$(14.2,Total(vDeb))
tCre     = FrmNum$(14.2,Total(vCre))
tSal     = FrmNum$(14.2,Total(vDeb)-Total(vCre))

##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)

Sub Lst_AJT
end sub

'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.

'==============================================================================
'= Consultas tipo grelha ======================================================
'==============================================================================
'------------------------------------------------------------------------------
'- Resumo por conta -----------------------------------------------------------
'------------------------------------------------------------------------------
Sub ResCt_Cab 'cabecalho
FxDiv LstIde,16CPI,0
?
?@Tit132                                                                                                                            #
?Data : @DataExt                                                                                                      Folha No: @Pag#
?====================================================================================================================================
? Codigo        Nome                                 Quant.     Debito              Credito              Saldo                      #
?====================================================================================================================================
end sub


Sub ResCt_Lin 'linha
'123456789.12   123456789.123456789.1234567890    12345   12345678901234.12   12345678901234.12   12345678901234.12
?@vCod          @vNom                             @vNum   @vDeb               @vCre               @vSal                             #
end sub


Sub ResCt_Fim 'totais
?====================================================================================================================================
?                        Totais : @nNum           @tNum   @tDeb               @tCre               @tSal                             #
?====================================================================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


'==============================================================================
'= Consultas tipo pagina ======================================================
'==============================================================================
'------------------------------------------------------------------------------
'UMV - Ultimos movimentos da Conta
'------------------------------------------------------------------------------
'------------------------------------------------------------->'Comentario (64)
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)
Sub CtUmv 'ultimos movimentos da conta
ctMin$ = VliMin$("Ct")                             'conta minima
ctMax$ = VliMax$("Ct")                             'conta maxima

'definicao de zona de consulta
res = CdiPaPrp("CT","", 0, 0,9000,5650)            'preparar painel base
res = CdiPaAsp("CT","ASP_PNL_TIT")                 'aspecto para painel

'maximo de registos
py  =  200                                         'posicao Y
dy  =  300                                         'dimensao Y
px1 = 5300                                         'posicao de identificacao
px2 = px1 + 1660                                   'posicao de valor

res = CdiPaPrp("TxTopI","Numero de registos",px1,py,1600,dy)   'preparar painel
res = CdiPaAsp("TxTopI","ASP_IDE_NOR")                         'aspecto para painel

res = CdiTxPrp("TxTopV",px2,py,500,dy)             'preparar textbox
res = CdiTxReg("TxTopV",10)                        'registar limite
res = CdiObCor("TX","TxTopV","INP_ACT","")         'preparar textbox - COR
'res = CdiObFon("TX","TxTopV","Arial",18)          'preparar textbox - fonte

'botao para executar listagem de movimentos
px  = px2 + 800                                                'posicao X
res = CdiCmPrp("CmTop","Listar", "CtUmvLst", px, py,1000,dy)   'preparar botao

'grelha de contas
nli =   10                                         'linhas visiveis
px  =  200                                         'posicao X
py  =  200                                         'posicao Y
dx  = 5000                                         'largura
dy  =  100                                         'altura (vai ser ajustada automaticamente)

res = CdiGrPrp("GR_CT")                            'preparar grelha
res = CdiGrDp(px,py,dx,dy)                         'dimensao/posicao
res = CdiGrCol("",600,"|")                         'registar coluna
res = CdiGrCol("Conta",1000,"<")                   'registar coluna
res = CdiGrCol("Nome",2500,"<")                    'registar coluna
res = CdiGrCol("Obs.",100,"<")                     'registar coluna
res = CdiGrNli(nli, 1)                             'numero de linhas + ajuste de altura
res = CdiObSit("GR","GR_CT","VER")                 'mostrar 

'grelha de movimentos
nli =   8                                          'linhas visiveis
px  =  200                                         'posicao X
py  = 3200                                         'posicao Y
dx  = 8500                                         'largura
dy  =  100                                         'altura (vai ser ajustada automaticamente)

res = CdiGrPrp("GR_MOV")                           'preparar grelha
res = CdiGrDp(px,py,dx,dy)                         'dimensao/posicao
res = CdiGrCol("",600,"|")                         'registar coluna
res = CdiGrCol("Doc",2000,"<")                     'registar coluna
res = CdiGrCol("Data",1200,"|")                    'registar coluna
res = CdiGrCol("Valor",2500,">")                   'registar coluna
res = CdiGrCol("Obs.",100,"<")                     'registar coluna
res = CdiGrNli(nli, 1)                             'numero de linhas + ajuste de altura
res = CdiObSit("GR","GR_MOV","VER")                'mostrar 

call CtUmvLstCt                                    'listar contas para ultimos movimentos da conta
call CtUmvLst                                      'ultimos movimentos da conta
end sub


Sub CtUmvLstCt 'listar contas para ultimos movimentos da conta
res = CdiAspExe("I")                               'aspecto de inicio de execucao

res  = CdiGrUsa("GR_CT")                           'preparar grelha a usar

'exi = SqlQryGer("", "CtCon")                       'gerar lista de contas
exi = SqlQryGer("", "CtMov")                       'gerar lista de contas de movimento
while exi = 1
ctc$ = SqlQryCmp$("","CT")                         'codigo da conta
nom$ = SqlQryCmp$("","NOM")                        'nome da conta
obs$ = ""                                          'observacoes

res = CdiGrLstLin(ctc$,nom$,obs$)                  'listar linha

exi = SqlQryRgs("")                                'registo seguinte
wend

res = CdiGrCelPos(1, 2)                            'posicionar na linha 1
res = CdiAspExe("T")                               'aspecto de terminar execucao
end sub


Sub CtUmvLst 'ultimos movimentos da conta
res  = CdiGrUsa("GR_CT")                           'preparar grelha a usar
lip  = CdiGrNliCon("P")                            'linhas posicionada
ctu$ = CdiGrCelCon(lip,2)                          'consultar conta a usar
nrg$ = CdiTxCon$("TxTopV")                         'consultar numero de registos

'preparar para listar movimentos
res  = CdiGrUsa("GR_MOV")                          'preparar grelha a usar
res  = CdiGrLpz("")                                'limpar grelha

res = SqlOpcAct("UMV.CT", ctu$)                    'registar conta
res = SqlOpcAct("UMV.NRG", nrg$)                   'registar numero de movimentos

exi = SqlQryGer("UMV", "CtUmv")                    'gerar lista dos ultimos movimentos da conta
while exi = 1
tdo$ = SqlQryCmp$("UMV","Tdoc$")                   'tipo de documento
ndo$ = SqlQryCmp$("UMV","Ndoc$")                   'numero de documento
dtm  = SqlQryCmp$("UMV","Dtl")                     'data do movimento
vlm  = SqlQryCmp$("UMV","Vl")                      'valor do movimento
tpv$ = SqlQryCmp$("UMV","Tv$")                     'tipo de valor do movimento

ndv$  = FrmNdo$("46",tdo$,ndo$)                    'formatar documento
doc$  = tdo$+ " " + ndv$                           'documento a mostrar
xDtm$ = FrmDt$("",dtm)                             'data
xVmv$ = FrmNum$(12.2,vlm)+ " " + tpv$+" "          'valor

res = CdiGrLstLin(doc$,xDtm$,xVmv$,"")             'listar linha

exi = SqlQryRgs("UMV")                             'registo seguinte
wend

res = CdiGrCelPos(1, 2)                            'posicionar na linha 1
end sub


'------------------------------------------------------------------------------
'EVE - Eventos
'------------------------------------------------------------------------------
'------------------------------------------------------------->'Comentario (64)
'------------------------------------------------->'Comentario (52)
Sub GR_CT_CLICK 'ultimos movimentos da conta
call CtUmvLst                                      'ultimos movimentos da conta
end sub

##


