'Nome       : GbiEspRes.sql
'Tipo       : LST
'Data       : 2014/05/29
'Versao     : 1.1
'Descricao  : GBI - Resumo do espectaculo

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.1   ____/__/__ --------------------------------------------------
'Resumo por modo de pagamento

'- Versao : 1.0   2009/07/16 --------------------------------------------------
'Versao base


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
'Especifico 1                      [EspOp1]=Opcao 1
##


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


'------------------------------------------------------------------------------
'- Especifico -----------------------------------------------------------------
'------------------------------------------------------------------------------
Resumo de lugares      [Cmd]=ResLug=+
   +SELECT COUNT(*) as NUM, '---' as vSec, Sit$ as vSit, SUM(TraPrc) as vLug +
   +FROM {TB_GbiLug} AS ESP +
   +GROUP BY Sit$ +
   +ORDER BY Sit$


Resumo por sector      [Cmd]=ResSec=+
   +SELECT COUNT(*) as NUM, Sec$ as vSec, Sit$ as vSit, SUM(TraPrc) as vLug +
   +FROM {TB_GbiLug} AS ESP +
   +GROUP BY Sec$, Sit$ +
   +ORDER BY Sec$, Sit$


Resumo de vendas       [Cmd]=ResVnd=+
   +SELECT COUNT(*) as NUM, '---' as vSec, OdaUtz$ as vUtz, SUM(TraPrc) as vLug +
   +FROM {TB_GbiLug} AS ESP +
   +WHERE sit$ = 'OCP' +
   +GROUP BY OdaUtz$ +
   +ORDER BY OdaUtz$


'------------------------------------------------------------------------------
'- Modo de pagamento ----------------------------------------------------------
'------------------------------------------------------------------------------
Lista de vendedores [Cmd]=MpgVnd=+
   +SELECT COUNT(*) as NUM, OdaUtz$ as vUtz, SUM(TraPrc) as vLug +
   +FROM {TB_GbiLug} AS VND +
   +WHERE sit$ = 'OCP' +
   +AND   [OdaUtz$]    BETWEEN '{Opc_Utz.Ini}'  AND '{Opc_Utz.Fim}' +
   +GROUP BY OdaUtz$ +
   +ORDER BY OdaUtz$


Lista de bilhetes do vendedor [Cmd]=MpgBilVnd=+
   +SELECT * FROM {TB_GbiLug} LUG +
   +WHERE sit$ = 'OCP' +
   +AND [OdaUtz$] = '{VND.COD}' +
   +ORDER BY RecIde


##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=GbiResLug,Resumo de Lugares

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

'especifico do documento
Opcao especifica           [DocEsp]=OpcEsp=???


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


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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=GbiResSec,Resumo por Sector

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

'especifico do documento
Opcao especifica           [DocEsp]=OpcEsp=???


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


'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResSec
Subtotalizadores           [SQLSbt]=vSec
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=GbiResVnd,Resumo de Vendas

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

'especifico do documento
Opcao especifica           [DocEsp]=OpcEsp=???


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


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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=MpgRes,Resumo por modo de pagamento

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

'especifico do documento
Opcao especifica           [DocEsp]=OpcEsp=???


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


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


'==============================================================================
#VAR - Variaveis
'==============================================================================
'------------------------------------------------------------------------------
'Lista de variaveis especificas
'------------------------------------------------------------------------------
'valores texto
'MemTxt$(01)   - Titulo da listagem
'MemTxt$(11)   - ?


'------------------------------------------------------------------------------
'Formatacao de valores
'------------------------------------------------------------------------------
Pag       = Doc_CntPag
Cnt       = FrmVal$(CntAux(1),21,4)
Tit080    = TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",Memtxt$(1))
Tit132    = TxTit$("TT=16CPI, LD, PT=66C",Memtxt$(1))

DataExt   = FrmDt$("EXT",Sig_DtHoje)
'DataExt   = FrmDt$("EXT",Doc_DtHoje)

'sala
vSalCab  = VarCom$("SalCod")+" - "+VarCom$("SalIde")        'sala para cabecalho
vSalCod  = VarCom$("SalCod")                                'sala
vSalIde  = VarCom$("SalIde")                                'identificacao
vSalAdi  = VarCom$("SalAdi")                                'adicional

'especatculo
vEspCab  = VarCom$("EspIde")                                'espectaculo para cabecalho
vEspChv  = VarCom$("EspChv")                                'espectaculo
vEspCod  = VarCom$("EspCod")                                'codigo
vEspIde  = VarCom$("EspIde")                                'identificacao
vEspCod  = VarCom$("EspSit")                                'situacao
vEspCod  = VarCom$("EspTip")                                'tipo

'sessao
vSesCab  = VarCom$("SesDat")+" "+left$(VarCom$("SesHor"),5) 'sessao para cabecalho
vSesCod  = VarCom$("SesCod")                                'sessao
vSesDat  = VarCom$("SesDat")                                'data
vSesHor  = VarCom$("SesHor")                                'hora
vSesSit  = VarCom$("SesSit")                                'situacao
vSesTip  = VarCom$("SesTip")                                'tipo


'dados do resumo
vResSec     = ResSec$                                       'sector
vResSecIde  = GbiEspIdeSec$(ResSec$)                        'sector - identificacao
vResSecCid  = ResSec$+" - "+GbiEspIdeSec$(ResSec$)          'sector - codigo+identificacao


vResSit     = ResSit$                                       'situacao - codigo
vResSitIde  = GbiLugIdeSit$(ResSit$)                        'situacao - identificacao
vResSitCid  = ResSit$+" - "+GbiLugIdeSit$(ResSit$)          'situacao - codigo+identificacao


vResUtz     = ResUtz$                                       'utilizador


'contagem de registos
vNrg     = FrmNum$(08.0, cntReg)                            'numero do registo
tNrg     = FrmNum$(08.0, TotCnt("vResNum",0))               'total
sNrg     = FrmNum$(08.0, TotCnt("vResNum",1))               'subtotal

'resumo - numero
vResNum  = FrmNum$(08.0, ResNrg)                            'valor
tResNum  = FrmNum$(08.0, Total(vResNum,0))                  'total
sResNum  = FrmNum$(08.0, Total(vResNum,1))                  'subtotal

'resumo - valor de lugares
vResVlu  = FrmNum$(10.2, ResVlu)                            'valor
tResVlu  = FrmNum$(10.2, Total(vResVlu,0))                  'total
sResVlu  = FrmNum$(10.2, Total(vResVlu,1))                  'subtotal


'valores para modo de pagamento
vaMpgCod = vuMpgCod$                                        'codigo
vaMpgDes = vuMpgDes$                                        'descricao
vaMpgIde = vuMpgCod$+" - "+vuMpgDes$                        'identificacao

toMpgNrg = FrmNum$(08.0,TotCnt("vaMpgIde",0))               'numero de registos - total
s1MpgNrg = FrmNum$(08.0,TotCnt("vaMpgIde",1))               'numero de registos - subtotal 1

vaMpgNum = FrmNum$(08.0,vuMpgNum)                           'numero
toMpgNum = FrmNum$(08.0,Total("vaMpgNum",0))                'numero - total
s1MpgNum = FrmNum$(08.0,Total("vaMpgNum",1))                'numero - subtotal 1

vaMpgVto = FrmNum$(10.2,vuMpgVto)                           'valor
toMpgVto = FrmNum$(10.2,Total("vaMpgVto",0))                'valor - total
s1MpgVto = FrmNum$(10.2,Total("vaMpgVto",1))                'valor - subtotal 1

##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
'- (13) --->'Comentario
'- (25) --------------->'Comentario
'- (28) ------------------>'Comentario
'- (40) ------------------------------>'Comentario
'- (43) --------------------------------->'Comentario
'- (46) ------------------------------------>'Comentario
'- (49) --------------------------------------->'Comentario
'- (52) ------------------------------------------>'Comentario
'- (55) --------------------------------------------->'Comentario
'- (58) ------------------------------------------------>'Comentario
'- (61) --------------------------------------------------->'Comentario
'- (64) ------------------------------------------------------>'Comentario
'- (67) --------------------------------------------------------->'Comentario
'- (70) ------------------------------------------------------------>'Comentario


'=============================================================================
'- Inicializar ---------------------------------------------------------------
'=============================================================================
Sub FxIni 'funcao de inicializacao
'nada a executar
end sub


Sub FxFim 'funcao de finalizacao
'nada a executar
end sub


'------------------------------------------------------------------------------
'DIV - Funcoes diversas
'------------------------------------------------------------------------------
Sub Lst_AJT 'ajuste
'nada a executar
end sub


'=============================================================================
'- Comum ---------------------------------------------------------------------
'=============================================================================
Sub PrpVarRes 'preparar dados do resumo
ResNrg   = SqlCmp("NUM")                           'numero de registos
ResVlu   = SqlCmp("vLug")                          'valor dos lugares

ResSec$  = SqlCmp$("vSec")                         'sector
ResSit$  = SqlCmp$("vSit")                         'situacao
ResUtz$  = SqlCmp$("vUtz")                         'utilizador
end sub


'- resumo por modo de pagamento ----------------------------------------------
Sub ComMpgResPrp 'preparar
res = ResIni(2)                                    'inicializar

'preparar campos acumuladores
res = ResCmpReg("NRG", "NRG - Registos")           'registar acumulador
res = ResCmpReg("VTO", "VTO - Valor total")        'registar acumulador

'diversos
'res = ResAcmPrp("")                                'preparar acumulacao
end sub


Sub ComMpgResLpz 'limpar resumo
res = ResAcmLpz(-1)                               'limpar
end sub


Sub ComMpgResAcm 'acumular
vAcm = vuBilPrc                                    'valor a acumular
chvUsa$ = vuBilMpg$                                'chave a usar

res = ResAcm(chvUsa$, 1, vAcm)                     'acumular
end sub


Sub ComMpgResNrg 'numero de registos
mo$  = "*"                                         'modo - geral
grp$ = ""                                          'grupo

mpgNrg = ResGrpPrp(mo$, grp$)                      'preparar grupo a listar
end sub


Sub ComMpgResVndPrp 'preparar resumo do vendedor
'call ComMpgResPrp                                  'preparar resumo
call ComMpgResLpz                                  'limpar resumo

idq$ = "VND"                                       'identificador do query
res   = SqlOpcAct("VND.COD",vuVndCod$)             'registar entidade

exi   = SqlQryGer(idq$,"MpgBilVnd")                'preparar registos
while exi = 1
vuOpc$    = SqlQryCmp$(idq$,"LUG.DivOpc$")         'campos opcionais
vuBilMpg$ = TxIde$(vuOpc$,"PAG.FRM")               'modo de pagamento
vuBilUtz$ = SqlQryCmp$(idq$,"LUG.OdaUtz$")         'vendedor
vuBilSec$ = SqlQryCmp$(idq$,"LUG.Sec$")            'sector
vuBilFil$ = SqlQryCmp$(idq$,"LUG.Fil$")            'fila
vuBilLug  = SqlQryCmp(idq$,"LUG.Lug")              'lugar
vuBilPrc  = SqlQryCmp(idq$,"LUG.Prc")              'preco

if vuBilMpg$ = "" then                             'sem modo de pagamento ?
  vuBilMpg$ = "DIV"                                'usar modos diversos
end if

call ComMpgResAcm                                  'acumular

'seguinte
exi = SqlQryRgs(idq$)                              'registo seguinte
wend
end sub


Sub ComResMpgLst 'listar resumo por modo de pagamento
tmp = CntLin("INC", 1)                             'contar linhas
?- Valor por modo de pagamento --------------------------------------------------

'listar modos de pagamento
call ComMpgResNrg                                  'numero de registos
For i = 1 to mpgNrg
'tmp = CntLin("INC", 1)                             'contar linha
chv$ = ResIdxChv$(i)                               'chave para posicao

vuMpgCod$ = chv$                                   'modo de pagamento
'vuMpgNum  = ResAcmCon("A", chv$, "NRG")            'consultar numero de registos
'vuMpgVto  = ResAcmCon("A", chv$, "VTO")            'consultar valor total

vuMpgNum  = ResNivCon(resNiv, "A", chv$, "NRG")    'consultar numero de registos
vuMpgVto  = ResNivCon(resNiv, "A", chv$, "VTO")    'consultar valor total

vuVouObs$ = ""                                     'observacaoes

vuMpgDes$ = "Diversos (indefinido)"                'descricao

if vuMpgCod$ = "CRT" then                          'cartao ?
   vuMpgDes$ = "Cartão (MB/Crédito"                'descricao
end if

if vuMpgCod$ = "DIN" then                          'dinheiro ?
   vuMpgDes$ = "Dinheiro"                          'descricao
end if

if vuMpgCod$ = "OUT" then                          'outros ?
   vuMpgDes$ = "Outros"                            'descricao
end if

if vuMpgCod$ = "VCH" then                          'voucher ?
   vuMpgDes$ = "Voucher"                           'descricao
end if

'listar
if vuMpgNum > 0 then                               'listar ?
   tmp = CntLin("INC", 1)                          'contar linha
?                 @vaMpgIde                                @vaMpgNum@vaMpgVto   #
end if
Next

if resNiv = 0 then                                 'resumo total ?
   'nada a executar
else
   print                                           'listar separacao
   tmp = CntLin("INC", 1)                          'contar linha
end if
end sub


'-----------------------------------------------------------------------------
'- [TXT] - Listar em modo texto ----------------------------------------------
'-----------------------------------------------------------------------------
Sub TxtCom_ResIni 'inicializar listagem
call ComMpgResPrp                                  'preparar resumo
end sub


Sub TxtCom_ResCabIde 'cabecalho de listagem - identificacao
FxDiv LstIde,16CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",tit$)

?
?Sala       : @vSalCab                                                          #
?Espectáculo: @vEspCab                                                          #
?Sessão     : @vSesCab                                                          #
?
?Data : @DataExt                                                 Folha No : @Pag#
end sub


'==============================================================================
'- [TXT] - Listar em modo texto -----------------------------------------------
'==============================================================================
'------------------------------------------------------------------------------
'- [TXT] - Resumo de lugares --------------------------------------------------
'------------------------------------------------------------------------------
Sub TxtResLug_CabIni 'inicializar listagem
call TxtCom_ResIni                                 'inicializar listagem
end sub


Sub TxtResLug_Cab 'cabecalho de listagem
tit$ = "Resumo de Lugares"                         'titulo
call TxtCom_ResCabIde                              'cabecalho de listagem - identificacao

'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.
?================================================================================
?          Situação                                          Numero      Valor
' AAAAAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ,999,990 99,999,990.00
?================================================================================

'print string$(80,"-")
end sub


Sub TxtResLug_Lin 'linha de valores
call PrpVarRes                                     'preparar dados do resumo

? @vResSit @vResSitIde                                     @vResNum @vResVlu    #
end sub


Sub TxtResLug_Fim 'fim de listagem
?================================================================================
?                   Total: @tNrg                           @tResNum @tResVlu    #
?================================================================================

FxDiv LstPer,SP                                    'fim de pagina
'Print PrtCmd("[SP]");                             'fim de pagina
end sub


'------------------------------------------------------------------------------
'- [TXT] - Resumo por sector --------------------------------------------------
'------------------------------------------------------------------------------
Sub TxtResSec_CabIni 'inicializar listagem
call TxtCom_ResIni                                 'inicializar listagem
end sub


Sub TxtResSec_Cab 'cabecalho de listagem
call TxtResLug_Cab                                 'cabecalho de listagem
end sub


Sub TxtResSec_Lin 'linha de valores
call TxtResLug_Lin                                 'linha de valores
end sub


Sub TxtResSec_LinTit1 'titulo de subtotal - sector
'tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",1)                                'contar linha

ResSec$ = SbtInf$("ACT",1)                         'grupo
ide$    = @vResSecCid                              'identificacao

ideGrp$ = "Sector: " + ide$                        'identificacao
print tab(5) ideGrp$                               'identificar grupo
end sub


Sub TxtResSec_LinSbt1 'valor de subtotal - sector
sbtNrg  = @sNrg                                    'numero de registos

if sbtNrg > 1 then                                 'listar subtotal ?
?                Subtotal: @sNrg                           @sResNum @sResVlu    #

   tmp = CntLin("INC",1)                           'contar linha
end if

tmp = CntLin("INC",1)                              'contar linha
print                                              'listar separacao

x = TotLpz(1)                                      'limpar totais
end sub


Sub TxtResSec_Fim 'fim de listagem
call TxtResLug_Fim                                 'fim de listagem
end sub


'------------------------------------------------------------------------------
'- [TXT] - Resumo de vendas ---------------------------------------------------
'------------------------------------------------------------------------------
Sub TxtResVnd_CabIni 'inicializar listagem
call TxtCom_ResIni                                 'inicializar listagem
end sub


Sub TxtResVnd_Cab 'cabecalho de listagem
tit$ = "Resumo de Vendas"                          'titulo
call TxtCom_ResCabIde                              'cabecalho de listagem - identificacao

'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.
?================================================================================
? Vendedor                                                   Numero      Valor
' AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ,999,990 99,999,990.00
?================================================================================
end sub


Sub TxtResVnd_Lin 'linha de valores
call PrpVarRes                                     'preparar dados do resumo

? @vResUtz                                                 @vResNum @vResVlu    #
end sub


Sub TxtResVnd_Fim 'fim de listagem
call TxtResLug_Fim                                 'fim de listagem
end sub


'------------------------------------------------------------------------------
'- [TXT] - Resumo por modo de pagamento ---------------------------------------
'------------------------------------------------------------------------------
Sub TxtMpgRes_CabIni 'inicializar listagem
call TxtCom_ResIni                                 'inicializar listagem
end sub


Sub TxtMpgRes_Cab 'cabecalho de listagem
tit$ = "Resumo por Modo de Pagamento"              'titulo
call TxtCom_ResCabIde                              'cabecalho de listagem - identificacao

'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.
?================================================================================
? Vendedor                                                   Numero      Valor
' AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ,999,990 99,999,990.00
?================================================================================
end sub


Sub TxtMpgRes_Lin 'linha de valores
tmp = CntLin("MIN",5)                              'minimo de linhas
'- (52) ------------------------------------------>'Comentario

vuVndCod$ = SqlCmp$("VND.vUtz")                    'vendedor - codigo
vuVndDes$ = SqlCmp$("VND.Des$")                    'vendedor - nome
vuVndNum  = SqlCmp$("VND.NUM")                     'vendedor - numero
vuVndVto  = SqlCmp$("VND.vLug")                    'vendedor - valor

ResUtz$   = vuVndCod$                              'utilizador
ResNrg    = vuVndNum                               'numero de bilhetes
ResVlu    = vuVndVto                               'valor dos bilhetes

? @vResUtz                                                 @vResNum @vResVlu    #

'listar modos de pagamento
tmp = CntLin("INC", 1)                             'contar linhas

call ComMpgResVndPrp                               'preparar resumo do vendedor
resNiv = 1                                         'nivel do resumo
call ComResMpgLst                                  'listar resumo por modo de pagamento
end sub


Sub TxtMpgRes_Fim 'fim de listagem
'call TxtResLug_Fim                                 'fim de listagem

?================================================================================
?                   Total: @tNrg                           @tResNum @tResVlu    #
?================================================================================

resNiv = 0                                         'nivel do resumo
call ComResMpgLst                                  'listar resumo por modo de pagamento
'print string$(80,"-")                              'terminar resumo
print string$(80,"=")                              'terminar resumo

FxDiv LstPer,SP                                    'fim de pagina
'Print PrtCmd("[SP]");                             'fim de pagina
end sub

##


'==============================================================================
#INC - Funcoes comuns
'==============================================================================
Funcoes comuns                         =[SIG_Dir.Div],LsComPgm.std
'Funcoes comuns XLS                     =[SIG_LST_DIR.$INC],XlsCom_Pgm.inc
##

