'Nome       : BscEmp_Obj.std
'Tipo       : LST
'Data       : 2014/01/02
'Versao     : 1.0
'Descricao  : BSC - Empresa / Objetivo

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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=BSC
Nome                       [DocNom]=Per,Análise de Evolução (Mensal)
Vias                       [DocVia]=Original

'formato
Saida/Impressora           [DocPrt]=PAG_W

'Linhas por pagina          [DocLpg]=250
Linhas por pagina          [DocLpg]=255

Colunas por linha          [DocCol]=78
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0
Especifico do documento    [DocEsp]=

'funcoes de listagem
Funcao do documento         [FxDOC]=Per
Listar cabecalho            [FxCAB]=Per_Cab
Listar linhas               [FxLIN]=Per_Lin,0; Pag,0; Grp,0; Ind,0; Sbt,0; Tot,0
Listar fim                  [FxFIM]=Per_Fim
##

'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=BSC
Nome                       [DocNom]=Acm,Análise de Evolução (Acumulado)
Vias                       [DocVia]=Original

'formato
Saida/Impressora           [DocPrt]=PAG_W

'Linhas por pagina          [DocLpg]=250
Linhas por pagina          [DocLpg]=255

Colunas por linha          [DocCol]=78
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0
Especifico do documento    [DocEsp]=

'funcoes de listagem
Funcao do documento         [FxDOC]=Acm
Listar cabecalho            [FxCAB]=Acm_Cab
Listar linhas               [FxLIN]=Acm_Lin,0; Pag,0; Grp,0; Ind,0; Sbt,0; Tot,0
Listar fim                  [FxFIM]=Acm_Fim
##

'==============================================================================
#VAR - Variaveis
'==============================================================================
Tipo     = MemTxt$(1)
Pag      = Doc_CntPag
Tit080   = TxTit$("TT=10CPI, LD, PT=40C",Memtxt$(1))
Tit132   = TxTit$("TT=16CPI, LD, PT=66C",Memtxt$(1))
DataExt  = FrmVal$(Sig_DtHoje,45,0)

'variaveis a listar
##


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


'=============================================================================
'- Inicializacao -------------------------------------------------------------
'=============================================================================
Sub FxIni 'funcao de inicializacao
call Com_Prp                                       'preparar opcoes comuns
call Com_Prp_Opc                                   'preparar - opcoes
call DocOri                                        'inicializar orientacao
end sub


Sub DocOri 'inicializar orientacao
pagOri$ = "P"                                      'orientacao da pagina - Portrait
'pagOri$ = "L"                                      'orientacao da pagina - Landscape

res = VBS_PrpExe("")                               'preparar
res = VBS_PrpAsp(pagOri$)                          'preparar pagina
end sub


'==============================================================================
'- [BSC] - Listagem de BSC ----------------------------------------------------
'==============================================================================

'-----------------
' INICIO
'-----------------

'**PERIODO**

Sub Per_DocIni 'inicializar
'msgbox "","IMG.DBA",imgDba$
res = VBS_OpcReg("IMG.DBA", imgDba$)               'registar directorio de imagens
res = VBS_BscPrpOpc("")                            'preparar opcoes

call DocOri                                        'inicializar orientacao

'diversos
pagTip$ = ""                                       'tipo de pagina
end sub

'**ACUMULADO**

Sub Per_DocIni 'inicializar
'msgbox "","IMG.DBA",imgDba$
res = VBS_OpcReg("IMG.DBA", imgDba$)               'registar directorio de imagens
res = VBS_BscPrpOpc("")                            'preparar opcoes

call DocOri                                        'inicializar orientacao

'diversos
pagTip$ = ""                                       'tipo de pagina
end sub

'-----------------
' CABEÇALHO
'-----------------

'**PERIODO**

Sub Per_Cab 'cabecalho
comCabTit$ = DocOpc$("DOCIDE")                     'titulo - Zona DOC
comCabSbt$ = VarCom$("GRP_DES")                    'titulo - Zona DOC

call Com_Prp_Per                                   'preparar periodo/data
call Com_Grf_Cab                                   'listar cabecalho
res = VBS_DocRegOpc("ANO", vAno)                   'registar ano do documento

'res = VBS_PagInd_RegOpc("ANO", vAno)               'individual - registar ano
'res = VBS_PagInd_ZonPrp("")                        'individual - preparar

minPon = 0                                         'objectivo/pontos
end sub

'**ACUMULADO**

Sub Acm_Cab 'cabecalho
comCabTit$ = DocOpc$("DOCIDE")                     'titulo - Zona DOC
comCabSbt$ = VarCom$("GRP_DES")                    'titulo - Zona DOC~

call Com_Prp_Per                                   'preparar periodo/data
call Com_Grf_Cab                                   'listar cabecalho
res = VBS_DocRegOpc("ANO", vAno)                   'registar ano do documento

'res = VBS_PagInd_RegOpc("ANO", vAno)               'individual - registar ano
'res = VBS_PagInd_ZonPrp("")                        'individual - preparar

minPon = 0                                         'objectivo/pontos
end sub

'-----------------
' FIM
'-----------------

'**PERIODO**

Sub Bsc_Fim 'terminar
'res = VBS_ZonGra_Fim("")                           'terminar grafico
'res = VBS_ZonDiv_Fim("")                           'terminar zonas diversas
call Com_Grf_Fim                                   'listar
end sub

'**ACUMULADO**

Sub Bsc_Fim 'terminar
'res = VBS_ZonGra_Fim("")                           'terminar grafico
'res = VBS_ZonDiv_Fim("")                           'terminar zonas diversas
call Com_Grf_Fim                                   'listar
end sub

'-----------------
' LINHA - INDEFINIDA
'-----------------

Sub Per_Lin 'linha - indefinida
call PrpVar_Lin                                    'preparar variaveis para linha

'dados da linha indefinida
uLinXxxTip$   = VarCom$("LIN_TIP")                 'tipo
uLinXxxDes$   = VarCom$("LIN_DES")                 'descricao
uLinXxxAbv$   = VarCom$("LIN_ABV")                 'abreviatura
end sub

Sub Acm_Lin 'linha - indefinida
call PrpVar_Lin                                    'preparar variaveis para linha

'dados da linha indefinida
uLinXxxTip$   = VarCom$("LIN_TIP")                 'tipo
uLinXxxDes$   = VarCom$("LIN_DES")                 'descricao
uLinXxxAbv$   = VarCom$("LIN_ABV")                 'abreviatura
end sub


'-----------------
' LINHA - PAGINA
'-----------------

'**PERIODO**

Sub Per_LinPag 'linha - pagina
call PrpVar_Lin                                    'preparar variaveis para linha

'dados da linha
uLinPagDes$   = VarCom$("PAG_DES")                 'descricao
uLinPagAbv$   = VarCom$("PAG_ABV")                 'abreviatura
uLinPagAsp$   = VarCom$("PAG_ASP")                 'aspecto
uLinPagOpc$   = VarCom$("PAG_OPC")                 'opcoes

'msgbox "","LinPag",uLinPagDes$

'executar
res = VBS_DpgIni(uLinPagAsp$)                      'inicializar tipo de pagina
res = VBS_DpgFx("PAG")                             'executar funcao
end sub

'**ACUMULADO**

Sub Acm_LinPag 'linha - pagina
call PrpVar_Lin                                    'preparar variaveis para linha

'dados da linha
uLinPagDes$   = VarCom$("PAG_DES")                 'descricao
uLinPagAbv$   = VarCom$("PAG_ABV")                 'abreviatura
uLinPagAsp$   = VarCom$("PAG_ASP")                 'aspecto
uLinPagOpc$   = VarCom$("PAG_OPC")                 'opcoes

'msgbox "","LinPag",uLinPagDes$

'executar
res = VBS_DpgIni(uLinPagAsp$)                      'inicializar tipo de pagina
res = VBS_DpgFx("PAG")                             'executar funcao
end sub

'-----------------
' LINHA - GRUPO
'-----------------

'**PERIODO**

Sub Per_LinGrp 'linha - grupo
call PrpVar_Lin                                    'preparar variaveis para linha

dLin = 10                                          'dimensao da linha
tmp = CntLin("MIN", dLin)                          'minimo de linhas (MM)

'dados da linha
uLinGrpDes$   = VarCom$("GRP_DES")                 'descricao
uLinGrpAbv$   = VarCom$("GRP_ABV")                 'abreviatura
uLinGrpAsp$   = VarCom$("GRP_ASP")                 'aspecto

'executar
res = VBS_DpgFx("GRP")                             'executar funcao
end sub

'**ACUMULADO**

Sub Acm_LinGrp 'linha - grupo
call PrpVar_Lin                                    'preparar variaveis para linha

dLin = 10                                          'dimensao da linha
tmp = CntLin("MIN", dLin)                          'minimo de linhas (MM)

'dados da linha
uLinGrpDes$   = VarCom$("GRP_DES")                 'descricao
uLinGrpAbv$   = VarCom$("GRP_ABV")                 'abreviatura
uLinGrpAsp$   = VarCom$("GRP_ASP")                 'aspecto

'executar
res = VBS_DpgFx("GRP")                             'executar funcao
end sub

'-----------------
' LINHA - INDICADOR
'-----------------

'**PERIODO**

Sub Per_LinInd 'linha - indicador
call PrpVar_Lin                                    'preparar variaveis para linha

call DocLinPos                                     'posicionar linha

'dados da linha
uLinIndDes$   = VarCom$("IND_DES")                 'descricao
uLinIndAbv$   = VarCom$("IND_ABV")                 'abreviatura
uLinIndUsa$   = VarCom$("IND_USA")                 'indicador

indDes$  = BscDocIndCon$(perUsa, "DES")
pcVlr   = BscDocIndCon(perUsa,  "PV")             'acumulado periodo corrente - valor realizado
pcObj   = BscDocIndCon(perUsa,  "PEC-POB")        'acumulado periodo corrente - objetivo

'executar
res = VBS_DpgFx("IND")                             'executar funcao
end sub

'**ACUMULADO**

Sub Acm_LinInd 'linha - indicador
call PrpVar_Lin                                    'preparar variaveis para linha

'dados da linha
uLinIndDes$   = VarCom$("IND_DES")                 'descricao
uLinIndAbv$   = VarCom$("IND_ABV")                 'abreviatura
uLinIndUsa$   = VarCom$("IND_USA")                 'indicador

indDes$  = BscDocIndCon$(perUsa, "DES")
pcVlr   = BscDocIndCon(perUsa,  "AV")              'acumulado periodo corrente - valor realizado
pcObj   = BscDocIndCon(perUsa,  "PEC-AOB")         'acumulado periodo corrente - objetivo

'executar
res = VBS_DpgFx("IND")                             'executar funcao
end sub

'-----------------
' LINHA - SUBTOTAL
'-----------------

'**PERIODO**

Sub Per_LinSbt 'linha - subtotal
call PrpVar_Lin                                    'preparar variaveis para linha

'dados da linha
uLinSbtDes$   = VarCom$("SBT_DES")                 'descricao
uLinSbtAbv$   = VarCom$("SBT_ABV")                 'abreviatura
uLinSbtAsp$   = VarCom$("SBT_ASP")                 'aspecto

'executar
res = VBS_DpgFx("SBT")                             'executar funcao
end sub

'**ACUMULADO**

Sub Acm_LinSbt 'linha - subtotal
call PrpVar_Lin                                    'preparar variaveis para linha

'dados da linha
uLinSbtDes$   = VarCom$("SBT_DES")                 'descricao
uLinSbtAbv$   = VarCom$("SBT_ABV")                 'abreviatura
uLinSbtAsp$   = VarCom$("SBT_ASP")                 'aspecto

'executar
res = VBS_DpgFx("SBT")                             'executar funcao
end sub

'-----------------
' LINHA - TOTAL
'-----------------

'**PERIODO**

Sub Per_LinTot 'linha - total
call PrpVar_Lin                                    'preparar variaveis para linha

'dados da linha
uLinTotDes$   = VarCom$("TOT_DES")                 'descricao
uLinTotAbv$   = VarCom$("TOT_ABV")                 'abreviatura
uLinTotAsp$   = VarCom$("TOT_ASP")                 'aspecto

'executar
res = VBS_DpgFx("TOT")                             'executar funcao
end sub

'**ACUMULADO**

Sub Acm_LinTot 'linha - total
call PrpVar_Lin                                    'preparar variaveis para linha

'dados da linha
uLinTotDes$   = VarCom$("TOT_DES")                 'descricao
uLinTotAbv$   = VarCom$("TOT_ABV")                 'abreviatura
uLinTotAsp$   = VarCom$("TOT_ASP")                 'aspecto

'executar
res = VBS_DpgFx("TOT")                             'executar funcao
end sub


'==============================================================================
'- [RES] - Resumo -------------------------------------------------------------
'==============================================================================

'*******************
' PAGINA
'*******************

Sub Res_Pag 'linha - pagina
res = VBS_PagRes_ZonPrp("")                        'preparar

pagTip$  = "RES"                                   'pagina tipo resumo
resDimLi =  5.0                                    'altura da linha de resumo
resDimLi = 10.0                                    'altura da linha de resumo

minPon = VarCom("ENT_OBJ.ACM")                     'objectivo (acumulado)

'listar
call DocLinPos                                     'posicionar linha

'identificacao
ide$ = uLinPagDes$                                 'identificacao

dyIde = VBS_IdeZon("P:15", ide$)                   'identificar pagina
dyIde = dyIde+10

tmp = CntLin("INC", dyIde)                         'contar linhas (MM)
linDb = dyIde                                      'linhas - dimensao base

acmPon = 0                                         'acumulador de pontos
end sub

'*******************
' GRUPO
'*******************

Sub Res_Grp 'linha - grupo
indCnt = 0                                         'contador de indicadores

'listar
anoUsa  = vAno                                     'ano a usar
perUsa  = vMes                                     'usar periodo corrente
res = BscDocPrpPer(anoUsa)                         'preparar periodo
res = BscDocIndPrp(uGrpIndUsa$)                    'preparar indicador

call DocLinPos                                     'posicionar linha
resY1 = linPos                                     'inicio da zona de resumo

indCnt = 0                                         'contador de indicadores
dyCab = VBS_ZonLstCab("")                          'listar cabecalho

'listar
tmp = CntLin("INC", dyCab)                         'contar linhas (MM)
end sub

'*******************
' INDICADOR
'*******************

'=> INICIAR FUNÇÃO
Sub Res_Ind 'linha - indicador
indCnt = indCnt + 1                                'contar indicador

'=> DIMENSAO DA LINHA
dLin = 10                                          'dimensao da linha
'tmp = CntLin("MIN", dLin)                          'minimo de linhas (MM)

 
'=> DADOS DA LINHA
uLinIndDes$   = VarCom$("IND_DES")                 'descricao
uLinIndAbv$   = VarCom$("IND_ABV")                 'abreviatura
uLinIndUsa$   = VarCom$("IND_USA")                 'indicador

res = BscDocPrpEnt("", "")                         'preparar entidade

'=> DADOS
anoUsa  = vAno                                     'ano a usar
perUsa  = vMes                                     'usar periodo corrente
res = BscDocPrpPer(anoUsa)                         'preparar periodo
res = BscDocIndPrp(uLinIndUsa$)                    'preparar indicador

'=> VALORES
call Com_Var_IndPer                                'preparar valores para inicador/periodo
call Com_Var_DsvPer                                'preparar valores para desvio do periodo
call DocCom_PrpVarIndGrp                           'preparar valores para grupo de indicadores
call DocCom_PrpVarIndGrpPer                        'preparar valores para grupo de indicadores/periodo

'listar
dLin = resDimLi                                    'dimensao da linha
'call DocLinPos                                     'posicionar linha


'=> CALCULOS

if DocOpc$("DOCIDE") = "Análise de Evolução (Acumulado)" then                               'periodo?
   pcVlr   = BscDocIndCon(perUsa,  "AV")          'acumulado periodo corrente - valor realizado
   aaVlr   = BscDocIndCon(perUsa,  "PAA-AV")      'acumulado ano anterior - valor realizado
else
   pcVlr   = BscDocIndCon(perUsa,  "PV")          'mensal periodo corrente - valor realizado
   aaVlr   = BscDocIndCon(perUsa,  "PAA-PV")      'mensal ano anterior - valor realizado
end if


indDes$  = BscDocIndCon$(perUsa, "DES")            'indicadores - descricao
apcVlr   = BscDocIndCon(perUsa,  "AV")             'acumulado periodo corrente - valor realizado
apcObj   = BscDocIndCon(perUsa,  "PEC-AOB")        'acumulado periodo corrente - objetivo

aaaVlr   = BscDocIndCon(perUsa,  "PAA-AV")         'acumulado ano anterior - valor realizado
aaaEvo   = BscDocIndCon(perUsa,  "EVO-PAA")        'evolucao

'* cumprimento objetivos
cmpObjV = pcVlr - pcObj                          'desvio em valor
cmpObjP = pcVlr/pcObj*100                    'desvio em %
cmpObjE = BscDsv("E", vValPec, vValPaa)            'evolucao

'* desvio ano anterior
aaDsvV = pcVlr - aaVlr                             'desvio em valor
aaDsvP = aaDsvV / aaVlr * 100                      'desvio em %
aaDsvE = BscDsv("E", pcVlr, aaVlr)                 'evolucao

'=> FORMATAÇÃO VALORES
vc02$ = VBS_FrmNum$("T" , 10.2, pcVlr)             'valor para coluna 2
vc03$ = VBS_FrmNum$("T" , 10.2, aaVlr)             'valor para coluna 3
vc04$ = VBS_FrmNum$("T" , 10.2, aaDsvV)            'valor para coluna 4
vc05$ = VBS_FrmNum$("%" , 10.2, aaDsvP)            'valor para coluna 5

dsvPaa$ = VBS_FrmDsv$(asp$, paaDvv, paaDvp)        'desvio a usar para ano anterior
dsvPma$ = VBS_FrmDsv$(asp$, pmaDvv, pmaDvp)        'desvio a usar para mes anterior

'=> COLUNAS
res = VBS_RegVco(01, indDes$)                      'registar valor da coluna 1
res = VBS_RegVco(02, vc02$)                        'registar valor da coluna 2
res = VBS_RegVco(03, vc03$)                        'registar valor da coluna 3
res = VBS_RegVco(04, vc04$)                        'registar valor da coluna 4
res = VBS_RegVco(05, vc05$)                        'registar valor da coluna 4
res = VBS_RegVco(06, aaDsvE)                      'registar valor da coluna 6


res = VBS_RegOpc("LIN.DIM.Y", dLin)         'registar valor para opcao

call DocLinPos                                     'posicionar linha
res = VBS_ZonLstLin(indCnt)                        'listar linha

tmp = CntLin("INC", dLin)                          'contar linhas (MM)
call DocLinPos                                     'posicionar linha

'=> TERMINAR
end sub


'*******************
' SUBTOTAL
'*******************

Sub Res_Sbt 'linha - subtotal
'nada a executar
end sub


'*******************
' TOTAL
'*******************

Sub Res_Tot 'linha - total
'listar
call DocLinPos                                     'posicionar linha

dyVto = VBS_PagRes_LstVto(acmPon)                  'listar total
tmp = CntLin("INC", dyVto)                         'contar linhas (MM)
call DocLinPos                                     'posicionar linha

call ResSup_Env                                    'listar envolvente
'call ResSup_Pon                                    'listar pontuacao

'terminar
call Com_PagFim                                    'forcar fim de pagina
pagTip$ = "EVO"                                    'pagina tipo - evolucao
end sub


'------------------------------------------------------------------------------
'- SUP - Funcoes de suporte ---------------------------------------------------
'------------------------------------------------------------------------------
Sub ResSup_Env 'listar envolvente
call DocLinPba                                     'posicionar linha base

dy  = linDim - linDb                               'altura
py1 = yCab1 + linDb                                'posicao Y1
py2 = py1 + dy + 0.5                               'posicao Y2

py2 = py2 + py2Ajt                                 'ajustar posicao Y2

px1 = pagX1                                        'posicao X1
px2 = pagX2                                        'posicao X2

'msgbox "",Doc_CntLin,linDim

res = VBS_ZonEnv("C", px1, py1, px2, py2)          'envolvente de zona
py2Ajt = 0                                         'anular ajuste da posicao Y2
end sub


Sub ResSup_Pon 'listar pontuacao
tmp = CntLin("INC", 2)                             'separar
call DocLinPos                                     'posicionar linha
res = VBS_LstResPon("N", acmPon, minPon)           'zona de resumo de pontos
end sub


'==============================================================================
'- [EVO] - Evolucao -----------------------------------------------------------
'==============================================================================
Sub Evo_Pag 'linha - pagina
res = VBS_PagEvo_ZonPrp("")                        'preparar

cntIndPag = 0                                      'contador de indicadores na pagina

vtx$ = TxIde$(uLinOpc$, "IND.NUM")                 'numero de indicadores por pagina
'msgbox "", "OPC", uLinOpc$

evoNiPag = val(vtx$)                               'conversao em numero

if evoNiPag = 0 then                               'sem numero de indicares definido ?
   evoNiPag = 3                                    'usar 3 indicadores por pagina
end if

if evoNiPag = 4 then                               '4 indicadores por pagina ?
   dLin  =    5.0                                  'dimensao da linha
   dVal  =    4.9                                  'altura de valor
   dLinInd = 59.0                                  'dimensao da linha de indicador
else
   dLin  =   10.0                                  'dimensao da linha
   dVal  =    5.0                                  'altura de valor
   dLinInd = 79.0                                  'dimensao da linha de indicador
end if

'preparar
'tmp = CntLin("MIN", dLin)                          'minimo de linhas (MM)
'- (52) ------------------------------------------>'Comentario

'listar
'tmp = CntLin("MIN", 10)                            'minimo de linhas (MM)
call DocLinPos                                     'posicionar linha

'identificacao
ide$ = uLinPagDes$                                 'identificacao
dyIde = VBS_IdeZon("P:15", ide$)                   'identificar pagina
tmp = CntLin("INC", dyIde)                         'contar linhas (MM)
end sub


Sub Evo_Grp 'linha - grupo
'listar
call DocLinPos                                     'posicionar linha
end sub


Sub Evo_Ind 'linha - indicador
dLin = dLinInd                                     'dimensao da linha
tmp = CntLin("MIN", dLin)                          'minimo de linhas (MM)

'dados da linha
res   = BscDocPrpEnt("", "")                       'preparar entidade

'listar
call DocLinPos                                     'posicionar linha

cntIndPag = cntIndPag + 1                          'contador de indicadores na pagina
dy = dLin - 3                                      'dimensao Y da envolvente
'cor = 11 + cntIndPag                               'cor da envolvente
cor =  1 + cntIndPag                               'cor da envolvente
spx =  1 + cntIndPag                               'separacao X

'if cntIndPag < 3 then
'res = VBS_DBG_EnvDY(cor, dy, spx, 1)               'envolvente por dimensao Y
'end if

call Evo_Ind_Prp                                   'preparar indicador a listar
'res = VBS_PagEvo_Lst("")                           'listar
res = VBS_ZonLst("")                               'listar

'terminar
tmp = CntLin("INC", dLin)                          'contar linhas (MM)
end sub


Sub Evo_Sbt 'linha - subtotal
'nada a executar
end sub


Sub Evo_Tot 'linha - total
call Com_PagFim                                    'forcar fim de pagina
end sub

'------------
'INDICADOR
'------------

Sub Evo_Ind_Prp 'preparar indicador a listar
'dados
anoUsa  = vAno                                     'ano a usar
perUsa  = vMes                                     'usar periodo corrente

'msgbox "",anoUsa,perUsa

res = BscDocPrpPer(anoUsa)                         'preparar periodo
res = BscDocIndPrp(uLinIndUsa$)                    'preparar indicador
call Com_Var_IndPer                                'preparar valores para inicador/periodo

res      = BscClaPonPrp(vCla$, pmaPon)             'preparar classificacao para pontos
pmaCla$  = BscClaPonCon$("RC")                     'resumo de classificcao

res      = BscClaPonPrp(vCla$, paaPon)             'preparar classificacao para pontos
paaCla$  = BscClaPonCon$("RC")                     'resumo de classificcao

'msgbox "",anoUsa,uLinIndUsa$

res = VBS_RegIdc(2, pmaIde$)                       'registar identificador de coluna
res = VBS_RegIdc(3, paaIde$)                       'registar identificador de coluna
res = VBS_RegIdc(4, pecIde$)                       'registar identificador de coluna

res = VBS_RegOpc("IND.IDE", uLinIndUsa$)           'registar identificacao
res = VBS_RegOpc("IND.DES", pecDes$)               'registar descricao
res = VBS_RegOpc("IND.OBS", pecObs$)               'registar observacoes


if DocOpc$("DOCIDE") = "Análise de Evolução (Acumulado)" then                               'periodo?
   0104 = BscDocIndCon(perUsa,  "AV")          'acumulado periodo corrente - valor realizado
else
   pcVlr   = BscDocIndCon(perUsa,  "PV")          'mensal periodo corrente - valor realizado
   aaVlr   = BscDocIndCon(perUsa,  "PAA-PV")      'mensal ano anterior - valor realizado
end if


'linha 1
'res = VBS_RegVpo(1, 2, pmaVluX$)                   'guardar valor
'res = VBS_RegVpo(1, 3, paaVluX$)                   'guardar valor
'res = VBS_RegVpo(1, 4, pecVluX$)                   'guardar valor
res = VBS_RegVpo(1, 2, 0102)                       'guardar valor
res = VBS_RegVpo(1, 3, 0103)                       'guardar valor
'res = VBS_RegVpo(1, 4, 0104)                       'guardar valor

'linha 2
res = VBS_RegVpo(2, 2, pmaDvvX$)                   'guardar valor
res = VBS_RegVpo(2, 3, paaDvvX$)                   'guardar valor

'linha 3
res = VBS_RegVpo(3, 2, pmaDvpX$)                   'guardar valor
res = VBS_RegVpo(3, 3, paaDvpX$)                   'guardar valor

'linha 4
res = VBS_RegVpo(4, 2, pmaEvo)                     'guardar valor
res = VBS_RegVpo(4, 3, paaEvo)                     'guardar valor

'linha 5
res = VBS_RegVpo(5, 2, pmaPon)                     'guardar valor
res = VBS_RegVpo(5, 3, paaPon)                     'guardar valor
res = VBS_RegVpo(5, 4, pecPon)                     'guardar valor

'linha 6
res = VBS_RegVpo(6, 2, pmaCla$)                    'guardar valor
res = VBS_RegVpo(6, 3, paaCla$)                    'guardar valor
res = VBS_RegVpo(6, 4, pecCla$)                    'guardar valor
end sub


'guardar

Sub x_Evo_Ind_Prp 'preparar indicador a listar
'dados
anoUsa  = vAno                                     'ano a usar
perUsa  = vMes                                     'usar periodo corrente

'msgbox "",anoUsa,perUsa

res = BscDocPrpPer(anoUsa)                         'preparar periodo
res = BscDocIndPrp(uLinIndUsa$)                    'preparar indicador
call Com_Var_IndPer                                'preparar valores para inicador/periodo

res      = BscClaPonPrp(vCla$, pmaPon)             'preparar classificacao para pontos
pmaCla$  = BscClaPonCon$("RC")                     'resumo de classificcao

res      = BscClaPonPrp(vCla$, paaPon)             'preparar classificacao para pontos
paaCla$  = BscClaPonCon$("RC")                     'resumo de classificcao

'msgbox "",anoUsa,uLinIndUsa$

res = VBS_RegIdc(2, pmaIde$)                       'registar identificador de coluna
res = VBS_RegIdc(3, paaIde$)                       'registar identificador de coluna
res = VBS_RegIdc(4, pecIde$)                       'registar identificador de coluna

res = VBS_RegOpc("IND.IDE", uLinIndUsa$)           'registar identificacao
res = VBS_RegOpc("IND.DES", pecDes$)               'registar descricao
res = VBS_RegOpc("IND.OBS", pecObs$)               'registar observacoes

'linha 1
res = VBS_RegVpo(1, 2, pmaVluX$)                   'guardar valor
res = VBS_RegVpo(1, 3, paaVluX$)                   'guardar valor
res = VBS_RegVpo(1, 4, pecVluX$)                   'guardar valor

'linha 2
res = VBS_RegVpo(2, 2, pmaDvvX$)                   'guardar valor
res = VBS_RegVpo(2, 3, paaDvvX$)                   'guardar valor

'linha 3
res = VBS_RegVpo(3, 2, pmaDvpX$)                   'guardar valor
res = VBS_RegVpo(3, 3, paaDvpX$)                   'guardar valor

'linha 4
res = VBS_RegVpo(4, 2, pmaEvo)                     'guardar valor
res = VBS_RegVpo(4, 3, paaEvo)                     'guardar valor

'linha 5
res = VBS_RegVpo(5, 2, pmaPon)                     'guardar valor
res = VBS_RegVpo(5, 3, paaPon)                     'guardar valor
res = VBS_RegVpo(5, 4, pecPon)                     'guardar valor

'linha 6
res = VBS_RegVpo(6, 2, pmaCla$)                    'guardar valor
res = VBS_RegVpo(6, 3, paaCla$)                    'guardar valor
res = VBS_RegVpo(6, 4, pecCla$)                    'guardar valor
end sub



'==============================================================================
'- [PER] - Periodo ------------------------------------------------------------
'==============================================================================
Sub Per_Pag 'linha - pagina
res = VBS_PagInd_ZonPrp("")                        'preparar

vEntIde$ = VarCom$("ENT_DES")                      'descricao
vIndDes$= vEntIde$                                 'descricao

mesPon = VarCom$("ENT_OBJ.MES")                    'objectivo mensal
minPon = mesPon * 12                               'objectivo total
end sub


Sub Per_Grp 'linha - grupo
'nada a executar
end sub


Sub Per_Ind 'linha - indicador
'msgbox "","IND","Listar"

'dados
anoUsa  = vAno                                     'ano a usar
perUsa  = vMes                                     'usar periodo corrente
res = BscDocPrpPer(anoUsa)                         'preparar periodo
res = BscDocIndPrp(uLinIndUsa$)                    'preparar indicador

pecDes$  = BscDocIndCon$(perUsa, "DES")            'descricao
vIndDes$ = pecDes$

call DocLinPos                                     'posicionar linha
ide$ = vIndDes$
dyIde = VBS_IdeZon("P:15", ide$)                   'identificar zona
tmp = CntLin("INC", dyIde)                         'contar linhas (MM)

'listar
'tmp = CntLin("MIN", 10)                           'minimo de linhas (MM)
call DocLinPos                                     'posicionar linha

anoUsa  = vAno                                     'ano a usar
perUsa  = vMes                                     'usar periodo corrente
res = BscDocPrpPer(anoUsa)                         'preparar periodo

'tmp = CntLin("INC", dLin)                          'contar linhas (MM)
call DocLinPos                                     'posicionar linha
call PerInd_Prp                                    'preparar valores do indicador

'res = VBS_PagInd_Lst("")                           'listar
res = VBS_ZonLst("")                               'listar
tmp = CntLin("INC", res)                           'contar linhas (MM)

'pontos
res = VBS_AspVtx("N-10")                           'aspecto para texto
tmp = CntLin("INC", 2)                             'contar linhas (MM)
call DocLinPos                                     'posicionar linha

res = VBS_BscPon_Prp("V", 50)                      'preparar objectivos 
res = VBS_BscPon_PonAnoCur(anoUsa)                 'pontos do ano corrente
'msgbox "", "Pontos",res

res = VBS_BscPon_LstZon("", 0, "PAG.X2")           'listar zona
tmp = CntLin("INC", res)                           'contar linhas (MM)

'grafico
tmp = CntLin("INC", 5)                             'contar linhas (MM)
call DocLinPos                                     'posicionar linha

res = VBS_GraPrp("")                               'preparar
res = VBS_GraLst(anoUsa, "", "")                   'listar grafico
res = VBS_GraEnv("PAG.X2", 70)                     'listar grafico/envolvente
end sub


Sub Per_Sbt 'linha - subtotal
'msgbox "","SBT","Listar"

'nada a executar
end sub


Sub Per_Tot 'linha - total
'msgbox "","TOT","Listar"

'terminar
'call Com_PagFim                                    'forcar fim de pagina
end sub


'------------------------------------------------------------------------------
'- SUP - Funcoes de suporte ---------------------------------------------------
'------------------------------------------------------------------------------
Sub PerInd_Prp 'preparar valores do indicador
'dados da linha
uLinIndDes$   = VarCom$("IND_DES")                 'descricao
uLinIndAbv$   = VarCom$("IND_ABV")                 'abreviatura
uLinIndUsa$   = VarCom$("IND_USA")                 'indicador

res = BscDocPrpEnt("", "")                         'preparar entidade

'dados
anoUsa  = vAno                                     'ano a usar
res = BscDocPrpPer(anoUsa)                         'preparar periodo

for i = 1 to 12
nli     = i                                        'numero da linha
perUsa  = i                                        'usar periodo corrente
call Com_Var_IndPerExe                             'preparar valores para inicador/periodo

'guardar valores
vc03$ = VBS_FrmNum$("%T", 10.2, paaDvp)            'valor para coluna 3
vc06$ = VBS_FrmNum$("%T", 10.2, pmaDvp)            'valor para coluna 6

asp$  = "V|(%)"                                    'aspecto
vc03$ = VBS_FrmDsv$(asp$, paaDvv, paaDvp)          'desvio a usar
vc06$ = VBS_FrmDsv$(asp$, pmaDvv, pmaDvp)          'desvio a usar

res = VBS_RegVpo(i,  2, paaVlu)                    'registar valor para posicao
res = VBS_RegVpo(i,  3, vc03$)                     'registar valor para posicao
res = VBS_RegVpo(i,  4, paaEvo)                    'registar valor para posicao
res = VBS_RegVpo(i,  5, pmaVlu)                    'registar valor para posicao
res = VBS_RegVpo(i,  6, vc06$)                     'registar valor para posicao
res = VBS_RegVpo(i,  7, pmaEvo)                    'registar valor para posicao

res = VBS_RegVpo(i,  8, pecVlu)                    'registar valor para posicao
res = VBS_RegVpo(i,  9, ponCla$)                   'registar valor para posicao
res = VBS_RegVpo(i, 10, pecPon)                    'registar valor para posicao

'msgbox "",i,pecPon
next
end sub

##


'==============================================================================
#VBS - VB Script
'==============================================================================
'- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
'- (13) --->'Comentario
'- (25) --------------->'Comentario
'- (28) ------------------>'Comentario
'- (40) ------------------------------>'Comentario
'- (43) --------------------------------->'Comentario
'- (46) ------------------------------------>'Comentario
'- (49) --------------------------------------->'Comentario
'- (52) ------------------------------------------>'Comentario
'- (55) --------------------------------------------->'Comentario
'- (58) ------------------------------------------------>'Comentario
'- (61) --------------------------------------------------->'Comentario


'- variaveis globais ----------------------------------------------------------
'Dim obGra                                          'acesso a classe


'------------------------------------------------------------------------------
'#SUP - Funcoes de suporte
'------------------------------------------------------------------------------
Function BscPrpOpc(arg) 'preparar opcoes
'arg        - argumento (nao usado)

with DocAsp
'- (52) ------------------------------------------>'Comentario
res = .OpcReg("FxConInd", "BscDocIndCon")          'registar opcao
end with

'terminar
res = 1                                            'resultado
BscPrpOpc = res                                    'devolver resultado
end function


'==============================================================================
'= RES ========================================================================
'==============================================================================
Function PagRes_ZonPrp(arg) 'preparar
'arg        - argumento (nao usado)

on error resume next

Idc01 = "Indicadores"
Idc02 = "Valor|Ano Corrente"
Idc03 = "Valor"
Idc04 = "Dsv(€)"
Idc05 = "Dsv(%)"
Idc06 = "Evol."

Idc0306 = "Comparação com Ano Anterior"

res = ZonPrp("")                            'preparar zona

DimV = 30.0
DimD = 25.0
DimC = 15.0
DimE = 15.0

'with obRes
with obzon
vOri = .Ori_Prp("")                                'inicializar orientacao

'opcoes
'res = .Zon_RegOpc("XXX", "")                      'registar opcao

'colunas
'- (61) --------------------------------------------------->'Comentario
res = .Zon_RegNco(06)                                       'registar numero de colunas
res = .Zon_RegCoPrp("-")                                    'registar coluna - preparar


res = .Zon_RegCoSeg("3"  , DimE, Idc06, "IMG.EVO", 5.2  )   'registar coluna - por dimensao
res = .Zon_RegCoSeg("3"  , DimD, Idc05, ""       , ""   )   'registar coluna - por dimensao
res = .Zon_RegCoSeg("3"  , DimD, Idc04, ""       , ""   )   'registar coluna - por dimensao
res = .Zon_RegCoSeg("3"  , DimV, Idc03, ""       , ""   )   'registar coluna - por dimensao
res = .Zon_RegCoSeg("1:3", DimV, Idc02, ""       , ""   )   'registar coluna - por dimensao
res = .Zon_RegCoSeg("1:3",  0.0, Idc01, ""       , ""   )   'registar coluna - por dimensao

'zona de colunas
'- (52) ------------------------------------------>'Comentario

res = .Zon_RegZc("1:2", 3,  6, Idc0306)                     'registar zona de colunas

end with

'terminar
res = 1                                            'resultado
PagRes_ZonPrp = res                                'devolver resultado
end function


'------------------------------------------------------------------------------
'#LST - Funcoes para listar
'------------------------------------------------------------------------------
Function x_PagRes_LstVto(vto) 'valor total
'vto        - valor total

dyLin = 5                                         'dimensao da linha

'listar
ide1 = "Total"                                    'identificacao
ide2 = FrmNum("T" , 10.2, vto)                    'pontos

'with obRes
with obZon
asp = "B-10"
'- (52) ------------------------------------------>'Comentario
res = .Zon_RegOpc("LIN.DIM.Y", dyLin)              'registar opcao
res = .LstVco(asp, 5, ide1)                        'listar valor de coluna
res = .LstVco(asp, 6, ide2)                        'listar valor de coluna
end with
res = AspVtx("N-10")                               'aspecto para texto

'terminar
'- (52) ------------------------------------------>'Comentario
res = dyLin                                        'resultado
PagRes_LstVto = res                                'devolver resultado
end function


'==============================================================================
'= EVO ========================================================================
'==============================================================================
Function PagEvo_ZonPrp(arg) 'preparar
'arg        - argumento (nao usado)

dLin = 5.0

'with obEvo
'res = .Zon_Prp("")                                  'preparar zona

'opcoes
'res = .RegOpc("LIN.DIM.Y", dLin)                    'registar altura da linha
'end with

res = ZonPrp("EVO")                                 'preparar zona
with obzon
'vOri = .Ori_Prp("P")                               'inicializar orientacao
res = Zon_Prp("")                                  'preparar
end with

'terminar
res = 1                                            'resultado
PagEvo_ZonPrp = res                                'devolver resultado
end function


'------------------------------------------------------------------------------
'#LST - Funcoes para listar
'------------------------------------------------------------------------------
Function PagEvo_Lst(arg) 'listar
'arg        - argumento (nao usado)

msgbox "Listar EVO"

with obEvo
'- (52) ------------------------------------------>'Comentario
res = .LstZon("")                                  'listar
end with

'terminar
PagEvo_Lst = res                                   'devolver resultado
end function


'==============================================================================
'= IND ========================================================================
'==============================================================================
Function PagInd_ZonPrp(arg) 'preparar
'arg        - argumento (nao usado)

'with obInd
'res = .Zon_Prp("")                                  'preparar zona
'end with

res = ZonPrp("ANO")                                 'preparar zona
with obzon
'vOri = .Ori_Prp("P")                               'inicializar orientacao
res = Zon_Prp("")                                   'preparar
end with


'terminar
res = 1                                            'resultado
PagInd_ZonPrp = res                                'devolver resultado
end function


'------------------------------------------------------------------------------
'#LST - Funcoes para listar
'------------------------------------------------------------------------------
Function PagInd_Lst(arg) 'listar
'arg        - argumento (nao usado)

'msgbox "Listar IND"

with obInd
'- (52) ------------------------------------------>'Comentario
res = .LstZon("")                                  'listar
end with

'terminar
PagInd_Lst = res                                   'devolver resultado
end function


'==============================================================================
'= GRA ========================================================================
'==============================================================================
Function GraPrp(arg) 'preparar
'arg        - argumento (nao usado)

res = ZonPrp("GRA")                            'preparar zona
with obGra
res = Zon_Prp("")                              'preparar
end with

'terminar
res = 1                                        'resultado
GraPrp = res                                   'devolver resultado
end function


Function GraLst(ano, tit, rpe) 'listar grafico
'ano        - ano
'tit        - titulo
'rpe        - rodape

'msgbox "Listar EVO/GRA"

with obGra
.GRA_Ini                                           'inicializar
.GRA_PrpPer "ANO"                                  'preparar periodo

res = .OpcReg("GRA.TIT", tit)                      'registar titulo
res = .OpcReg("GRA.RPE", rpe)                      'registar rodape

res = .SerAnoAnt(ano)                              'serie - ano anterior
res = .SerAnoCur(ano)                              'serie - ano corrente

'- (52) ------------------------------------------>'Comentario
'res = .LstZon("BAR", 690, 270, "")                 'listar

res = .LstZon("LIN", 660, 270, "")                 'listar
'res = .LstZon("LIN", 660, 700, "")                 'listar

'res = .LstZon("BAR", 660, 270, "")                 'listar
'res = .LstZon("COL", 660, 270, "")                 'listar

'res = .LstZon("PIE", 660, 270, "")                 'listar
'res = .LstZon("ARE", 660, 270, "")                 'listar

'res = .LstZon("COL", 660, 270, "[STK=S][100%=N][3D=N]")                 'listar
end with

'terminar
GraLst = res                                   'devolver resultado
end function


Function GraEnv(dx, dy) 'listar grafico/envolvente
'dx         - envolvente - dimensao X
'dy         - envolvente - dimensao Y

'msgbox "Listar EVO/GRA - ENV"

with obGra
res = .LstEnv("", dx, dy)                   'listar envolvente
end with

'terminar
GraEnv = res                                'devolver resultado
end function

##


'==============================================================================
#INC - Inclusao de funcionalidades
'==============================================================================
Funcoes - BSC/Comum - VBS             =[SIG_LST_DIR.BSC],BscCom_Vbs.inc
Funcoes - BSC/comum - Aspecto         =[SIG_LST_DIR.BSC],BscCom_Asp.inc
##

