'Nome       : VndCdi.std
'Tipo       : CDI
'Data       : 2006/10/02
'Versao     : 1.0
'Descricao  : Consultas diversas ENC - Vendas

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0   2006/??/?? --------------------------------------------------
'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","Enc,Enc.mdb")


Resumo por tipo de documento     [Cmd]=ResTdo=+
   +SELECT [Tdoc$] as TDO, +
   +Count(*) AS NUM, +
   +'' AS ANO, +
   +Sum([ValTot]) AS VTO, +
   +Sum([Qu]) AS QTO +
   +FROM {Opc_TB.EncMst} +
   +WHERE [Tdoc$] LIKE '{Opc_DocTdo}' +
   +AND [Ndoc$] >='{Opc_DocNdo.Ini}' AND [Ndoc$] <='{Opc_DocNdo.Fim}' +
   +AND [CtEnt$] >='{Opc_Ct.Ini}' AND [CtEnt$] <='{Opc_Ct.Fim}' +
   +GROUP BY [Tdoc$] +
   +ORDER BY [Tdoc$]


Resumo por tipo de documento - totais [Cmd]=ResTdo_Tot=+
   +SELECT 'Totais' AS CTO, +
   +Count(*) AS NUM, +
   +'' AS ANO, +
   +Sum([ValTot]) AS VTO, +
   +Sum([Qu]) AS QTO +
   +FROM {Opc_TB.EncMst} +
   +WHERE [Tdoc$] LIKE '{Opc_DocTdo}' +
   +AND [Ndoc$] >='{Opc_DocNdo.Ini}' AND [Ndoc$] <='{Opc_DocNdo.Fim}' +
   +AND [CtEnt$] >='{Opc_Ct.Ini}' AND [CtEnt$] <='{Opc_Ct.Fim}' +



Resumo por tipo de documento/ano [Cmd]=ResTdoAno=+
   +SELECT [Tdoc$] as TDO, +
   +left([Ndoc$],4) AS ANO, +
   +Count(*) AS NUM, +
   +Sum([ValTot]) AS VTO, +
   +Sum([Qu]) AS QTO +
   +FROM {Opc_TB.EncMst} +
   +WHERE [Tdoc$] LIKE '{Opc_DocTdo}' +
   +AND [Ndoc$] >='{Opc_DocNdo.Ini}' AND [Ndoc$] <='{Opc_DocNdo.Fim}' +
   +AND [CtEnt$] >='{Opc_Ct.Ini}' AND [CtEnt$] <='{Opc_Ct.Fim}' +
   +GROUP BY [Tdoc$], left([Ndoc$],4) +
   +ORDER BY [Tdoc$], left([Ndoc$],4)


Resumo por tipo de documento - totais [Cmd]=ResTdoAno_Tot=+
   +SELECT 'Totais' AS CTO, +
   +'' AS ANO, +
   +Count(*) AS NUM, +
   +Sum([ValTot]) AS VTO, +
   +Sum([Qu]) AS QTO +
   +FROM {Opc_TB.EncMst} +
   +WHERE [Tdoc$] LIKE '{Opc_DocTdo}' +
   +AND [Ndoc$] >='{Opc_DocNdo.Ini}' AND [Ndoc$] <='{Opc_DocNdo.Fim}' +
   +AND [CtEnt$] >='{Opc_Ct.Ini}' AND [CtEnt$] <='{Opc_Ct.Fim}' +


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 documentos da conta    [Cmd]=CtUmv=+
   +SELECT TOP {UMV.NRG} * +
   +FROM {Opc_TB.EncMst} +
   +WHERE [CtEnt$] = '{UMV.CT}' +
   +ORDER BY [Dtl] DESC

##


'==============================================================================
#DOC - Resumo de documentos por tipo
'==============================================================================
Tipo                       [DocTip]=ResTdo
Nome                       [DocNom]=ResTdo,Resumo de documentos por tipo

'formato
Controlo de acesso         [DocAce]=ENC_CON
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]=ResTdo_Cab
Listar linhas               [FxLIN]=ResTdo_Lin
Listar fim                  [FxFIM]=ResTdo_Fim

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


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

Registar coluna  [ConDco]=N,Tdo,Tipo,        1005,<,T  ,=
Registar coluna  [ConDco]=N,ANO,Ano,            0,|,T  ,=
Registar coluna  [ConDco]=N,NUM,Numero,       900,>,N  ,6.0
Registar coluna  [ConDco]=N,VTO,Valor,       1500,>,N  ,10.2
Registar coluna  [ConDco]=N,QTO,Quant.,      1500,>,N  ,10.2
Registar coluna  [ConDco]=C,   ,Obs,           15,>,T  ,=
##


'==============================================================================
#DOC - Resumo de documentos por tipo/ano
'==============================================================================
Tipo                       [DocTip]=ResTA
Nome                       [DocNom]=ResTA,Resumo de documentos por tipo/ano

'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]=ResTdo_Cab
Listar linhas               [FxLIN]=ResTdo_Lin
Listar fim                  [FxFIM]=ResTdo_Fim

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


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

Registar coluna  [ConDco]=N,Tdo,Tipo,        1005,<,T  ,=
Registar coluna  [ConDco]=N,ANO,Ano,         1005,|,T  ,=
Registar coluna  [ConDco]=N,NUM,Numero,       900,>,N  ,6.0
Registar coluna  [ConDco]=N,VTO,Valor,       1500,>,N  ,10.2
Registar coluna  [ConDco]=N,QTO,Quant.,      1500,>,N  ,10.2
Registar coluna  [ConDco]=C,   ,Obs,           15,>,T  ,=
##


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

'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=ENC_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)
vAno     = MemTxt$(302)

vNum     = FrmNum$( 8.0,MemNum(303))
vVto     = FrmNum$(12.2,MemNum(304))
vQto     = FrmNum$(12.2,MemNum(305))

nNum     = FrmNum$( 8.0,TotCnt("vNum"))
tNum     = FrmNum$( 8.0,Total(vNum))
tVto     = FrmNum$(12.2,Total(vVto))
tQto     = FrmNum$(12.2,Total(vQto))
##


'==============================================================================
#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 tipo de documento -----------------------------------------------
'------------------------------------------------------------------------------
Sub ResTdo_Cab 'cabecalho
FxDiv LstIde,16CPI,0
?
?@Tit132                                                                                                                            #
?Data : @DataExt                                                                                                      Folha No: @Pag#
?====================================================================================================================================
? Codigo        Ano                                 Numero       Valor            Quant.                                            #
?====================================================================================================================================
end sub


Sub ResTdo_Lin 'linha
'123456789.12   123456789.123456789.1234567890    12345   123456789012.12   123456789012.12   123456789012.12
?@vCod          @vAno                             @vNum   @vVto             @vQto                                                   #
end sub


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


'==============================================================================
'= Consultas tipo pagina ======================================================
'==============================================================================
'------------------------------------------------------------------------------
'UMV - Ultimos movimentos
'------------------------------------------------------------------------------
'------------------------------------------------------------->'Comentario (64)
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)
Sub CtUmv 'ultimos documentos
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 documentos
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","ValTot")                  'valor do movimento
tpv$ = SqlQryCmp$("UMV","Tpv$")                    '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 documentos da conta
call CtUmvLst                                      'listar
end sub

##


