'Nome       : GbiLugRes.sql
'Tipo       : LST
'Data       : 2009/07/16
'Versao     : 1.0
'Descricao  : GBI - Lugares reservados

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0   2009/??/?? --------------------------------------------------
'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 por sector      [Cmd]=ResSec=+
   +SELECT COUNT(*) as NUM, Sec$ as vSec, OdaUtz$ as vUtz +
   +FROM {TB_GbiLug} AS ESP +
   +WHERE sit$ = 'RES' +
   +AND   left(OdaDtr$,10) BETWEEN '{Opc_DtUsa.Ini}'  AND '{Opc_DtUsa.Fim}'  +
   +AND   OdaUtz$          BETWEEN '{Opc_Utz.Ini}'    AND '{Opc_Utz.Fim}'    +
   +AND   sec$             BETWEEN '{Opc_Sec.Ini}'    AND '{Opc_Sec.Fim}'    +
   +GROUP BY Sec$, OdaUtz$ +
   +ORDER BY Sec$, OdaUtz$


Resumo por utilizador  [Cmd]=ResUtz=+
   +SELECT COUNT(*) as NUM, Sec$ as vSec, OdaUtz$ as vUtz +
   +FROM {TB_GbiLug} AS ESP +
   +WHERE sit$ = 'RES' +
   +AND   left(OdaDtr$,10) BETWEEN '{Opc_DtUsa.Ini}'  AND '{Opc_DtUsa.Fim}'  +
   +AND   OdaUtz$          BETWEEN '{Opc_Utz.Ini}'    AND '{Opc_Utz.Fim}'    +
   +AND   sec$             BETWEEN '{Opc_Sec.Ini}'    AND '{Opc_Sec.Fim}'    +
   +GROUP BY OdaUtz$, Sec$  +
   +ORDER BY OdaUtz$, Sec$


Lista de lugares       [Cmd]=LugLis=+
   +SELECT * +
   +FROM {TB_GbiLug} AS ESP +
   +WHERE sit$ = 'RES' +
   +AND   left(OdaDtr$,10) BETWEEN '{Opc_DtUsa.Ini}'  AND '{Opc_DtUsa.Fim}'  +
   +AND   OdaUtz$          BETWEEN '{Opc_Utz.Ini}'    AND '{Opc_Utz.Fim}'    +
   +AND   sec$             BETWEEN '{Opc_Sec.Ini}'    AND '{Opc_Sec.Fim}'    +
   +ORDER BY Sec$, Fil$, Lug

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=GbiResSec,Reservados 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]=TxtComRes_Fim


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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=GbiResUtz,Reservados por Utilizador

'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]=TxtResUtz_Cab
Listar linhas               [FxLIN]=TxtResUtz_Lin
Listar fim                  [FxFIM]=TxtComRes_Fim


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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=GbiLugLis,Lista de Lugares Reservados

'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]=TxtLugLis_Cab
Listar linhas               [FxLIN]=TxtLugLis_Lin
Listar fim                  [FxFIM]=TxtLugLis_Fim


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


'==============================================================================
#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


'------------------------------------------------------------------------------
'- substotal ------------------------------------------------------------------
'------------------------------------------------------------------------------
vSbtNrg     = FrmNum$(08.0, sbtNrg)                         'numero de registos


'------------------------------------------------------------------------------
'- resumo de lugares ----------------------------------------------------------
'------------------------------------------------------------------------------
vResIdc     = ResIdc$                                       'identificaco para coluna
vLinIde     = linIde$                                       'identificaco para linha

'contagem de registos
vResNrg     = FrmNum$(08.0, cntReg)                         'numero do registo
tResNrg     = FrmNum$(08.0, TotCnt("vResNum",0))            'total
sResNrg     = FrmNum$(08.0, TotCnt("vResNum",1))            'subtotal

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

'dados do lugar
vResUtz     = ResUtz$                                       'utilizador

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


'------------------------------------------------------------------------------
'- lista de lugares -----------------------------------------------------------
'------------------------------------------------------------------------------
'contagem de registos
vLisNrg     = FrmNum$(08.0, cntReg)                         'numero do registo
tLisNrg     = FrmNum$(08.0, TotCnt("vLisUtz",0))            'total
sLisNrg     = FrmNum$(08.0, TotCnt("vLisUtz",1))            'subtotal

'dados do sector
vLisSec     = LisSec$                                       'sector
vLisSecIde  = GbiEspIdeSec$(LisSec$)                        'sector - identificacao
vLisSecCid  = LisSec$+" - "+GbiEspIdeSec$(LisSec$)          'sector - codigo+identificacao

'dados do lugar
vLisUtz     = LisUtz$                                       'utilizador
vLisTms     = LisTms$                                       'time stamp
vLisDat     = LisDat$                                       'data
vLisHor     = LisHor$                                       'hora

vLisFil     = LisFil$                                       'fila
vLisLug     = LisLug$                                       'lugar

##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'- 13 -     - info
'- 25 ----------------->'
'- 28 -------------------->'
'- 40 -------------------------------->'
'- 43 ----------------------------------->'
'- 46 -------------------------------------->'
'- 49 ----------------------------------------->'
'- 52 -------------------------------------------->'
'- 55 ----------------------------------------------->'
'- 58 -------------------------------------------------->'
'- 61 ----------------------------------------------------->'
'- 64 -------------------------------------------------------->'
'- 67 ----------------------------------------------------------->'
'- 70 -------------------------------------------------------------->'
'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.


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


'------------------------------------------------------------------------------
'INI - Inicializacao do documento
'------------------------------------------------------------------------------
Sub FxIni 'funcao de inicializacao
'nada a executar
end sub


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


'------------------------------------------------------------------------------
'COM - Funcoes comuns
'------------------------------------------------------------------------------
Sub PrpVarRes 'preparar dados do resumo
ResNrg   = SqlCmp("NUM")                           'numero de registos

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


Sub PrpVarLis 'preparar dados da lista
LisUtz$  = SqlCmp$("OdaUtz$")                      'utilizador
LisTms$  = SqlCmp$("OdaDtr$")                      'time stamp

LisSec$  = SqlCmp$("Sec$")                         'sector
LisFil$  = SqlCmp$("Fil$")                         'fila
LisLug$  = SqlCmp$("Lug")                          'lugar

'calculados
LisDat$  = left$(LisTms$,10)                       'separar data
LisHor$  = mid$(LisTms$,12,5)                      'separar hora
end sub


'==============================================================================
'= TXT = Modo Texto ===========================================================
'==============================================================================
'------------------------------------------------------------------------------
'COM - Funcoes comuns
'------------------------------------------------------------------------------
Sub TxtCom_ResIni 'inicializar listagem
'nada a executar

'msgbox "","CAB"
end sub


Sub TxtCom_CabIde '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


Sub TxtComRes_Cab 'cabecalho de listagem/resumo
tit$ = VBS_DocConOpc$("DocIde")                    'consultar identificacao do documento
call TxtCom_CabIde                                 'cabecalho de listagem - identificacao

'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.
?================================================================================
?          @vResIdc                                          Numero
' AAAAAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ,999,990 
?================================================================================
end sub


Sub TxtComRes_Lin 'linha de valores/resumo
' AAAAAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ,999,990 
?          @vLinIde                                        @vResNum             #
end sub


Sub TxtComRes_Fim 'fim de listagem
?================================================================================
?                   Total: @tResNrg                        @tResNum             #
?================================================================================

FxDiv LstPer,SP                                    'fim de pagina
end sub


Sub TxtCom_SbtIde 'identificar subtotal
'tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",1)                                'contar linha

print tab(5) sbtIde$                               'identificar grupo
end sub


Sub TxtRes_SbtLis 'listar subtotal
if sbtNrg > 1 then                                 'listar subtotal ?
?                Subtotal: @vSbtNrg                                             #

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

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

x = TotLpz(1)                                      'limpar totais
end sub


'------------------------------------------------------------------------------
'ResSec - Resumo por sector
'------------------------------------------------------------------------------
Sub TxtResSec_CabIni 'inicializar listagem
call TxtCom_ResIni                                 'inicializar listagem
end sub


Sub TxtResSec_Cab 'cabecalho de listagem
ResIdc$ = "Utilizador"                             'identificaco para coluna
call TxtComRes_Cab                                 'cabecalho de listagem - identificacao
end sub


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

linIde$ = ResUtz$                                  'identificaco para linha
call TxtComRes_Lin                                 'linha de valores/resumo
end sub


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


Sub TxtResSec_LinTit1 'titulo de subtotal - sector
vGrp$   = SbtInf$("ACT",1)                         'grupo
vIde$   = vGrp$ + " - " + GbiEspIdeSec$(vGrp$)     'sector - codigo+identificacao
sbtIde$ = "Sector: " + vIde$                       'identificacao

call TxtCom_SbtIde                                 'identificar subtotal
end sub


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

call TxtRes_SbtLis                                 'listar subtotal
end sub


'------------------------------------------------------------------------------
'ResUtz - Resumo por utilizador
'------------------------------------------------------------------------------
Sub TxtResUtz_CabIni 'inicializar listagem
call TxtCom_ResIni                                 'inicializar listagem
end sub


Sub TxtResUtz_Cab 'cabecalho de listagem
ResIdc$ = "Sector"                                 'identificaco para coluna
call TxtComRes_Cab                                 'cabecalho de listagem - identificacao
end sub


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

vSec$   = ResSec$                                  'sector
vIde$   = vSec$ + " - " + GbiEspIdeSec$(vSec$)     'sector - codigo+identificacao

linIde$ = vIde$                                    'identificaco para linha

call TxtComRes_Lin                                 'linha de valores/resumo
end sub


Sub TxtResUtz_Fim 'fim de listagem
call TxtComRes_Fim                                 'fim de listagem
end sub


Sub TxtResUtz_LinTit1 'titulo de subtotal - sector
vGrp$   = SbtInf$("ACT",1)                         'grupo
sbtIde$ = "Utilizador: " + vGrp$                   'identificacao

call TxtCom_SbtIde                                 'identificar subtotal
end sub


Sub TxtResUtz_LinSbt1 'valor de subtotal - sector
sbtNrg  = @sResNrg                                 'numero de registos

call TxtRes_SbtLis                                 'listar subtotal
end sub


'------------------------------------------------------------------------------
'LugLis - Lista de lugares
'------------------------------------------------------------------------------
Sub TxtLugLis_CabIni 'inicializar listagem
call TxtCom_ResIni                                 'inicializar listagem
end sub


Sub TxtLugLis_Cab 'cabecalho de listagem
tit$ = VBS_DocConOpc$("DocIde")                    'consultar identificacao do documento
call TxtCom_CabIde                                 'cabecalho de listagem - identificacao

'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.
?================================================================================
? Fila    Lugar   Utilizador                         Data     Hora
' AAAAAA  AAAAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAA   2009/01/01  01:02
' 123456  123456  123456789.123456789.123456789.  123456789.  12345  123456789.
?================================================================================
end sub


Sub TxtLugLis_Lin 'linha de valores
call PrpVarLis                                     'preparar dados da lista

? @vLisFil@vLisLug@vLisUtz                        @vLisDat    @vLisHor          #
end sub


Sub TxtLugLis_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 TxtLugLis_LinSbt1 'valor de subtotal - sector
sbtNrg  = @sLisNrg                                 'numero de registos

if sbtNrg > 1 then                                 'listar subtotal ?
?                      Subtotal: @sLisNrg                                       #

   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 TxtLugLis_Fim 'fim de listagem
?================================================================================
?                         Total: @tLisNrg                                       #
?================================================================================

FxDiv LstPer,SP                                    'fim de pagina
end sub

##


'==============================================================================
#VBS - VB Script
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)

'- variaveis globais ----------------------------------------------------------
'dim var                            'variavel


'------------------------------------------------------------------------------
'Funcoes
'------------------------------------------------------------------------------
'- Consultar valores do documento ---------------------------------------------
Function DocConEsp(ide) 'consultar opcao especifica de documento
'ide        - identificador 

res = FxPre.DocConEsp("T", ide)        'consultar

'txm = "Especifico DOC: " & ide & "=" & res
'msgbox txm

DocConEsp = res                        'devolver valor
end function


Function DocConOpc(ide) 'consultar opcao de documento
'ide        - identificador 

res = FxPre.DocConOpc("T", ide)        'consultar

'txm = "Opcao DOC: " & ide & "=" & res
'msgbox txm

DocConOpc = res                        'devolver valor
end function


Function DocConOpcEsp(ide) 'consultar opcao especifica do documento
'ide        - identificador 

res = FxPre.DocConOpcEsp("T", ide)     'consultar

'txm = "Opcao DOC/ESP: " & ide & "=" & res
'msgbox txm

DocConOpcEsp = res                     'devolver valor
end function


Function DocConVar(ide) 'consultar variavel do documento
'ide        - identificador 

res = FxPre.DocConVar("T", ide)        'consultar

'txm = "Variavel: " & ide & "=" & res
'msgbox txm

DocConVar = res                        'devolver valor
end function


'- Funcoes do documento -------------------------------------------------------
Function ExeFxDoc(fx) 'executar funcao do documento
'fx         - nome da funcao a executar

FxPre.FxDoc(fx)                        'executar funcao do documento
res = 1                                'resultado

ExeFxDoc = res                         'retornar resultado
end function


'- Funcoes com SQL ------------------------------------------------------------
Function FxExpSql(tip) 'exemplo
'tpc        - tipo de contrato

sql =       "SELECT Count(*) "
sql = Sql + "FROM XxxTab "
sql = Sql + "WHERE VarTip = "  & tpc & " "

res = FxPre.SqlCalc("N", sql)          'calcular valor

FxExpSql = res                         'devolver resultado
end function


'- Diversos -------------------------------------------------------------------
##


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

