'Nome       : StaAbc.std
'Tipo       : LST
'Data       : 2007/02/08
'Versao     : 1.2a
'Descricao  : Estatistica ABC

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.2a  2006/10/02 --------------------------------------------------
'Listagem para EXCEL (adaptacao a novas funcoes)
'Listagens graficas

'- Versao : 1.2   2003/11/20 --------------------------------------------------
'Listagem para EXCEL

'- Versao : 1.1   2003/05/16 -------------------------------------------------
'Variaveis com os limites usados na listagem (conta, artigo, vendedor, periodo)

'- Versao : 1.0   2000/11/27 -------------------------------------------------
'Versao base


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
Tipo de dados              [TipDat]=ABC
##


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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=Abc
Nome                       [DocNom]=Abc,Estatística ABC
Vias                       [DocVia]=Original
Personalizacao             [DocPer]=

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

'funcoes de listagem
Listar cabecalho            [FxCAB]=Abc_Cab
Listar linhas               [FxLIN]=Abc_Lin
Listar fim                  [FxFIM]=Abc_Fim
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=Abc
Nome                       [DocNom]=AbcRed,Estatística ABC (red)
Vias                       [DocVia]=Original
Personalizacao             [DocPer]=

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

'funcoes de listagem
Listar cabecalho            [FxCAB]=Abc80_Cab
Listar linhas               [FxLIN]=Abc80_Lin
Listar fim                  [FxFIM]=Abc80_Fim
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=Abc
Nome                       [DocNom]=Abc_G,Estatística ABC (Grafica)
Vias                       [DocVia]=Original
Personalizacao             [DocPer]=

'formato
Saida/Impressora           [DocPrt]=PAG_W
Linhas por pagina          [DocLpg]=59
Colunas por linha          [DocCol]=132
Formato do papel           [DocPap]=59L
Ajustar pagina             [DocApg]=0
Especifico do documento    [DocEsp]=Esp01

'funcoes de listagem
Listar cabecalho            [FxCAB]=AbcG_Cab
Listar linhas               [FxLIN]=AbcG_Lin
Listar fim                  [FxFIM]=AbcG_Fim
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=Abc
Nome                       [DocNom]=Abc_XLS,Estatística ABC (XLS)

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

'funcoes de listagem
Base para documento         [FxDOC]=XlsAbc
Listar cabecalho            [FxCAB]=XlsAbc_Cab
Listar linhas               [FxLIN]=XlsAbc_Lin,0
Listar fim                  [FxFIM]=XlsAbc_Fim

Matriz auxiliar            [DocMat]=StaAbc.xls
##


'==============================================================================
#VAR - Variaveis
'==============================================================================
'MemTxt$(1)    - titulo
'MemTxt$(2)    - tipo de analise

'limites da listagem
'MemTxt$(5)    - contas
'MemTxt$(6)    - artigos
'MemTxt$(7)    - vendedores
'MemTxt$(8)    - mes
'MemTxt$(9)    - trimestre
'MemTxt$(10)   - semestre

'MemTxt$(11)   - codigo
'MemTxt$(12)   - descricao 
'MemTxt$(13)   - codigo formatado

'MemNum(01)    - Numero de registos
'MemNum(02)    - Valor total

'MemNum(11)    - Numero da linha
'MemNum(22)    - Numero da linha - Percentagem

'MemNum(21)    - Valor parcial
'MemNum(22)    - Valor parcial - Percentagem

'MemNum(31)    - Valor acumulado
'MemNum(32)    - Valor acumulado - Percentagem


'-----------------------------------------------------------------------------
Pag       = Doc_CntPag
DataExt   = FrmVal$(Sig_DtHoje,45,0)

LinCod    = MemTxt$(11)
LinIde    = MemTxt$(12)
LinCov    = MemTxt$(13)


'- parciais ------------------------------------------------------------------
'quantidades por mes
NLI       = FrmNum$( 6.0,MemNum(11))
NLP       = FrmNum$( 4.2,MemNum(12))+" %"

PV        = FrmNum$(14.1,MemNum(21))
PP        = FrmNum$( 4.3,MemNum(22))+" %"

TV        = FrmNum$(14.1,MemNum(31))
TP        = FrmNum$( 4.3,MemNum(32))+" %"

'listagem reduzida
LinIDr    = left$(MemTxt$(12),25)

NLr       = FrmNum$( 4.0,MemNum(11))
PNr       = FrmNum$( 3.1,MemNum(12))

PVr       = FrmNum$(11.0,MemNum(21))
TVr       = FrmNum$(11.0,MemNum(31))
TPr       = FrmNum$( 3.1,MemNum(32))
##


'==============================================================================
#INC - Variaveis comuns
'==============================================================================
Variaveis  comuns                 =[SIG_Dir.Div],LsComVar.std
##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)
Sub FxIni 'funcao de inicializacao
cnt=0                                  'limpar contador
end sub


Sub FxFim 'funcao de finalizacao
end sub


Sub Lst_AJT 'ajuste
end sub


'-----------------------------------------------------------------------------
' Estatistica ABC
'-----------------------------------------------------------------------------
Sub Abc_CabIni 'inicializar documento
end sub


Sub Abc_Cab 'cabecalho
FxDiv LstIde,16CPI,0
print TxTit$("TT=16CPI, LD, PT=66C, TL=16CPI","Estatistica ABC")
print "Data : " FrmVal$(Sig_DtHoje,45,0);
print tab(115) "Folha No : " Doc_CntPag
?====================================================================================================================================
?          Codigo                Nome                                   Parcial      %Par           Acumulado      %Acm        %Num
'<23456> - <234567890123456> <23456789012345678901234567890>     <23456789012345>  <234.56>    <23456789012345>  <234.56>    <234.5>#
?====================================================================================================================================
end sub


Sub Abc_Lin 'linha de valores
?@NLI      @LinCov           @LinIde                             @PV               @PP         @TV               @TP         @NLP   #

'<23456> - <234567890123456> <23456789012345678901234567890>     <23456789012345>  <234.56>    <23456789012345>  <234.56>    <234.5>#
End sub


Sub Abc_LinSep 'linha de separacao
print
end sub


SUB Abc_Fim 'fim de pagina
print string$(132,"=")                             'separador
FxDiv LstPer,SP                                    'fim de pagina
'Print PrtCmd("[SP]");                             'fim de pagina
end sub


'-----------------------------------------------------------------------------
' Estatistica ABC - Formato reduzido (80 colunas)
'-----------------------------------------------------------------------------
Sub Abc80_CabIni 'inicializar documento
end sub


Sub Abc80_Cab 'cabecalho
FxDiv LstIde,16CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI","Estatistica ABC")
print "Data : " FrmVal$(Sig_DtHoje,45,0);
print tab(65) "Folha No : " Doc_CntPag
?================================================================================
?          Codigo               Nome             Parcial   Acumulado  %Acm  %Num
?================================================================================
end sub


Sub Abc80_Lin 'linha de valores
'1234 <2345678901234> <23456789012345678901234><99,999,99><99,999,99> <99.> <99.>
?@NLr @LinCov         @LinIDr                  @PVr       @TVr        @TPr  @PNr#
End sub


Sub Abc80_LinSep 'linha de separacao
print
end sub


Sub Abc80_Fim 'fim de pagina
print string$(80,"=")                              'separador
FxDiv LstPer,SP                                    'fim de pagina
'Print PrtCmd("[SP]");                             'fim de pagina
end sub



'================================================================================
'ESTATISTICA ABC - LISTAGEM GRAFICA
'================================================================================
SUB FxIni                                                'funcao de inicializacao
Call SigLstIni
End sub


Sub AbcG_CabIni 'inicializar documento
end sub


Sub AbcG_Cab 'cabecalho
Cmax  =190
FimDoc=272

Call SigLstCab 

titulo1$="Estatística ABC"                         'titulo da listagem
PrWIN FON  , 13,   4                        	   'activar fonte

PrWIN FON, "BOLD+"
PrWIN TX_N, 75,0,titulo1$                          'escrever titulo 
PrWIN FON, "BOLD-"

PrWIN AJT_B,  Margem, 26                           'posicao base
PrWIN COR_T,CorTraco                               'cor de linhas
PrWIN GR_LI, 0, 0, 190, 0               	   'linha
PrWIN GR_LI, 0, 7, 190, 7                          'linha

TCol0=   0
TCol1=  15
TCol2=  50
TCol3=  95
TCol4= 116
TCol5= 135
TCol6= 158
TCol7= 177
TCol8= 190
Cmax=TCol8

PrWIN COR_T,  CorTitLst                           'cor de titulo
PrWIN FON  , 8,   1                               'activar fonte

PrWIN FON, "BOLD+"
PrWIN TX_N,  TCol1,1.5,"Código"
PrWIN TX_N,  TCol2,1.5,"Nome"
PrWIN TX_N,  TCol3,1.5,"Parcial"
PrWIN TX_NP, TCol4,1.5,"N","% Par"
PrWIN TX_N,  TCol5,1.5,"Acumulado"
PrWIN TX_NP, TCol6,1.5,"N","% Acm"
PrWIN TX_NP, TCol7,1.5,"N","% Num"
PrWIN FON, "BOLD-"
end sub


Sub AbcG_Lin 'linha de valores
LCol0=   1
LCol1=  12
LCol2=  36
LCol3=  82
LCol4= 112
LCol5= 127
LCol6= 155
LCol7= 175

InicioLinhas=28
PrWin COR_T, CorLin
PrWIN AJT_B,  Margem, InicioLinhas+Doc_CntLin*4          	 'posicao base
PrWIN TX_NP,  LCol0  ,1.5,"N",@NLI
PrWIN TX_NP,  LCol1  ,1.5,"N",@LinCov
PrWIN TX_NP,  LCol2  ,1.5,"N",@LinIde
PrWIN TX_NP,  LCol3  ,1.5,"N",@PV
PrWIN TX_NP,  LCol4  ,1.5,"N",@PP
PrWIN TX_NP,  LCol5  ,1.5,"N",@TV
PrWIN TX_NP,  LCol6  ,1.5,"N",@TP
PrWIN TX_NP,  LCol7  ,1.5,"N",@NLP
End sub


Sub AbcG_LinSep 'linha de separacao
'print
end sub


SUB AbcG_Fim 'fim de pagina
PrWIN COR_T,CorTraco                            'cor de linhas
PrWIN AJT_B,Margem,FimDoc                       'posicao base
PrWIN GR_LI,     0,  0, Cmax, 0            	'linha

Call SigLstRod
PrWin FP
end sub


'=============================================================================
' XLS - Funcoes comuns
'=============================================================================
Sub Xls_DocIni 'inicializar documento
dfi$ = FicEmp$("EMP","Ext","dExcel",cmo$)          'directorio de documentos EXCEL
nfi$ = "RND:StaAbc.xls"                            'nome do ficheiro
cmo$ = SigCmoCur$("MIX")                           'modulo corrente
ficDoc$ = FicTmp$(dfi$, nfi$)                      'ficheiro para documento
res = DirCri("D", dfi$)                            'criar directorio para documento

xlsMatNom$ = DocOpc$("DocMat")                     'nome do ficheiro matriz
xlsMat$    = DocOpc$("DocMat+SBT")                 'endereco do ficheiro matriz

res = FicCop(xlsMat$, ficDoc$)                     'criar ficheiro (copia de matriz)

res = XlsPrp(0)                                    'preparar EXCEL
res = XlsDocLer(ficDoc$)                           'ler ficheiro

'res = XlsDocCri("")                                'criar documento
end sub


Sub Xls_LinInc 'incrementar linha
xlsLsa = xlsLin                                    'linha de saida
res = XlsLinIns(xlsLin, 1)                         'juntar linha

'seguinte
xlsLin = xlsLin + 1                                'contar linha

'msgbox "", "LIN INC "+ xlsLin + " " + xlsLsa
end sub


Sub Xls_DocFim 'terminar documento
res = XlsLinEli(xlsLin, 1)                         'eliminar linha - ultima
res = XlsLinEli(xlsLba, 1)                         'eliminar linha - primeira

'res = XlsWks(1)                                    'activar worksheet

res = XlsDocDir$("A", dfi$)                        'activar directorio
res = XlsDocGrv(ficDoc$)                           'gravar ficheiro

'res = XlsPrt(1)                                    'listar worksheet
'res = XlsVer(0)                                    'mostrar EXCEL - normal
res = XlsVer(1)                                    'mostrar EXCEL - maximizado
res = XlsLib(0)                                    'libertar EXCEL
end sub


'-----------------------------------------------------------------------------
' Listagem ABC para EXCEL
'-----------------------------------------------------------------------------
Sub XlsAbc_DocIni 'inicializar documento
call Xls_DocIni                                    'inicializar documento
call XlsAbc_Prep                                   'preparar
end sub


Sub XlsAbc_DocFim 'terminar documento
linIni = linBav                                    'linha inicial
linFim = linCnt                                    'linha final

'mostrar
call Xls_DocFim                                    'terminar/mostrar documento
end sub


Sub XlsAbc_Prep 'preparar para listar
res = XlsWks("Valores")                            'activar worksheet

empNum$ = Emp_Inf_Cod$                             'numero da empresa
empNom$ = Emp_Inf_Nome$                            'nome da empresa
lstTip$ = MemTxt$(2)                               'tipo da listagem
lstDt$  = FrmDt$("EXT", Sig_DtHoje)                'data para listagem

res = XlsIdeLst("Emp_Num", empNum$)                'numero da empresa
res = XlsIdeLst("Emp_Nome", empNom$)               'nome da empresa

res = XlsIdeLst("Lst_Tipo", lstTip$)               'tipo da listagem
res = XlsIdeLst("Lst_Data", lstDt$)                'data

res = XlsIdePsq("PO_BAS")                          'pesquisar posicao base
linBav = XlsIdePsqRes("L")                         'linha da posicao base

xlsLba = linBav                                    'linha base
xlsLin = linBav + 1                                'contador de linhas usadas

'definicao das colunas
coLin = 2                                          'numero da linha
coCod = 3                                          'codigo
coNom = 4                                          'nome
coVp1 = 5                                          'parcial - valor
coPp1 = 6                                          'parcial - percentagem
coVa1 = 7                                          'acumulado - valor
coPa1 = 8                                          'acumulado - percentagem
coNp1 = 9                                          '% num
end sub


Sub XlsAbc_Lin 'linha de valores
'res = XlsLinIns(xlsLin, 1)                        'juntar linha
call XlsAbc_IncLin                                 'incrementar linha

'valores a listar
res = XlsLst(xlsLin, coLin, cod$)                  'codigo
cod$ = MemTxt$(11)                                 'codigo
ide$ = MemTxt$(12)                                 'identificacao
cov$ = MemTxt$(13)                                 'codigo formatado

nliNum = MemNum(11)                                'numero da linha
nliPer = MemNum(12) '/ 100                          'numero da linha - percentagem

parVal = MemNum(21)                                'parcial - valor
parPer = MemNum(22) '/ 100                          'parcial - percentagem

acmVal = MemNum(31)                                'acumulado - valor
acmPer = MemNum(32) '/ 100                          'acumulado - percentagem

'listar
'res = XlsLst(xlsLin, 2, nliNum)                     'numero da linha
'res = XlsLst(xlsLin, 3, cov$)                       'codigo
'res = XlsLst(xlsLin, 4, ide$)                       'identificacao
'res = XlsLst(xlsLin, 5, parVal)                     'parcial - valor
'res = XlsLst(xlsLin, 6, parPer)                     'parcial - percentagem
'res = XlsLst(xlsLin, 7, acmVal)                     'acumulado - valor
'res = XlsLst(xlsLin, 8, acmPer)                     'acumulado - percentagem
'res = XlsLst(xlsLin, 9, nliPer)                     'numero da linha - percentagem

res = XlsLst(liUsa, coLin, nliNum)                  'numero da linha
res = XlsLst(liUsa, coCod, cov$)                    'codigo
res = XlsLst(liUsa, coNom, ide$)                    'identificacao
res = XlsLst(liUsa, coVp1, parVal)                  'parcial - valor
res = XlsLst(liUsa, coPp1, parPer)                  'parcial - percentagem
res = XlsLst(liUsa, coVa1, acmVal)                  'acumulado - valor
res = XlsLst(liUsa, coPa1, acmPer)                  'acumulado - percentagem
res = XlsLst(liUsa, coNp1, nliPer)                  'numero da linha - percentagem

'seguinte
'call XlsAbc_IncLin                                 'incrementar linha
'xlsLin = xlsLin + 1                                'contar linha
End sub


Sub XlsAbc_IncLin 'incrementar linha	
call Xls_LinInc                                    'incrementar linha
liUsa =  xlsLsa                                    'linha a usar
end sub


Sub XlsAbc_Fim 'terminar
'res = XlsWksAct("A", "Grafico")                    'activar worksheet
res = XlsWksAct("A", 1)                            'activar worksheet
end sub
##


'==============================================================================
#INC - Funcoes comuns
'==============================================================================
Funcoes  comuns                 =[SIG_Dir.Div],LsComPgm.std
##


