'Nome       : StcAcp.sql
'Tipo       : LST
'Data       : 2016/05/22
'Versao     : 1.0
'Descricao  : STC - Acumulados por periodo

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


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
'Tipo de armazens                    [TARZ]=?
'Numero de armazens                  [NARZ]=?
##


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


'------------------------------------------------------------------------------
'- generico -------------------------------------------------------------------
'------------------------------------------------------------------------------
Nome do artigo [Cmd]=ArtNom=+
   +SELECT Nome1$ as [NOME$] +
   +FROM {TB_StcMst} +
   +WHERE Art$ = '{ART.COD}'


Nome do armazem [Cmd]=ArzNom=+
   +SELECT IdeNor$ as [NOM$] +
   +FROM StcArzIde +
   +WHERE Arz = {ARZ.COD}


Opcao de ano [Cmd]=OpcAno=+
   +SELECT {DTH_Ano} AS Ano


Opcao de mes [Cmd]=OpcMes=+
   +SELECT {DTH_Mes} AS Mes


'------------------------------------------------------------------------------
'- Acumulados por artigo ------------------------------------------------------
'------------------------------------------------------------------------------
Gerar registos      [Cmd]=ArtAcm=+
   +SELECT ART.Art$ AS [Art$], Art.Nome1$ AS [Nom$], +
   +ACM.RegNum{DTH_Mes} AS rgIni, ACM.RegUlt{DTH_Mes} AS rgFim, +
   +ACM.EntQ{DTH_Mes}   AS EntQ,  ACM.EntV{DTH_Mes}   AS EntV, +
   +ACM.SaiQ{DTH_Mes}   AS SaiQ,  ACM.SaiV{DTH_Mes}   AS SaiV, +
   +ACM.CmpQ{DTH_Mes}   AS CmpQ,  ACM.CmpV{DTH_Mes}   AS CmpV, +
   +ACM.VndQ{DTH_Mes}   AS VndQ,  ACM.VndV{DTH_Mes}   AS VndV,   ACM.VndC{DTH_Mes}   AS VndC,+
   +ACM.Upc{DTH_Mes}    AS Upc,   ACM.Pmc{DTH_Mes}    AS Pmc, +
   +ACM.Adi{DTH_Mes}$   AS txAdi, +
   +1 AS UNI +
   +FROM {TB_StcMst} AS ART +
   +LEFT JOIN StcAcp AS ACM ON ART.Art$ = ACM.Art$ +
   +WHERE ART.RecVal <> 255 AND ART.RecSit <> 255 +
   +AND   LEFT(ART.Art$, 1) <> '#' +
   +AND   ART.Art$           > '#' +
   +AND   (ACM.Ano  = {Ano} OR ACM.Ano IS NULL) +
   +AND   (ACM.Arz = 0      OR ACM.Arz IS NULL) +
   +AND   ART.Art$ BETWEEN '{Opc_Art.Ini}'   AND '{Opc_Art.Fim}' +
   +ORDER BY ART.Art$


'------------------------------------------------------------------------------
'- Acumulados por artigo/armazem ---------------------------------------------
'------------------------------------------------------------------------------
Gerar registos      [Cmd]=ArtArzAcm=+
   +SELECT ART.Art$ AS [Art$], Art.Nome1$ AS [Nom$], +
   +ACM.Arz  AS ARZ, +
   +ACM.RegNum{DTH_Mes} AS rgIni, ACM.RegUlt{DTH_Mes} AS rgFim, +
   +ACM.EntQ{DTH_Mes}   AS EntQ,  ACM.EntV{DTH_Mes}   AS EntV, +
   +ACM.SaiQ{DTH_Mes}   AS SaiQ,  ACM.SaiV{DTH_Mes}   AS SaiV, +
   +ACM.CmpQ{DTH_Mes}   AS CmpQ,  ACM.CmpV{DTH_Mes}   AS CmpV, +
   +ACM.VndQ{DTH_Mes}   AS VndQ,  ACM.VndV{DTH_Mes}   AS VndV,   ACM.VndC{DTH_Mes}   AS VndC,+
   +ACM.Upc{DTH_Mes}    AS Upc,   ACM.Pmc{DTH_Mes}    AS Pmc, +
   +ACM.Adi{DTH_Mes}$   AS txAdi, +
   +1 AS UNI +
   +FROM {TB_StcMst} AS ART +
   +LEFT JOIN StcAcp AS ACM ON ART.Art$ = ACM.Art$ +
   +WHERE ART.RecVal <> 255 AND ART.RecSit <> 255 +
   +AND   LEFT(ART.Art$, 1) <> '#' +
   +AND   ART.Art$           > '#' +
   +AND   ACM.Ano  = {Ano} +
   +AND   ART.Art$ BETWEEN '{Opc_Art.Ini}'   AND '{Opc_Art.Fim}' +
   +AND   ACM.Arz  BETWEEN  {Opc_ArzEnt.Ini} AND  {Opc_ArzEnt.Fim} +
   +ORDER BY ART.Art$, ACM.Arz


'------------------------------------------------------------------------------
'= TRA - Transferencias de armazem ============================================
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
'- Resumo/entrada -------------------------------------------------------------
'------------------------------------------------------------------------------
Gerar registos      [Cmd]=TraResEnt=+
   +SELECT SUM(QU) AS RQU, SUM(VT) AS RVT +
   +FROM StcMov{Ano} +
   +WHERE RecVal <> 255 +
   +AND   Cmv  IN(-17, 17) +
   +AND   Art$ = '{ART.COD}' +
   +AND   Dtl        BETWEEN  {DTL.Ini}    AND  {DTL.Fim} +
   +AND   ArzEnt     =        {ARZ.COD}


'------------------------------------------------------------------------------
'- Resumo/saida ---------------------------------------------------------------
'------------------------------------------------------------------------------
Gerar registos      [Cmd]=TraResSai=+
   +SELECT SUM(QU) AS RQU, SUM(VT) AS RVT +
   +FROM StcMov{Ano} +
   +WHERE RecVal <> 255 +
   +AND   Cmv  IN(-17, 17) +
   +AND   Art$ = '{ART.COD}' +
   +AND   Dtl        BETWEEN  {DTL.Ini}    AND  {DTL.Fim} +
   +AND   ArzSai     =        {ARZ.COD}

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=XlsAcpArt,Resumo por artigo (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]=XlsAcpArt
Listar cabecalho            [FxCAB]=XlsAcpArt_Cab
Listar linhas               [FxLIN]=XlsAcpArt_Lin
Listar fim                  [FxFIM]=XlsAcpArt_Fim

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

Matriz auxiliar            [DocMat]=StcAcp.xls
##


'==============================================================================
#DOC - Inventario de artigos
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=XlsAcpArz,Resumo por armazem (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]=XlsAcpArz
Listar cabecalho            [FxCAB]=XlsAcpArz_Cab
Listar linhas               [FxLIN]=XlsAcpArz_Lin
Listar fim                  [FxFIM]=XlsAcpArz_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ArtArzAcm
Subtotalizadores           [SQLSbt]=Art$

Matriz auxiliar            [DocMat]=StcAcp.xls
##


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

'- dados a listar -------------------------------------------------------------
vaMovDia = FrmDt$("",vuMovDia$)                    'data do dia
vaObs    = usaObs$                                 'observacaoes
vaSbtIde = ideSbt$                                 'identificacao de subtotal

'-----------------------------------------------------------------------------
'- Valores -------------------------------------------------------------------
'-----------------------------------------------------------------------------
vaIdeSbt  = ideSbt$                             'identificacao de subtotal

'artigo
vaArt     = vuArtCod$                           'codigo
vaArtCov  = vuArtCov$                           'codigo formatado
vaNom     = vuNom$                              'nome do artigo

'diversos
vaUpc     = FrmNum$(05.4,vuUpc)                 'UPC
vaPmc     = FrmNum$(05.4,vuPmc)                 'PMC
vaAdi     = vuAdi$                              'valores adicionais

'contagem
toNrg     = FrmNum$(09.0,TotCnt("vaArtCov",0))  'numero de registos - total
s1Nrg     = FrmNum$(09.0,TotCnt("vaArtCov",1))  'numero de registos - subtotal 1
s2Nrg     = FrmNum$(09.0,TotCnt("vaArtCov",2))  'numero de registos - subtotal 2

'registos
vaNumReg  = FrmNum$(09.0,vuNumReg)              'numero de registos
toNumReg  = FrmNum$(09.0,Total("vaNumReg",0))   'numero de registos - total
s1NumReg  = FrmNum$(09.0,Total("vaNumReg",1))   'numero de registos - subtotal 1
s2NumReg  = FrmNum$(09.0,Total("vaNumReg",2))   'numero de registos - subtotal 2

vaRegUlt  = FrmNum$(09.0,vuRegUlt)              'ultimo registo

'entradas
vaEntQ = FrmNum$(06.3,vuEntQ)                   'quantidade
toEntQ = FrmNum$(06.3,Total("vaEntQ",0))        'quantidade - total
s1EntQ = FrmNum$(06.3,Total("vaEntQ",1))        'quantidade - subtotal 1
s2EntQ = FrmNum$(06.3,Total("vaEntQ",2))        'quantidade - subtotal 2

vaEntV = FrmNum$(09.2,vuEntV)                   'valor
toEntV = FrmNum$(09.2,Total("vaEntV",0))        'valor - total
s1EntV = FrmNum$(09.2,Total("vaEntV",1))        'valor - subtotal 1
s2EntV = FrmNum$(09.2,Total("vaEntV",2))        'valor - subtotal 2

'saidas
vaSaiQ = FrmNum$(06.3,vuSaiQ)                   'quantidade
toSaiQ = FrmNum$(06.3,Total("vaSaiQ",0))        'quantidade - total
s1SaiQ = FrmNum$(06.3,Total("vaSaiQ",1))        'quantidade - subtotal 1
s2SaiQ = FrmNum$(06.3,Total("vaSaiQ",2))        'quantidade - subtotal 2

vaSaiV = FrmNum$(09.2,vuSaiV)                   'valor
toSaiV = FrmNum$(09.2,Total("vaSaiV",0))        'valor - total
s1SaiV = FrmNum$(09.2,Total("vaSaiV",1))        'valor - subtotal 1
s2SaiV = FrmNum$(09.2,Total("vaSaiV",2))        'valor - subtotal 2

'resumo
vaResQ = FrmNum$(06.3,vuResQ)                   'quantidade
toResQ = FrmNum$(06.3,Total("vaResQ",0))        'quantidade - total
s1ResQ = FrmNum$(06.3,Total("vaResQ",1))        'quantidade - subtotal 1
s2ResQ = FrmNum$(06.3,Total("vaResQ",2))        'quantidade - subtotal 2

vaResV = FrmNum$(09.2,vuResV)                   'valor
toResV = FrmNum$(09.2,Total("vaResV",0))        'valor - total
s1ResV = FrmNum$(09.2,Total("vaResV",1))        'valor - subtotal 1
s2ResV = FrmNum$(09.2,Total("vaResV",2))        'valor - subtotal 2

'compras
vaCmpQ = FrmNum$(06.3,vuCmpQ)                   'quantidade
toCmpQ = FrmNum$(06.3,Total("vaCmpQ",0))        'quantidade - total
s1CmpQ = FrmNum$(06.3,Total("vaCmpQ",1))        'quantidade - subtotal 1
s2CmpQ = FrmNum$(06.3,Total("vaCmpQ",2))        'quantidade - subtotal 2

vaCmpV = FrmNum$(09.2,vuCmpV)                   'valor
toCmpV = FrmNum$(09.2,Total("vaCmpV",0))        'valor - total
s1CmpV = FrmNum$(09.2,Total("vaCmpV",1))        'valor - subtotal 1
s2CmpV = FrmNum$(09.2,Total("vaCmpV",2))        'valor - subtotal 2

'vendas
vaVndQ = FrmNum$(06.3,vuVndQ)                   'quantidade
toVndQ = FrmNum$(06.3,Total("vaVndQ",0))        'quantidade - total
s1VndQ = FrmNum$(06.3,Total("vaVndQ",1))        'quantidade - subtotal 1
s2VndQ = FrmNum$(06.3,Total("vaVndQ",2))        'quantidade - subtotal 2

vaVndV = FrmNum$(09.2,vuCmpV)                   'valor
toVndV = FrmNum$(09.2,Total("vaVndV",0))        'valor - total
s1VndV = FrmNum$(09.2,Total("vaVndV",1))        'valor - subtotal 1
s2VndV = FrmNum$(09.2,Total("vaVndV",2))        'valor - subtotal 2

vaVndC = FrmNum$(09.2,vuCmpC)                   'custo
toVndC = FrmNum$(09.2,Total("vaVndC",0))        'custo - total
s1VndC = FrmNum$(09.2,Total("vaVndC",1))        'custo - subtotal 1
s2VndC = FrmNum$(09.2,Total("vaVndC",2))        'custo - subtotal 2

'transferencias de armazem - entradas
vaTraEntQ = FrmNum$(06.3,vuTraEntQ)             'quantidade
toTraEntQ = FrmNum$(06.3,Total("vaTraEntQ",0))  'quantidade - total
s1TraEntQ = FrmNum$(06.3,Total("vaTraEntQ",1))  'quantidade - subtotal 1
s2TraEntQ = FrmNum$(06.3,Total("vaTraEntQ",2))  'quantidade - subtotal 2

'transferencias de armazem - saidas
vaTraSaiQ = FrmNum$(06.3,vuTraSaiQ)             'quantidade
toTraSaiQ = FrmNum$(06.3,Total("vaTraSaiQ",0))  'quantidade - total
s1TraSaiQ = FrmNum$(06.3,Total("vaTraSaiQ",1))  'quantidade - subtotal 1
s2TraSaiQ = FrmNum$(06.3,Total("vaTraSaiQ",2))  'quantidade - subtotal 2

##


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


'==============================================================================
#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
'- (70) ------------------------------------------------------------>'Comentario


Sub FxIni 'funcao de inicializacao
'nada a excutar
end sub


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


Sub Lst_AJT 'ajuste
'nada a excutar
end sub


'==============================================================================
'- Comum ----------------------------------------------------------------------
'==============================================================================
Sub Com_Prp_Per 'preparar periodo
vAno  = SqlOpcCon("DTH_Ano")           'opcao de ano
vMes  = SqlOpcCon("DTH_Mes")           'opcao de mes

vDtIni = DataAmd(vAno, vMes, 0)        'data inicial
vDtFim = DataAmd(vAno, vMes,99)        'data final

'msgbox "", vAno, vMes
'msgbox "", vDtIni, vDtFim
end sub


'------------------------------------------------------------------------------
'- [REG] - Variaveis do registos ----------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Var_Con 'consultar variaveis
'- (52) ------------------------------------------>'Comentario
'campos
vuArt$       = SqlCmp$("Art$")                     'artigo - codigo
vuNom$       = SqlCmp$("Nom$")                     'artigo - nome

vuArz        = SqlCmp("Arz")                       'armazem

'registos
vuRegNum     = SqlCmp("rgNum")                     'numero de registos
vuRegUlt     = SqlCmp("rgUlt")                     'ultimo registo

'valores por periodo
vuEntQ       = SqlCmp("EntQ")                      'entradas - quantidade
vuEntV       = SqlCmp("EntV")                      'entradas - valor

vuSaiQ       = SqlCmp("SaiQ")                      'saidas - quantidade
vuSaiV       = SqlCmp("SaiV")                      'saidas - valor

vuCmpQ       = SqlCmp("CmpQ")                      'compras - quantidade
vuCmpV       = SqlCmp("CmpV")                      'compras - valor

vuVndQ       = SqlCmp("VndQ")                      'vendas - quantidade
vuVndV       = SqlCmp("VndV")                      'vendas - valor
vuVndC       = SqlCmp("VndC")                      'vendas - custo

vuUpc        = SqlCmp("Upc")                       'UPC
vuPmc        = SqlCmp("Pmc")                       'PMC
vuAdi$       = SqlCmp("txAdi")                     'valores adicionais

'valores calculados
vuArtCov$    = StcCodFrm$(vuArt$)                  'artigo - codigo formatado
vuArtIde$    = vuArtCov$ + " - " + vuNom$          'artigo - identificacao

vuResQ       = vuEntQ - vuSaiQ                     'resumo - quantidade
vuResV       = vuEntV - vuSaiV                     'resumo - valor

'grupos de variaveis
call Com_Prp_Per                                   'preparar periodo
call Com_Var_PrpArz                                'preparar variaveis - armazem
call Com_Tra_PrpEnt                                'preparar - TRA/entradas
call Com_Tra_PrpSai                                'preparar - TRA/saidas

'valores adicionais
usaObs$ = ""                                       'anular observacoes
end sub


Sub Com_Var_PrpArz 'preparar variaveis - armazem
res       = SqlOpcAct("ARZ.COD", vuArz)            'registar armazem
vuArzNom$ = SqlCalc$("ARZNOM")                     'preparar nome do armazem

vuArzCov$ = NumTxt$(vuArz, 4)                      'codigo formatado
'vuArzNom$ = SqlOpcCon$("IdeNor$")                  'nome
vuArzIde$ = vuArzCov$ + " - " + vuArzNom$          'identificacao

'msgbox "", vuArz,vuArzCov$
end sub


'------------------------------------------------------------------------------
'- [TRA] - Transferencias de armazem ------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Tra_PrpEnt 'preparar - entradas
res       = SqlOpcAct("ART.COD", vuArt$)           'registar artigo
res       = SqlOpcAct("ARZ.COD", vuArz)            'registar armazem
res       = SqlOpcAct("DTL.Ini", vDtIni)           'registar data inicial
res       = SqlOpcAct("DTL.Fim", vDtFim)           'registar data final

vuTraEntQ = SqlCalc("TraResEnt")                   'calcular quantidade
end sub


Sub Com_Tra_PrpSai 'preparar - saidas
res       = SqlOpcAct("ART.COD", vuArt$)           'registar artigo
res       = SqlOpcAct("ARZ.COD", vuArz)            'registar armazem
res       = SqlOpcAct("DTL.Ini", vDtIni)           'registar data inicial
res       = SqlOpcAct("DTL.Fim", vDtFim)           'registar data final

vuTraSaiQ = SqlCalc("TraResSai")                   'calcular quantidade

'msgbox "", vuArz,vuTraSaiQ
end sub


'------------------------------------------------------------------------------
'- [ACM] - Acumuladores -------------------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Acm_Exe 'acumular valores
res = AcmExe("vaArtCov", 1)                        'acumular - contagem

res = AcmExe("vaRegNum", vuRegNum)                 'acumular - numero de registos

res = AcmExe("vaEntQ", vuEntQ)                     'acumular - entradas - quantidade
res = AcmExe("vaEntV", vuEntV)                     'acumular - entradas - valor

res = AcmExe("vaSaiQ", vuSaiQ)                     'acumular - saidas   - quantidade
res = AcmExe("vaSaiV", vuSaiV)                     'acumular - saidas   - valor

res = AcmExe("vaCmpQ", vuCmpQ)                     'acumular - compras  - quantidade
res = AcmExe("vaCmpV", vuCmpV)                     'acumular - compras  - valor

res = AcmExe("vaVndQ", vuVndQ)                     'acumular - vendas   - quantidade
res = AcmExe("vaVndV", vuVndV)                     'acumular - vendas   - valor
res = AcmExe("vaVndC", vuVndC)                     'acumular - vendas   - custo

res = AcmExe("vaTraEntQ", vuTraEntQ)               'acumular - TRA/entradas - quantidade
res = AcmExe("vaTraSaiQ", vuTraSaiQ)               'acumular - TRA/saidas   - quantidade
end sub


Sub Com_Acm_Con 'consultar acumuladores
'- (52) ------------------------------------------>'Comentario
vNrg     = TotCnt("vaArtCov", acmNiv)              'numero de registos

acRegNum = Total("vaRegNum", acmNiv)               'numero de registos

acEntQ = Total("vaEntQ", acmNiv)                   'entradas - quantidade
acEntV = Total("vaEntV", acmNiv)                   'entradas - valor

acSaiQ = Total("vaSaiQ", acmNiv)                   'saidas - quantidade
acSaiV = Total("vaSaiV", acmNiv)                   'saidas   - valor

acCmpQ = Total("vaCmpQ", acmNiv)                   'compras  - quantidade
acCmpV = Total("vaCmpV", acmNiv)                   'compras  - valor

acVndQ = Total("vaVndQ", acmNiv)                   'vendas   - quantidade
acVndV = Total("vaVndV", acmNiv)                   'vendas   - valor
acVndC = Total("vaVndC", acmNiv)                   'vendas   - custo

acTraEntQ = Total("vaTraEntQ", acmNiv)             'TRA/entradas - quantidade
acTraSaiQ = Total("vaTraSaiQ", acmNiv)             'TRA/saidas   - quantidade
end sub


'##############################################################################
'- [XLS] - Listar para XLS ----------------------------------------------------
'##############################################################################
'==============================================================================
'- [XLS] - COM - Funcoes comuns -----------------------------------------------
'==============================================================================
Sub Com_Xls_DocIni 'inicializar documento
xlsOpcNfi$ = "RND:" + comXlsFic$                   'nome do ficheiro a gerar
xlsOpcWks$ = ""                                    'nome da woorksheet

call XlsComDoc_IniMat                              'inicializar documento por matriz

'preparacao especifica
res = XlsWks("Valores")                            'activar worksheet

'preparar cabecalho
empNum$ = Emp_Inf_Cod$                             'numero da empresa
empNom$ = Emp_Inf_Nome$                            'nome da empresa
lstTit$ = comCabTit$                               'titulo da listagem
lstTip$ = MemTxt$(2)                               'tipo da listagem
lstDt$  = FrmDt$("EXT", Sig_DtHoje)                'data para listagem
lstPer$ = VarCom$("LST_PER")                       'periodo
lstPer$ = ""                                       'periodo

res = XlsIdeLst("Emp_Num" , empNum$)               'numero da empresa
res = XlsIdeLst("Emp_Nome", empNom$)               'nome da empresa
res = XlsIdeLst("Lst_Tit" , lstTit$)               'titulo da listagem
res = XlsIdeLst("Lst_Tipo", lstTip$)               'tipo da listagem
res = XlsIdeLst("Lst_Data", lstDt$)                'data
res = XlsIdeLst("Lst_Per",  lstPer$)               'periodo

call XlsComLin_Ini                                 'iniciar linhas

'definicao das colunas
coArt     =  2                                     'artigo
coNom     =  3                                     'nome

coArzCod  =  4                                     'armazem - codigo
coArzNom  =  5                                     'armazem - nome

coCmpQ    =  6                                     'valor inicial
coVndQ    =  7                                     'entradas
coTraEntQ =  8                                     'saidas
coTraSaiQ =  9                                     'valor calculado

coEntQ    = 10                                     'valor final
coSaiQ    = 11                                     'desvio - periodo
coResQ    = 12                                     'desvio - acumulado

coObs     = 13                                     'observacoes

'diversos
coIds    = coNom                                   'posicao - identificar subtotal
coNrg    = coArzNom                                'posicao - numero de registos
end sub


Sub Com_Xls_DocFim 'terminar documento
'res = XlsWksAct("A", 1)                            'activar worksheet
call XlsComDoc_Fim                                 'terminar/mostrar documento
end sub


'------------------------------------------------------------------------------
'- Linhas ---------------------------------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Xls_IncLin 'incrementar linha
'call XlsComLin_Inc                                 'incrementar linha
call XlsComLin_IncRep                              'incrementar linha + repor formato normal

'zon$ = XlsZon$(liUsa, coArt, liUsa, coObs)         'zona
zon$ = XlsZon$(liUsa, coNom, liUsa, coNom)         'zona
res = XlsAli(zon$, "<")                            'alinhamento
end sub


Sub Com_Xls_LinSep 'linha de separacao
call XlsVnd_IncLin                                 'incrementar linha
zon$ = XlsZon$(liUsa, coNom, liUsa, coNom)         'zona
res = XlsAli(zon$, "<")                            'alinhamento
end sub


Sub Com_Xls_LstLin 'listar linha
'listar
res = XlsLst(liUsa, coArt, vuArtCov$)              'artigo - codigo formatado
res = XlsLst(liUsa, coNom, vuNom$)                 'artigo - nome

res = XlsLst(liUsa, coArzCod, vuArz)               'armazem
res = XlsLst(liUsa, coArzNom, vuArzNom$)           'armazem

res = XlsLst(liUsa, coCmpQ,    vuCmpQ)             'compras - quantidade
res = XlsLst(liUsa, coVndQ,    vuVndQ)             'vendas  - quantidade
res = XlsLst(liUsa, coTraEntQ, vuTraEntQ)          'TRA/entradas - quantidade
res = XlsLst(liUsa, coTraSaiQ, vuTraSaiQ)          'TRA/saidas   - quantidade

res = XlsLst(liUsa, coEntQ,    vuEntQ)             'entradas - quantidade
res = XlsLst(liUsa, coSaiQ,    vuSaiQ)             'saidas   - quantidade
res = XlsLst(liUsa, coResQ,    vuResQ)             'resumo   - quantidade

res = XlsLst(liUsa, coObs, vuObs$)                 'observacaoes


'- (52) ------------------------------------------>'Comentario

'diversos
usaAcm = 1                                         'assume acumular

if vuArz = 0 then                                  'armazem zero ?
   if acmUsaZer <> 1 then                          'nao acumular armazem zero ?
      usaAcm = 0                                   'nao acumular
   end if
end if

if usaAcm = 1 then                                 'acumular ?
   call Com_Acm_Exe                                'acumular valores
end if
end sub


Sub Com_Xls_LstLinObs 'listar linha - observacoes
'preparar valores
vtxObs$ = ""                                       'observacoes
vtxObs$ = vuObs$                                   'observacoes

'listar
res = XlsLst(liUsa, coObs, vtxObs$)                'observacoes
end sub


Sub Com_Xls_LstAcm 'listar - acumuladores
res = XlsLst(liUsa, coNrg, vNrg)                   'numero de registos (contagem)

res = XlsLst(liUsa, coCmpQ,    acCmpQ)             'compras - quantidade
res = XlsLst(liUsa, coVndQ,    acVndQ)             'vendas  - quantidade
res = XlsLst(liUsa, coTraEntQ, acTraEntQ)          'TRA/entradas - quantidade
res = XlsLst(liUsa, coTraSaiQ, acTraSaiQ)          'TRA/saidas   - quantidade

res = XlsLst(liUsa, coEntQ,    acEntQ)             'entradas - quantidade
res = XlsLst(liUsa, coSaiQ,    acSaiQ)             'saidas   - quantidade
res = XlsLst(liUsa, coResQ,    acResQ)             'resumo   - quantidade
end sub


'------------------------------------------------------------------------------
'- Total ----------------------------------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Xls_LstTot 'listar totais
call XlsComLin_Fim                                 'fim de linhas

acmNiv = 0                                         'nivel do acumulador
call Com_Acm_Con                                   'consultar acumuladores

'listar
liUsa = linFim                                     'linha a usar

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
call Com_Xls_LstAcm                                'listar - acumuladores
end sub


'------------------------------------------------------------------------------
'- grupo 1 --------------------------------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Xls_LinTit1 'titulo 1
if titIde$ <> "" then                              'ha titulo ?
   call Com_Xls_IncLin                             'incrementar linha	
   call XlsComLin_ActB                             'activar linha em BOLD

   res = XlsLst(liUsa, coNom, titIde$)             'listar identificacao
end if

titIde$ = ""                                       'anular titulo
end sub


Sub Com_Xls_LinSbt1 'subtotal 1
acmNiv = 1                                         'nivel do acumulador
call Com_Acm_Con                                   'consultar acumuladores

if vNrg > 1 then                                   'listar numero ?
   call Com_Xls_IncLin                             'incrementar linha	
   call XlsComLin_ActBI                            'activar linha em BOLD+ITALICO

   res = XlsLst(liUsa, coIds, ideSbt$)             'identificar subtotal

   'zon$ = XlsZon$(liUsa, coNrg)                    'zona
   zon$ = XlsZon$(liUsa, coIds, liUsa, coNrg)      'zona
   res = XlsAli(zon$, "|")                         'alinhamento

   call Com_Xls_LstAcm                             'listar - acumuladores
end if

call Com_Xls_IncLin                                'incrementar linha	

x = TotLpz(1)                                      'limpar totais
ideSbt$ = ""                                       'limpar identificador de subtotal
end sub


'==============================================================================
'- [XLS] - DcmArt - Desvio por artigo -----------------------------------------
'==============================================================================
Sub XlsAcpArt_DocIni 'inicializar documento
comXlsFic$ = "StcAcp.xls"                       'nome do ficheiro
comCabTit$ = "Resumo por Artigo"                'titulo

call Com_Xls_DocIni                                'inicializar documento
acmUsaZer  = 1                                     'acumular armazem zero
end sub


Sub XlsAcpArt_DocFim 'terminar documento
call Com_Xls_DocFim                                'terminar documento
end sub


Sub XlsAcpArt_Lin 'linha
call Com_Var_Con                                   'consultar variaveis
call Com_Xls_IncLin                                'incrementar linha	

'listar
'call ResAcmExe                                     'acumular
call Com_Xls_LstLin                                'listar linha
end sub


Sub XlsAcpArt_Fim 'terminar
call Com_Xls_LstTot                                'listar totais
end sub


'==============================================================================
'- [XLS] - DcmArz - Desvio por artigo/armazem ---------------------------------
'==============================================================================
Sub XlsAcpArz_DocIni 'inicializar documento
comXlsFic$ = "StcAcp.xls"                       'nome do ficheiro
comCabTit$ = "Resumo por Artigo/Armazem"        'titulo

call Com_Xls_DocIni                                'inicializar documento
acmUsaZer  = 0                                     'nao acumular armazem zero
end sub


Sub XlsAcpArz_DocFim 'terminar documento
call Com_Xls_DocFim                                'terminar documento
end sub


Sub XlsAcpArz_Lin 'linha
call Com_Var_Con                                   'consultar variaveis
call Com_Xls_IncLin                                'incrementar linha	

'listar
call Com_Xls_LstLin                                'listar linha

if vuArz = 0 then                                  'armazem zero ?
   zon$ = XlsZon$(liUsa, coArt, liUsa, coObs)      'zona
   res  = XlsEnvZon(zon$, "T,B", "C", "F")         'border
end if
end sub


Sub XlsAcpArz_Fim 'terminar
call Com_Xls_LstTot                                'listar totais
end sub


'- grupo 1 -------------------------------------------------------------------
Sub XlsAcpArz_LinTit1 'titulo 1
call Com_Var_Con                                   'consultar variaveis
call Com_Var_PrpCtu                                'preparar variaveis - conta

'titIde$ = artIde$                                  'titulo
titIde$ = ""                                       'anular titulo
call Com_Xls_LinTit1                               'listar
end sub


Sub XlsAcpArz_LinSbt1 'subtotal 1
ideSbt$ = "Subtotal do artigo"                     'identificacao de subtotal
call Com_Xls_LinSbt1                               'listar
end sub

##


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

