'Nome       : Infos_Rotas.sql
'Tipo       : LST
'Data       : 2010/04/24
'Versao     : 1.0
'Descricao  : Rotas - INFOS

'===============================================================================
'#VER - Historia de modificacoes
'===============================================================================
'- Versao : 1.0   ____/__/__ ---------------------------------------------------
'Versao base


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


'===============================================================================
#ESP - Campos especificos
'===============================================================================
Zoom para preview             [PrvZoom]=1.0
Opcoes para impressora WIN   [PrWinOpc]=[ORI=P]
##


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

Dados a listar [Cmd]=GerDli=+
   +SELECT Rota AS vRota, Ct$ AS vCtu, Nome$ AS vNom +
   +FROM (SELECT +
                              +MST.[CT$]               AS [Ct$], +
                              +MST.[Nome$]             AS [Nome$], +
                              +MST.[Entid$]            AS [Entid$], +
                              +MST.[Ctrb$]             AS [Ctrb$], +
                              +MST.[CodTrat$]          AS [CodTrat$], +
                              +MST.[Txl$]              AS [Txl$], +
                              +MST.[RefCt$]            AS [RefCt$], +
                              +MST.[RefCod$]           AS [RefCod$], +
                              +MST.[IvaAno$]           AS [IvaAno$], +
                              +MST.[IvaPer$]           AS [IvaPer$], +
                              +MST.[Pais]              AS [Pais], +
                              +ANG.[Nome2$]            AS [Nome2$], +
                              +ANG.[Morada$]           AS [Morada$], +
                              +ANG.[Local$]            AS [Local$], +
                              +ANG.[Cpost$]            AS [Cpost$], +
                              +ANG.[Contacto$]         AS [Contacto$], +
                              +ANG.[Telef$]            AS [Telef$], +
                              +ANG.[Telem$]            AS [Telem$], +
                              +ANG.[Fax$]              AS [Fax$], +
                              +ANG.[Email$]            AS [Email$], +
                              +ANG.[Web$]              AS [Web$], +
                              +ANG.[NIB$]              AS [NIB$], +
                              +ANG.[Grupo$]            AS [Grupo$], +
                              +ANG.[Vend]              AS [Vend], +
                              +MST_EX.[InfosRota]      AS [Rota], +
                              +0 as Zero +
   +FROM ({TB_CtaMst} AS MST +
   +LEFT JOIN +
   +   (SELECT [Ct$], [Nome2$], [Morada$], [Local$], [Cpost$], [Contacto$], +
   +           [Telef$], [Telem$], [Fax$], +
   +           [Email$], [Web$], [NIB$], [Grupo$], [Vend] +
   +   FROM {TB_CtaAng} AS ANG_X) AS ANG +
   +   ON MST.[Ct$] = ANG.[Ct$]) +
   +LEFT JOIN {TB_CtaMstEx} AS MST_EX ON MST.[Ct$] = MST_EX.[Ct$] +
   +) PSQ +
   +WHERE Ct$  BETWEEN '{Opc_Ct.Ini}'     AND '{Opc_Ct.Fim}'     +
   +AND   Rota BETWEEN  {Opc_DivNum.Ini}  AND  {Opc_DivNum.Fim}  +
   +ORDER BY ROTA, Ct$

##


'===============================================================================
#DOC - Configuracao do documento - Texto
'===============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=DocTxt,Listagem de Rotas
Vias                       [DocVia]=Original

'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    [DocEsp]=TipoLst=TXT

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

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


'===============================================================================
#DOC - Configuracao do documento - Texto - Grafico
'===============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=DocGrf,Listagem de Rotas
Vias                       [DocVia]=Original

'formato
Saida/Impressora           [DocPrt]=PAG_W
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=78
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0
Especifico do documento    [DocEsp]=TipoLst=GRF

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

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


'===============================================================================
#VAR - Variaveis
'===============================================================================
'- (52) ------------------------------------------>'Comentario
Pag      = Doc_CntPag                              'pagina
DataExt  = FrmVal$(Sig_DtHoje,45,0)                'data por extenso

'Campos
vRota   = SqlCmp$("vRota")                         'rota
vCtu    = SqlCmp$("vCtu")                          'conta
vNom    = left$(SqlCmp$("vNom"), 30)               'nome
vObs    = ""                                       'observacoes

'subtotal - nivel 1
vCtu_N1 = FrmNum$(  6.0,TotCnt("vCtu",1))          'numero de registos

'agrupamento - total
vCtu_N0 = FrmNum$(  6.0,TotCnt("vCtu",0))          'numero de registos
vCtu_T0 = FrmNum$( 12.2,Total(vCtu,0))             'valor
##


'===============================================================================
#PGM - Programa/Funcoes
'===============================================================================
'-------------------------------------------------------------------------------
'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.
'- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--
'- (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
'- (80) ----------------------------------------------------------------------->


'-------------------------------------------------------------------------------
'#DIV - Funcoes diversas
'-------------------------------------------------------------------------------
'- (52) ------------------------------------------>'Comentario
Sub FxIni 'funcao de inicializacao
logoNom$ = "OliLogo.bmp"                           'nome do logotipo
logoNom$ = "EmpLogo.bmp"                           'nome do logotipo
logoUsa$ = "[SIG_DIR.DIV]," + logoNom$             'logotipo a usar
logoFic$ = VarTx$(logoUsa$,"R")                    'ficheiro do logotipo

'modo WIN
PrWIN AJT_F,  56.7,  56.7                          'ajuste para milimetros
PrWIN AJT_D,-280.0,-280.0                          'deslocamento de ajuste

'PrWIN IMG_F, 1, logoFic$                          'imagem (logotipo)
PrWIN ET,  2                                       'espessura de traco

dimLinNor = 4.4                                    'altura de uma linha normal
dimLinCab = 6.6                                    'altura de uma linha de cabecalho
end sub


Sub FxFim 'funcao de finalizacao
PrWIN FON, "REG"                                   'limpar registo de fontes
end sub


Sub Lst_AJT 'ajuste
'nada a executar
end sub


'===============================================================================
'#COM - Funcoes comuns ---------------------------------------------------------
'===============================================================================
Sub Sbt1_IdeIni 'subtotal 1 - identificacao/iniciar
tmp  = CntLin("MIN", 5)                            'minimo de linhas
tmp  = CntLin("INC", 1)                            'contar linha
end sub


Sub Sbt1_IdeFim 'subtotal 1 - identificacao/terminar
'nada a executar
end sub


Sub Sbt1_ExeIni 'subtotal 1 - iniciar
tmp = CntLin("INC", -1)                            'contar linha (sem nova pagina)
end sub


Sub Sbt1_ExeFim 'subtotal 1 - terminar
tmp = CntLin("INC", 1)                             'contar linhas
tmp = TotLpz(1)                                    'limpar totais
end sub


Sub Sbt1_PrpIde 'subtotal 1 - preparar identificacao
grp$ = SbtInf$("ACT", 1)                           'grupo
tmp  = SqlOpcAct("Grp", grp$)                      'actualizar valor do grupo

grpChv$ = grp$                                     'copiar
grpIde$ = SqlCalc$("GrpIde")                       'pesquisar identificador de grupo
grpVer$ = "Rota : " + grpChv$ + " " + grpIde$      'identificacao para grupo
end sub


Sub Sbt1_PrpRes 'subtotal 1 - preparar resumo
grp$    = SbtInf$("ANT", 1)                        'grupo
grpChv$ = grp$                                     'copiar

sbtIde$ = grpChv$                                  'identificacao de subtotal
sbtNrg  = TotCnt("vCtu", 1)                        'numero de registos
sbtNrx$ = FrmNum$(  6.0,sbtNrg)                    'numero de registos - formatado
sbtReg$ = "Registos da rota : " + sbtNrx$          'registos
end sub


'===============================================================================
'#TXT - Listagem em modo texto -------------------------------------------------
'===============================================================================
'-------------------------------------------------------------------------------
'#COM - Funcoes comuns
'-------------------------------------------------------------------------------
'nao ha


'-------------------------------------------------------------------------------
'#DOC - Documento
'-------------------------------------------------------------------------------
Sub DocTxt_CabIni 'inicializar listagem
cntDoc = 0                                         'limpar contador
end sub


Sub DocTxt_Cab 'cabecalho de listagem
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",MemTxt$(1))

?Data : @DataExt                                                 Folha No : @Pag#
?================================================================================
?  Conta            Nome                            Observacoes
?123456789.12345  123456789.123456789.123456789.  123456789.123456789.123456789.
?================================================================================
end sub


Sub DocTxt_Lin 'linha de valores
?@vCtu            @vNom                           @vObs                         #
end sub


Sub DocTxt_FimAjt 'fim de pagina intermedia
?================================================================================

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


Sub DocTxt_Fim 'fim de listagem
TotNr=TotCnt("C01",0)                              'numero de registos
?================================================================================
?    Total :    @vCtu_N0                                                        #
?================================================================================

FxDiv LstPer,SP                                    'fim de pagina
end sub


SUB DocTxt_LinTit1 'titulo de subtotal 1
call Sbt1_IdeIni                                   'subtotal 1 - identificacao/iniciar
call Sbt1_PrpIde                                   'subtotal 1 - preparar identificacao

print tab(5) "Rota : " grpVer$                     'identificar grupo

call Sbt1_IdeFim                                   'subtotal 1 - identificacao/terminar
end sub


Sub DocTxt_LinSbt1 'valor de subtotal 1
call Sbt1_ExeIni                                   'subtotal 1 - iniciar
call Sbt1_PrpRes                                   'subtotal 1 - preparar resumo

?    Registos : @vCtu_N1                                                        #
print                                              'separar

call Sbt1_ExeFim                                   'subtotal 1 - terminar
end sub


'===============================================================================
'#GRF - Listagem em modo grafico -----------------------------------------------
'===============================================================================
'-------------------------------------------------------------------------------
'#COM - Funcoes comuns
'-------------------------------------------------------------------------------
Sub DocGrf_Cab132 'cabecalho para 132 colunas
PrWIN AJT_B, 10.0, 0.0                             'posicao base

cabX1 = 3                                          'limite X1
cabX2 = 190                                        'limite X2
cabY1 = 25                                         'limite Y1
cabY2 = cabY1 + dimLinCab * CabLin                 'limite Y2
cabYm = cabY2 + dimLinNor * 50                     'limite Y maximo

PrWIN COR_F, 15                                    'cor de fundo

PrWIN FON, 10, 1                                   'activar fonte

'PrWIN TX_N, cabX2-100,  5,VarTx$(EMP_INF_NOME$)    'nome da empresa
PrWIN TX_N, cabX2-100,  5,EmpCurIde$("IDE")        'nome da empresa

PrWIN FON, 18, 1                             	   'activar fonte
PrWin FON, "BOLD+"                                 'activar bold
PrWIN TX_CTR,  cabX1, 5, cabX2, cabY1,MemTxt$(1)   'titulo centrado
PrWin FON, "BOLD-"                                 'desactivar bold
PrWIN FON, 10, 1                             	   'activar fonte

py    = cabY1 - dimLinNor - 1                      'posicao Y
pxFol = CabX2 - 30                                 'posicao X para folha
pxPag = CabX2 - 10                                 'posicao X para pagina

PrWIN TX_N,   05, py,"Data :"                      'data
PrWIN TX_N,   16, py,@DataExt                      'listar data
PrWIN TX_N,pxFol, py,"Folha No :"                  'folha
PrWIN TX_N,pxPag, py,@Pag                          'numero da folha

PrWIN COR_E, 200, 200, 200                         'cor de enchimento RGB
PrWIN GR_ME, 0                                     'modo de enchimento

PrWIN GR_CE,  cabX1, cabY1, cabX2, cabY2, 2        'caixa do cabecalho
PrWIN GR_CX,  cabX1, cabY1, cabX2, cabYm, 2        'caixa envolvente
End Sub


'-------------------------------------------------------------------------------
'#DOC - Documento
'-------------------------------------------------------------------------------
Sub DocGrf_CabIni 'inicializar listagem
cntDoc = 0                                         'limpar contador
end sub


Sub DocGrf_Cab 'cabecalho
CabLin = 1                                         'linhas de cabecalho
call DocGrf_Cab132                                 'listar cabecalho
PrWIN AJT_B,  8.0, 0.0                             'posicao base

PrWin FON, "BOLD+"                                 'activar bold
call DocGrf_CabCol                                 'titulos das colunas
PrWin FON, "BOLD-"                                 'desactivar bold
end sub


Sub DocGrf_CabCol 'titulos de colunas
'posicao de colunas
pxC01 =   5.0                                      'coluna 1
pxC02 =  40.0                                      'coluna 2
pxC03 = 120.0                                      'coluna 3
pxC04 = cabX2                                      'coluna 4 - posicao final X

'pxC04 = 160.4                                      'coluna 4

'listar
PrWIN TX_CTR,pxC01,cabY1,pxC02,cabY2,"Conta"
PrWIN TX_CTR,pxC02,cabY1,pxC03,cabY2,"Nome"
PrWIN TX_CTR,pxC03,cabY1,pxC04,cabY2,"Observações"

'separadores de colunas
'PrWIN GR_LI,pxC01,cabY1,pxC01,cabYm,2
PrWIN GR_LI,pxC02,cabY1,pxC02,cabYm,2
PrWIN GR_LI,pxC03,cabY1,pxC03,cabYm,2
'PrWIN GR_LI,pxC04,cabY1,pxC04,cabYm,2
end sub


Sub DocGrf_LinPos 'posicao de linha
PrWIN AJT_B,  8, 31+Doc_CntLin*4.4                 'posicao base
end sub


Sub DocGrf_Lin 'linha
call DocGrf_LinPos                                 'posicionar linha

'listar
PrWIN TX_N,pxC01+1,0,@vCtu
PrWIN TX_N,pxC02+1,0,@vNom
PrWIN TX_N,pxC03+1,0,@vObs
end sub


Sub DocGrf_FimAjt 'fim de pagina intermedia
PrWIN FP                                           'fim de pagina
end sub


Sub DocGrf_Fim 'fim de listagem
tmp = CntLin("INC", -2)                            'contar linha (sem nova pagina)
call DocGrf_LinPos                                 'posicionar linha

vNrg$ = FrmNum$(  6.0,TotCnt("vCtu",0))            'numero de registos

'listar
txLst$ = "Total de registos : " + vNrg$

PrWin FON, "BOLD+"                                 'activar bold
PrWIN TX_N,pxC02+1,0,txLst$
PrWin FON, "BOLD-"                                 'desactivar bold

'terminar
PrWIN FP                                           'fim de pagina
end sub


Sub DocGrf_LinTit1 'titulo de subtotal 1
call Sbt1_IdeIni                                   'subtotal 1 - identificacao/iniciar
call DocGrf_LinPos                                 'posicionar linha
call Sbt1_PrpIde                                   'subtotal 1 - preparar identificacao

PrWin FON, "BOLD+"                                 'activar bold
PrWIN TX_N,pxC02+1,  0,grpVer$                     'identificar grupo
PrWin FON, "BOLD-"                                 'desactivar bold

call Sbt1_IdeFim                                   'subtotal 1 - identificacao/terminar
end sub


Sub DocGrf_LinSbt1 'valor de subtotal 1
call Sbt1_ExeIni                                   'subtotal 1 - iniciar
call DocGrf_LinPos                                 'posicionar linha
call Sbt1_PrpRes                                   'subtotal 1 - preparar resumo

PrWIN TX_N,pxC02+1,0,sbtReg$                       'listar registos

call Sbt1_ExeFim                                   'subtotal 1 - terminar
end sub

##


