'Nome       : StcAcpRes.sql
'Tipo       : LST
'Data       : 2016/09/14
'Versao     : 1.0
'Descricao  : STC - Acumulados por periodo - Resumo

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


'------------------------------------------------------------------------------
'- Acumulados por artigo ------------------------------------------------------
'------------------------------------------------------------------------------
Gerar registos      [Cmd]=ArtAcm=+
   +SELECT ART.Art$ AS [Art$], Art.Nome1$ AS [Nom$], +
   +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 - exportar -----------------------------------
'------------------------------------------------------------------------------
Gerar registos      [Cmd]=ArtArzAcm=+
   +SELECT ART.Art$ AS [Art$], Art.Nome1$ AS [Nom$], +
   +ACM.Arz  AS ARZ, +
   +1 AS UNI +
   +FROM {TB_StcMst} AS ART +
   +LEFT JOIN StcAcp AS ACM ON ART.Art$ = ACM.Art$ +
   +WHERE ACM.RecVal <> 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

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=XlsAcpArt,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]=StcAcpRes.xls
##


'==============================================================================
#DOC - Por armazem
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=XlsAcpArz,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]=StcAcpRes.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

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

'- Periodo --------------------------------------------------------------------
'existencia - quantidade/valor
vaPerExiQu  = FrmNum$(06.3,vuPerExiQu)                'quantidade
toPerExiQu  = FrmNum$(06.3,Total("vaPerExiQu",0))     'quantidade - total
s1PerExiQu  = FrmNum$(06.3,Total("vaPerExiQu",1))     'quantidade - subtotal 1
s2PerExiQu  = FrmNum$(06.3,Total("vaPerExiQu",2))     'quantidade - subtotal 2

vaPerExiVt  = FrmNum$(12.2,vuPerExiVt)                'valor
toPerExiVt  = FrmNum$(12.2,Total("vaPerExiVt",0))     'valor - total
s1PerExiVt  = FrmNum$(12.2,Total("vaPerExiVt",1))     'valor - subtotal 1
s2PerExiVt  = FrmNum$(12.2,Total("vaPerExiVt",2))     'valor - subtotal 2

'entradas - quantidade/valor
vaPerEntQu  = FrmNum$(06.3,vuPerEntQu)                'quantidade
toPerEntQu  = FrmNum$(06.3,Total("vaPerEntQu",0))     'quantidade - total
s1PerEntQu  = FrmNum$(06.3,Total("vaPerEntQu",1))     'quantidade - subtotal 1
s2PerEntQu  = FrmNum$(06.3,Total("vaPerEntQu",2))     'quantidade - subtotal 2

vaPerEntVt  = FrmNum$(12.2,vuPerEntVt)                'valor
toPerEntVt  = FrmNum$(12.2,Total("vaPerEntVt",0))     'valor - total
s1PerEntVt  = FrmNum$(12.2,Total("vaPerEntVt",1))     'valor - subtotal 1
s2PerEntVt  = FrmNum$(12.2,Total("vaPerEntVt",2))     'valor - subtotal 2

'saidas - quantidade/valor
vaPerSaiQu  = FrmNum$(06.3,vuPerSaiQu)                'quantidade
toPerSaiQu  = FrmNum$(06.3,Total("vaPerSaiQu",0))     'quantidade - total
s1PerSaiQu  = FrmNum$(06.3,Total("vaPerSaiQu",1))     'quantidade - subtotal 1
s2PerSaiQu  = FrmNum$(06.3,Total("vaPerSaiQu",2))     'quantidade - subtotal 2

vaPerSaiVt  = FrmNum$(12.2,vuPerSaiVt)                'valor
toPerSaiVt  = FrmNum$(12.2,Total("vaPerSaiVt",0))     'valor - total
s1PerSaiVt  = FrmNum$(12.2,Total("vaPerSaiVt",1))     'valor - subtotal 1
s2PerSaiVt  = FrmNum$(12.2,Total("vaPerSaiVt",2))     'valor - subtotal 2

'compras - quantidade/valor
vaPerCmpQu  = FrmNum$(06.3,vuPerCmpQu)                'quantidade
toPerCmpQu  = FrmNum$(06.3,Total("vaPerCmpQu",0))     'quantidade - total
s1PerCmpQu  = FrmNum$(06.3,Total("vaPerCmpQu",1))     'quantidade - subtotal 1
s2PerCmpQu  = FrmNum$(06.3,Total("vaPerCmpQu",2))     'quantidade - subtotal 2

vaPerCmpVt  = FrmNum$(12.2,vuPerCmpVt)                'valor
toPerCmpVt  = FrmNum$(12.2,Total("vaPerCmpVt",0))     'valor - total
s1PerCmpVt  = FrmNum$(12.2,Total("vaPerCmpVt",1))     'valor - subtotal 1
s2PerCmpVt  = FrmNum$(12.2,Total("vaPerCmpVt",2))     'valor - subtotal 2

'vendas - quantidade/valor
vaPerVndQu  = FrmNum$(06.3,vuPerVndQu)                'quantidade
toPerVndQu  = FrmNum$(06.3,Total("vaPerVndQu",0))     'quantidade - total
s1PerVndQu  = FrmNum$(06.3,Total("vaPerVndQu",1))     'quantidade - subtotal 1
s2PerVndQu  = FrmNum$(06.3,Total("vaPerVndQu",2))     'quantidade - subtotal 2

vaPerVndVt  = FrmNum$(12.2,vuPerVndVt)                'valor
toPerVndVt  = FrmNum$(12.2,Total("vaPerVndVt",0))     'valor - total
s1PerVndVt  = FrmNum$(12.2,Total("vaPerVndVt",1))     'valor - subtotal 1
s2PerVndVt  = FrmNum$(12.2,Total("vaPerVndVt",2))     'valor - subtotal 2

'custo-vendas - unitario/total
vaPerCuvVu  = FrmNum$(06.3,vuPerCuvVu)                'valor unitario
toPerCuvVu  = FrmNum$(06.3,Total("vaPerCuvVu",0))     'valor unitario - total
s1PerCuvVu  = FrmNum$(06.3,Total("vaPerCuvVu",1))     'valor unitario - subtotal 1
s2PerCuvVu  = FrmNum$(06.3,Total("vaPerCuvVu",2))     'valor unitario - subtotal 2

vaPerCuvVt  = FrmNum$(12.2,vuPerCuvVt)                'valor total
toPerCuvVt  = FrmNum$(12.2,Total("vaPerCuvVt",0))     'valor total - total
s1PerCuvVt  = FrmNum$(12.2,Total("vaPerCuvVt",1))     'valor total - subtotal 1
s2PerCuvVt  = FrmNum$(12.2,Total("vaPerCuvVt",2))     'valor total - subtotal 2

'margem-vendas - unitario/total
vaPerMrvVu  = FrmNum$(06.3,vuPerMrvVu)                'valor unitario
toPerMrvVu  = FrmNum$(06.3,Total("vaPerMrvVu",0))     'valor unitario - total
s1PerMrvVu  = FrmNum$(06.3,Total("vaPerMrvVu",1))     'valor unitario - subtotal 1
s2PerMrvVu  = FrmNum$(06.3,Total("vaPerMrvVu",2))     'valor unitario - subtotal 2

vaPerMrvVt  = FrmNum$(12.2,vuPerMrvVt)                'valor total
toPerMrvVt  = FrmNum$(12.2,Total("vaPerMrvVt",0))     'valor total - total
s1PerMrvVt  = FrmNum$(12.2,Total("vaPerMrvVt",1))     'valor total - subtotal 1
s2PerMrvVt  = FrmNum$(12.2,Total("vaPerMrvVt",2))     'valor total - subtotal 2

'TR.Arz - entradas
vaPerTraEntQu  = FrmNum$(06.3,vuPerTraEntQu)             'entradas/quantidade
toPerTraEntQu  = FrmNum$(06.3,Total("vaPerTraEntQu",0))  'entradas/quantidade - total
s1PerTraEntQu  = FrmNum$(06.3,Total("vaPerTraEntQu",1))  'entradas/quantidade - subtotal 1
s2PerTraEntQu  = FrmNum$(06.3,Total("vaPerTraEntQu",2))  'entradas/quantidade - subtotal 2

'TR.Arz - saidas
vaPerTraSaiQu  = FrmNum$(06.3,vuPerTraSaiQu)             'saidas/quantidade
toPerTraSaiQu  = FrmNum$(06.3,Total("vaPerTraSaiQu",0))  'saidas/quantidade - total
s1PerTraSaiQu  = FrmNum$(06.3,Total("vaPerTraSaiQu",1))  'saidas/quantidade - subtotal 1
s2PerTraSaiQu  = FrmNum$(06.3,Total("vaPerTraSaiQu",2))  'saidas/quantidade - subtotal 2

'- Acmumulados ----------------------------------------------------------------
'existencia - quantidade/valor
vaAcmExiQu  = FrmNum$(06.3,vuAcmExiQu)                'quantidade
toAcmExiQu  = FrmNum$(06.3,Total("vaAcmExiQu",0))     'quantidade - total
s1AcmExiQu  = FrmNum$(06.3,Total("vaAcmExiQu",1))     'quantidade - subtotal 1
s2AcmExiQu  = FrmNum$(06.3,Total("vaAcmExiQu",2))     'quantidade - subtotal 2

vaAcmExiVt  = FrmNum$(12.2,vuAcmExiVt)                'valor
toAcmExiVt  = FrmNum$(12.2,Total("vaAcmExiVt",0))     'valor - total
s1AcmExiVt  = FrmNum$(12.2,Total("vaAcmExiVt",1))     'valor - subtotal 1
s2AcmExiVt  = FrmNum$(12.2,Total("vaAcmExiVt",2))     'valor - subtotal 2

'entradas - quantidade/valor
vaAcmEntQu  = FrmNum$(06.3,vuAcmEntQu)                'quantidade
toAcmEntQu  = FrmNum$(06.3,Total("vaAcmEntQu",0))     'quantidade - total
s1AcmEntQu  = FrmNum$(06.3,Total("vaAcmEntQu",1))     'quantidade - subtotal 1
s2AcmEntQu  = FrmNum$(06.3,Total("vaAcmEntQu",2))     'quantidade - subtotal 2

vaAcmEntVt  = FrmNum$(12.2,vuAcmEntVt)                'valor
toAcmEntVt  = FrmNum$(12.2,Total("vaAcmEntVt",0))     'valor - total
s1AcmEntVt  = FrmNum$(12.2,Total("vaAcmEntVt",1))     'valor - subtotal 1
s2AcmEntVt  = FrmNum$(12.2,Total("vaAcmEntVt",2))     'valor - subtotal 2

'saidas - quantidade/valor
vaAcmSaiQu  = FrmNum$(06.3,vuAcmSaiQu)                'quantidade
toAcmSaiQu  = FrmNum$(06.3,Total("vaAcmSaiQu",0))     'quantidade - total
s1AcmSaiQu  = FrmNum$(06.3,Total("vaAcmSaiQu",1))     'quantidade - subtotal 1
s2AcmSaiQu  = FrmNum$(06.3,Total("vaAcmSaiQu",2))     'quantidade - subtotal 2

vaAcmSaiVt  = FrmNum$(12.2,vuAcmSaiVt)                'valor
toAcmSaiVt  = FrmNum$(12.2,Total("vaAcmSaiVt",0))     'valor - total
s1AcmSaiVt  = FrmNum$(12.2,Total("vaAcmSaiVt",1))     'valor - subtotal 1
s2AcmSaiVt  = FrmNum$(12.2,Total("vaAcmSaiVt",2))     'valor - subtotal 2

'compras - quantidade/valor
vaAcmCmpQu  = FrmNum$(06.3,vuAcmCmpQu)                'quantidade
toAcmCmpQu  = FrmNum$(06.3,Total("vaAcmCmpQu",0))     'quantidade - total
s1AcmCmpQu  = FrmNum$(06.3,Total("vaAcmCmpQu",1))     'quantidade - subtotal 1
s2AcmCmpQu  = FrmNum$(06.3,Total("vaAcmCmpQu",2))     'quantidade - subtotal 2

vaAcmCmpVt  = FrmNum$(12.2,vuAcmCmpVt)                'valor
toAcmCmpVt  = FrmNum$(12.2,Total("vaAcmCmpVt",0))     'valor - total
s1AcmCmpVt  = FrmNum$(12.2,Total("vaAcmCmpVt",1))     'valor - subtotal 1
s2AcmCmpVt  = FrmNum$(12.2,Total("vaAcmCmpVt",2))     'valor - subtotal 2

'vendas - quantidade/valor
vaAcmVndQu  = FrmNum$(06.3,vuAcmVndQu)                'quantidade
toAcmVndQu  = FrmNum$(06.3,Total("vaAcmVndQu",0))     'quantidade - total
s1AcmVndQu  = FrmNum$(06.3,Total("vaAcmVndQu",1))     'quantidade - subtotal 1
s2AcmVndQu  = FrmNum$(06.3,Total("vaAcmVndQu",2))     'quantidade - subtotal 2

vaAcmVndVt  = FrmNum$(12.2,vuAcmVndVt)                'valor
toAcmVndVt  = FrmNum$(12.2,Total("vaAcmVndVt",0))     'valor - total
s1AcmVndVt  = FrmNum$(12.2,Total("vaAcmVndVt",1))     'valor - subtotal 1
s2AcmVndVt  = FrmNum$(12.2,Total("vaAcmVndVt",2))     'valor - subtotal 2

'custo-vendas - unitario/total
vaAcmCuvVu  = FrmNum$(06.3,vuAcmCuvVu)                'valor unitario
toAcmCuvVu  = FrmNum$(06.3,Total("vaAcmCuvVu",0))     'valor unitario - total
s1AcmCuvVu  = FrmNum$(06.3,Total("vaAcmCuvVu",1))     'valor unitario - subtotal 1
s2AcmCuvVu  = FrmNum$(06.3,Total("vaAcmCuvVu",2))     'valor unitario - subtotal 2

vaAcmCuvVt  = FrmNum$(12.2,vuAcmCuvVt)                'valor total
toAcmCuvVt  = FrmNum$(12.2,Total("vaAcmCuvVt",0))     'valor total - total
s1AcmCuvVt  = FrmNum$(12.2,Total("vaAcmCuvVt",1))     'valor total - subtotal 1
s2AcmCuvVt  = FrmNum$(12.2,Total("vaAcmCuvVt",2))     'valor total - subtotal 2

'margem-vendas - unitario/total
vaAcmMrvVu  = FrmNum$(06.3,vuAcmMrvVu)                'valor unitario
toAcmMrvVu  = FrmNum$(06.3,Total("vaAcmMrvVu",0))     'valor unitario - total
s1AcmMrvVu  = FrmNum$(06.3,Total("vaAcmMrvVu",1))     'valor unitario - subtotal 1
s2AcmMrvVu  = FrmNum$(06.3,Total("vaAcmMrvVu",2))     'valor unitario - subtotal 2

vaAcmMrvVt  = FrmNum$(12.2,vuAcmMrvVt)                'valor total
toAcmMrvVt  = FrmNum$(12.2,Total("vaAcmMrvVt",0))     'valor total - total
s1AcmMrvVt  = FrmNum$(12.2,Total("vaAcmMrvVt",1))     'valor total - subtotal 1
s2AcmMrvVt  = FrmNum$(12.2,Total("vaAcmMrvVt",2))     'valor total - subtotal 2

'TR.Arz - entradas
vaAcmTraEntQu  = FrmNum$(06.3,vuAcmTraEntQu)             'entradas/quantidade
toAcmTraEntQu  = FrmNum$(06.3,Total("vaAcmTraEntQu",0))  'entradas/quantidade - total
s1AcmTraEntQu  = FrmNum$(06.3,Total("vaAcmTraEntQu",1))  'entradas/quantidade - subtotal 1
s2AcmTraEntQu  = FrmNum$(06.3,Total("vaAcmTraEntQu",2))  'entradas/quantidade - subtotal 2

'TR.Arz - saidas
vaAcmTraSaiQu  = FrmNum$(06.3,vuAcmTraSaiQu)             'saidas/quantidade
toAcmTraSaiQu  = FrmNum$(06.3,Total("vaAcmTraSaiQu",0))  'saidas/quantidade - total
s1AcmTraSaiQu  = FrmNum$(06.3,Total("vaAcmTraSaiQu",1))  'saidas/quantidade - subtotal 1
s2AcmTraSaiQu  = FrmNum$(06.3,Total("vaAcmTraSaiQu",2))  'saidas/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


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 ----------------------------------------------------------------------
'==============================================================================
'------------------------------------------------------------------------------
'- [REG] - Variaveis do registos ----------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Var_Con 'consultar variaveis
'- (52) ------------------------------------------>'Comentario

vuAno = FrmDt$("A",Sig_DtHoje)                     'ano da data
vuMes = FrmDt$("M",Sig_DtHoje)                     'mes da data (periodo)

'campos
vuArt$       = SqlCmp$("Art$")                     'artigo - codigo
vuNom$       = SqlCmp$("Nom$")                     'artigo - nome

vuUpc        = SqlCmp("Upc")                       'UPZ
vuPmc        = SqlCmp("Pmc")                       'PMC

vuArz        = SqlCmp("Arz")                       'armazem

'existencia/periodo
vuPerExiQu      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "EXI/Q")       'existencia - quantidade
vuPerExiVre     = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "EXI/V")       'existencia - valor residual (entradas - saidas)
vuPerExiVcm     = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "EXI/VCM")     'existencia - valor a custo medio
vuPerExiVcu     = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "VCU")         'valor de custo unitario (medio)

'existencia/acumulado
vuAcmExiQu      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "+EXI/Q")      'existencia - quantidade
vuAcmExiVre     = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "+EXI/V")      'existencia - valor residual (entradas - saidas)
vuAcmExiVcm     = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "+EXI/VCM")    'existencia - valor a custo medio
vuAcmExiVcu     = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "+VCU")        'valor de custo unitario (medio)

'entradas/periodo
vuPerEntQu      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "ENT/Q")       'entradas - quantidade
vuPerEntVt      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "ENT/V")       'entradas - valor

'entradas/acumulado
vuAcmEntQu      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "+ENT/Q")      'entradas - quantidade
vuAcmEntVt      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "+ENT/V")      'entradas - valor

'saidas/periodo
vuPerSaiQu      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "SAI/Q")       'saidas - quantidade
vuPerSaiVt      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "SAI/V")       'saidas - valor
vuPerSaiVcm     = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "SAI/VCM")     'saidas - valor a custo medio

'saidas/acumulado
vuAcmSaiQu      = StcAcpGrp("ART", vuArt$, vUarz, vUano, vuMes, "+SAI/Q")      'saidas - quantidade
vuAcmSaiVt      = StcAcpGrp("ART", vuArt$, vUarz, vUano, vuMes, "+SAI/V")      'saidas - valor
vuAcmSaiVcm     = StcAcpGrp("ART", vuArt$, vUarz, vUano, vuMes, "+SAI/VCM")    'saidas - valor a custo medio

'msgbox "", vuSaiQu,vuSaiVt

'compras/periodo
vuPerCmpQu      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "CMP/Q")       'compras - quantidade
vuPerCmpVt      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "CMP/V")       'compras - valor

'compras/acumulado
vuAcmCmpQu      = StcAcpGrp("ART", vuArt$, vUarz, vUano, vuMes, "+CMP/Q")      'compras - quantidade
vuAcmCmpVt      = StcAcpGrp("ART", vuArt$, vUarz, vUano, vuMes, "+CMP/V")      'compras - valor


'vendas/periodo
vuPerVndQu      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "VND/Q")       'vendas - quantidade
vuPerVndVt      = StcAcpGrp("ART", vuArt$, vUarz, vuAno, vuMes, "VND/V")       'vendas - valor

'vendas/acumulado
vuAcmVndQu      = StcAcpGrp("ART", vuArt$, vUarz, vUano, vuMes, "+VND/Q")      'vendas - quantidade
vuAcmVndVt      = StcAcpGrp("ART", vuArt$, vUarz, vUano, vuMes, "+VND/V")      'vendas - valor

'diversos
call Com_Var_Con_Rmv                               'consultar variaveis - resumo de movimentos

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

call Com_Var_PrpClcPer                             'preparar variaveis - calculadas/periodo
call Com_Var_PrpClcAcm                             'preparar variaveis - calculadas/acumulado

'grupos de variaveis
call Com_Var_PrpArZ                                'preparar variaveis - armazem

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


Sub Com_Var_Con_Rmv 'consultar variaveis - resumo de movimentos
'resumo por codigo de movimento/periodo
vuPerTraEntQu = StcRmvGrp("ART", vuArt$, vuArt$, vuArz, -1, vuAno, vuMes, 17, "QUA")  'TR Armazem - entradas
vuPerTraSaiQu = StcRmvGrp("ART", vuArt$, vuArt$, -1, vuArz, vuAno, vuMes, 17, "QUA")  'TR Armazem - saidas

'resumo por codigo de movimento/acumulado
vpAcm$ = "0:" + vuMes                                                                 'periodo para acumulados
vuAcmTraEntQu = StcRmvGrp("ART", vuArt$, vuArt$, vuArz, -1, vuAno, vpAcm$, 17, "QUA") 'TR Armazem - entradas
vuAcmTraSaiQu = StcRmvGrp("ART", vuArt$, vuArt$, -1, vuArz, vuAno, vpAcm$, 17, "QUA") 'TR Armazem - saidas
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


Sub Com_Var_PrpClcPer 'preparar variaveis - calculadas/periodo
'existencia
vuPerExiVu = vuPerExiVcu                           'existencia - valor unitario
vuPerExiVt = vuPerExiVcm                           'existencia - valor total

'entradas
if vuPerEntQu <> 0 then                            'ha quantidade de entradas ?
   vuPerEntVu = vuPerEntVt / vuPerEntQu            'calcular valor unitario
else
   vuPerEntVu = 0                                  'anular valor unitario
end if

'saidas
if vuPerSaiQu <> 0 then                            'ha quantidade de saidas ?
   vuPerSaiVu = vuPerSaiVt / vuPerSaiQu            'calcular valor unitario
else
   vuPerSaiVu = 0                                  'anular valor unitario
end if

'compras
if vuPerCmpQu <> 0 then                            'ha quantidade de compras ?
   vuPerCmpVu = vuPerCmpVt / vuPerCmpQu            'calcular valor unitario
else
   vuPerCmpVu = 0                                  'anular valor unitario
end if

'vendas
if vuPerVndQu <> 0 then                            'ha quantidade de vendas ?
   vuPerVndVu = vuPerVndVt / vuPerVndQu            'calcular valor unitario
else
   vuPerVndVu = 0                                  'anular valor unitario
end if

'custo da vendas
vuPerCuvVu = vuPerExiVu                            'custo das vendas - unitario (valor de existencia)
vuPerCuvVt = vuPerVndQu * vuPerCuvVu               'calcular custo das vendas total

'margem de vendas
vuPerMrvVt = vuPerVndVt - vuPerCuvVt               'calcular margem total
if vuPerVndQu <> 0 then                            'ha quantidade de vendas ?
   vuPerMrvVu = vuPerMrvVt / vuPerVndQu            'calcular valor unitario da margem
else
   vuPerMrvVu = 0                                  'anular valor unitario da margem
end if
end sub


Sub Com_Var_PrpClcAcm 'preparar variaveis - calculadas/acumulado
'existencia
vuAcmExiVu = vuAcmExiVcu                           'existencia valor unitario (valor a custo medio)
vuAcmExiVt = vuAcmExiVcm                           'existencia - valor total

'entradas
if vuAcmEntQu <> 0 then                            'ha quantidade de entradas ?
   vuAcmEntVu = vuAcmEntVt / vuAcmEntQu            'calcular valor unitario
else
   vuAcmEntVu = 0                                  'anular valor unitario
end if

'saidas
if vuAcmSaiQu <> 0 then                            'ha quantidade de saidas ?
   vuAcmSaiVu = vuAcmSaiVt / vuAcmSaiQu            'calcular valor unitario
else
   vuAcmSaiVu = 0                                  'anular valor unitario
end if

'compras
if vuAcmCmpQu <> 0 then                            'ha quantidade de compras ?
   vuAcmCmpVu = vuAcmCmpVt / vuAcmCmpQu            'calcular valor unitario
else
   vuAcmCmpVu = 0                                  'anular valor unitario
end if

'vendas
if vuAcmVndQu <> 0 then                            'ha quantidade de vendas ?
   vuAcmVndVu = vuAcmVndVt / vuAcmVndQu            'calcular valor unitario
else
   vuAcmVndVu = 0                                  'anular valor unitario
end if

'custo da vendas
vuAcmCuvVu = vuAcmExiVu                            'custo das vendas - unitario (valor de existencia)
vuAcmCuvVt = vuAcmVndQu * vuAcmCuvVu               'calcular custo das vendas total

'margem de vendas
vuAcmMrvVt = vuAcmVndVt - vuAcmCuvVt               'calcular margem total
if vuAcmVndQu <> 0 then                            'ha quantidade de vendas ?
   vuAcmMrvVu = vuAcmMrvVt / vuAcmVndQu            'calcular valor unitario da margem
else
   vuAcmMrvVu = 0                                  'anular valor unitario da margem
end if
end sub


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

'- Periodo --------------------------------------------------------------------
res = AcmExe("vaPerExiQu", vuPerExiQu)             'acumular - existencia - quantidade
res = AcmExe("vaPerExiVt", vuPerExiVt)             'acumular - existencia - valor total

res = AcmExe("vaPerEntQu", vuPerEntQu)             'acumular - entradas   - quantidade
res = AcmExe("vaPerEntVt", vuPerEntVt)             'acumular - entradas   - valor total

res = AcmExe("vaPerSaiQu", vuPerSaiQu)             'acumular - saidas     - quantidade
res = AcmExe("vaPerSaiVt", vuPerSaiVt)             'acumular - saidas     - valor total

res = AcmExe("vaPerCmpQu", vuPerCmpQu)             'acumular - compras    - quantidade
res = AcmExe("vaPerCmpVt", vuPerCmpVt)             'acumular - compras    - valor total

res = AcmExe("vaPerVndQu", vuPerVndQu)             'acumular - vendas     - quantidade
res = AcmExe("vaPerVndVt", vuPerVndVt)             'acumular - vendas     - valor total

res = AcmExe("vaPerCuvVt", vuPerCuvVt)             'acumular - vendas/custo  - valor total
res = AcmExe("vaPerMrvVt", vuPerMrvVt)             'acumular - vendas/margem - valor total

res = AcmExe("vaPerTraEntQu", vuPerTraEntQu)       'TR.Arz/entradas - quantidade
res = AcmExe("vaPerTraSaiQu", vuPerTraSaiQu)       'TR.Arz/saidas   - quantidade

'- Acumulados -----------------------------------------------------------------
res = AcmExe("vaAcmExiQu", vuAcmExiQu)             'acumular - existencia - quantidade
res = AcmExe("vaAcmExiVt", vuAcmExiVt)             'acumular - existencia - valor total

res = AcmExe("vaAcmEntQu", vuAcmEntQu)             'acumular - entradas   - quantidade
res = AcmExe("vaAcmEntVt", vuAcmEntVt)             'acumular - entradas   - valor total

res = AcmExe("vaAcmSaiQu", vuAcmSaiQu)             'acumular - saidas     - quantidade
res = AcmExe("vaAcmSaiVt", vuAcmSaiVt)             'acumular - saidas     - valor total

res = AcmExe("vaAcmCmpQu", vuAcmCmpQu)             'acumular - compras    - quantidade
res = AcmExe("vaAcmCmpVt", vuAcmCmpVt)             'acumular - compras    - valor total

res = AcmExe("vaAcmVndQu", vuAcmVndQu)             'acumular - vendas     - quantidade
res = AcmExe("vaAcmVndVt", vuAcmVndVt)             'acumular - vendas     - valor total

res = AcmExe("vaAcmCuvVt", vuAcmCuvVt)             'acumular - vendas/custo  - valor total
res = AcmExe("vaAcmMrvVt", vuAcmMrvVt)             'acumular - vendas/margem - valor total

res = AcmExe("vaAcmTraEntQu", vuAcmTraEntQu)       'TR.Arz/entradas - quantidade
res = AcmExe("vaAcmTraSaiQu", vuAcmTraSaiQu)       'TR.Arz/saidas   - quantidade
end sub


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

'- Periodo --------------------------------------------------------------------
acPerExiQu  = Total("vaPerExiQu", acmNiv)          'existencia - quantidade
acPerExiVt  = Total("vaPerExiVt", acmNiv)          'existencia - valor

acPerEntQu  = Total("vaPerEntQu", acmNiv)          'entradas   - quantidade
acPerEntVt  = Total("vaPerEntVt", acmNiv)          'entradas   - valor

acPerSaiQu  = Total("vaPerSaiQu", acmNiv)          'saidas     - quantidade
acPerSaiVt  = Total("vaPerSaiVt", acmNiv)          'saidas     - valor

acPerCmpQu  = Total("vaPerCmpQu", acmNiv)          'compras    - quantidade
acPerCmpVt  = Total("vaPerCmpVt", acmNiv)          'compras    - valor

acPerVndQu  = Total("vaPerVndQu", acmNiv)          'vendas     - quantidade
acPerVndVt  = Total("vaPerVndVt", acmNiv)          'vendas     - valor

acPerCuvVt  = Total("vaPerCuvVt", acmNiv)          'vendas/custo     - valor
acPerMrvVt  = Total("vaPerMrvVt", acmNiv)          'vendas/margem    - valor

acPerTraEntQu  = Total("vaPerTraEntQu", acmNiv)    'TR.Arz/entradas - quantidade
acPerTraSaiQu  = Total("vaPerTraSaiQu", acmNiv)    'TR.Arz/saidas   - quantidade

'- Acumulados -----------------------------------------------------------------
acAcmExiQu  = Total("vaAcmExiQu", acmNiv)          'existencia - quantidade
acAcmExiVt  = Total("vaAcmExiVt", acmNiv)          'existencia - valor

acAcmEntQu  = Total("vaAcmEntQu", acmNiv)          'entradas   - quantidade
acAcmEntVt  = Total("vaAcmEntVt", acmNiv)          'entradas   - valor

acAcmSaiQu  = Total("vaAcmSaiQu", acmNiv)          'saidas     - quantidade
acAcmSaiVt  = Total("vaAcmSaiVt", acmNiv)          'saidas     - valor

acAcmCmpQu  = Total("vaAcmCmpQu", acmNiv)          'compras    - quantidade
acAcmCmpVt  = Total("vaAcmCmpVt", acmNiv)          'compras    - valor

acAcmVndQu  = Total("vaAcmVndQu", acmNiv)          'vendas     - quantidade
acAcmVndVt  = Total("vaAcmVndVt", acmNiv)          'vendas     - valor

acAcmCuvVt  = Total("vaAcmCuvVt", acmNiv)          'vendas/custo     - valor
acAcmMrvVt  = Total("vaAcmMrvVt", acmNiv)          'vendas/margem    - valor

acAcmTraEntQu  = Total("vaAcmTraEntQu", acmNiv)    'TR.Arz/entradas - quantidade
acAcmTraSaiQu  = Total("vaAcmTraSaiQu", acmNiv)    'TR.Arz/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 worksheet

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

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("LIM_ART", "")                     'limite de artigos
res = XlsIdeLst("ARZ_IDE", "")                     'identificacao de armazem
res = XlsIdeLst("VAL_STK", "")                     'valorizacao de stock

call XlsComLin_Ini                                 'iniciar linhas

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

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

'periodo
coPerExiQu  =  6                                   'periodo/existencia - quantidade
coPerExiVu  =  7                                   'periodo/existencia - valor unitario
coPerExiVt  =  8                                   'periodo/existencia - valor total

coPerEntQu  =  9                                   'periodo/entradas - quantidade
coPerEntVu  = 10                                   'periodo/entradas - valor unitario
coPerEntVt  = 11                                   'periodo/entradas - valor total

coPerSaiQu  = 12                                   'periodo/entradas - quantidade
coPerSaiVu  = 13                                   'periodo/entradas - valor unitario
coPerSaiVt  = 14                                   'periodo/entradas - valor total

coPerCmpQu  = 15                                   'periodo/compras - quantidade
coPerCmpVu  = 16                                   'periodo/compras - valor unitario
coPerCmpVt  = 17                                   'periodo/compras - valor total

coPerVndQu  = 18                                   'periodo/vendas - quantidade
coPerVndVu  = 19                                   'periodo/vendas - valor unitario
coPerVndVt  = 20                                   'periodo/vendas - valor total

coPerCuvVu  = 21                                   'periodo/custo-vendas - valor unitario
coPerCuvVt  = 22                                   'periodo/custo-vendas - valor total

coPerMrvVu  = 23                                   'periodo/margem-vendas - valor unitario
coPerMrvVt  = 24                                   'periodo/margem-vendas - valor total

coPerTraEntQu  = 25                                'periodo/TR.Arz/entradas - quantidade
coPerTraSaiQu  = 26                                'periodo/TR.Arz/saidas   - quantidade

'acumulados
coAcmExiQu  = 27                                   'acumulado/existencia - quantidade
coAcmExiVu  = 28                                   'acumulado/existencia - valor unitario
coAcmExiVt  = 29                                   'acumulado/existencia - valor total

coAcmEntQu  = 30                                   'acumulado/entradas - quantidade
coAcmEntVu  = 31                                   'acumulado/entradas - valor unitario
coAcmEntVt  = 32                                   'acumulado/entradas - valor total

coAcmSaiQu  = 33                                   'acumulado/entradas - quantidade
coAcmSaiVu  = 34                                   'acumulado/entradas - valor unitario
coAcmSaiVt  = 35                                   'acumulado/entradas - valor total

coAcmCmpQu  = 36                                   'periodo/compras - quantidade
coAcmCmpVu  = 37                                   'periodo/compras - valor unitario
coAcmCmpVt  = 38                                   'periodo/compras - valor total

coAcmVndQu  = 39                                   'periodo/vendas - quantidade
coAcmVndVu  = 40                                   'periodo/vendas - valor unitario
coAcmVndVt  = 41                                   'periodo/vendas - valor total

coAcmCuvVu  = 42                                   'periodo/custo-vendas - valor unitario
coAcmCuvVt  = 43                                   'periodo/custo-vendas - valor total

coAcmMrvVu  = 44                                   'periodo/margem-vendas - valor unitario
coAcmMrvVt  = 45                                   'periodo/margem-vendas - valor total

coAcmTraEntQu  = 46                                'acumulado/TR.Arz/entradas - quantidade
coAcmTraSaiQu  = 47                                'acumulado/TR.Arz/saidas   - quantidade

'adicional
coObs    = 48                                      'observacoes

'diversos
coIds    = coNom                                   'posicao - identificar subtotal
coNrg    = coArzCod                                '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, 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, coArt, liUsa, coArt)         'zona
'res = XlsAli(zon$, "<")                            'alinhamento
end sub


Sub Com_Xls_LstLin 'listar linha
'zon$ = XlsZon$(liUsa, coNom, liUsa, coNom)         'zona
'res = XlsAli(zon$, "<")                            'alinhamento

'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

'valores
call Com_Xls_LstLinPer                             'listar linha - periodo
call Com_Xls_LstLinAcm                             'listar linha - acumulado

'adicional
'res = XlsLst(liUsa, coObs, vuObs$)                 'observacaoes
call Com_Xls_LstLinObs                             'listar linha - observacoes

'- (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_LstLin_DBG 'listar linha - valores para DEBUG
res = XlsLst(liUsa, coAcmExiQu, vuPerExiVcu)
res = XlsLst(liUsa, coAcmExiVu, vuPerExiVcm)
res = XlsLst(liUsa, coAcmExiVt, vuPerExiVt)
end sub


Sub Com_Xls_LstLinPer 'listar linha - periodo
res = XlsLst(liUsa, coPerExiQu, vuPerExiQu)              'existencia - quantidade
res = XlsLst(liUsa, coPerExiVu, vuPerExiVu)              'existencia - valor unitario
'res = XlsLst(liUsa, coPerExiVt, vuPerExiVt)              'existencia - valor total
res = XlsLst(liUsa, coPerExiVt, vuPerExiVcm)             'existencia - valor total/VCM

res = XlsLst(liUsa, coPerEntQu, vuPerEntQu)              'entradas - quantidade
res = XlsLst(liUsa, coPerEntVu, vuPerEntVu)              'entradas - valor unitario
res = XlsLst(liUsa, coPerEntVt, vuPerEntVt)              'entradas - valor total

res = XlsLst(liUsa, coPerSaiQu, vuPerSaiQu)              'saidas - quantidade
res = XlsLst(liUsa, coPerSaiVu, vuPerSaiVu)              'saidas - valor unitario
res = XlsLst(liUsa, coPerSaiVt, vuPerSaiVt)              'saidas - valor total

res = XlsLst(liUsa, coPerCmpQu, vuPerCmpQu)              'compras - quantidade
res = XlsLst(liUsa, coPerCmpVu, vuPerCmpVu)              'compras - valor unitario
res = XlsLst(liUsa, coPerCmpVt, vuPerCmpVt)              'compras - valor total

res = XlsLst(liUsa, coPerVndQu, vuPerVndQu)              'vendas - quantidade
res = XlsLst(liUsa, coPerVndVu, vuPerVndVu)              'vendas - valor unitario
res = XlsLst(liUsa, coPerVndVt, vuPerVndVt)              'vendas - valor total

res = XlsLst(liUsa, coPerCuvVu, vuPerCuvVu)              'custo-vendas - valor unitario
res = XlsLst(liUsa, coPerCuvVt, vuPerCuvVt)              'custo-vendas - valor total

res = XlsLst(liUsa, coPerMrvVu, vuPerMrvVu)              'margem-vendas - valor unitario
res = XlsLst(liUsa, coPerMrvVt, vuPerMrvVt)              'margem-vendas - valor total

res = XlsLst(liUsa, coPerTraEntQu, vuPerTraEntQu)        'TR.Arz/entradas - quantidade
res = XlsLst(liUsa, coPerTraSaiQu, vuPerTraSaiQu)        'TR.Arz/saidas   - quantidade
end sub


Sub Com_Xls_LstLinAcm 'listar linha - acumulado
res = XlsLst(liUsa, coAcmExiQu, vuAcmExiQu)              'existencia - quantidade
res = XlsLst(liUsa, coAcmExiVu, vuAcmExiVu)              'existencia - valor unitario
'res = XlsLst(liUsa, coAcmExiVt, vuAcmExiVt)              'existencia - valor total
res = XlsLst(liUsa, coAcmExiVt, vuAcmExiVcm)             'existencia - valor total/VCM

res = XlsLst(liUsa, coAcmEntQu, vuAcmEntQu)              'entradas - quantidade
res = XlsLst(liUsa, coAcmEntVu, vuAcmEntVu)              'entradas - valor unitario
res = XlsLst(liUsa, coAcmEntVt, vuAcmEntVt)              'entradas - valor total

res = XlsLst(liUsa, coAcmSaiQu, vuAcmSaiQu)              'saidas - quantidade
res = XlsLst(liUsa, coAcmSaiVu, vuAcmSaiVu)              'saidas - valor unitario
res = XlsLst(liUsa, coAcmSaiVt, vuAcmSaiVt)              'saidas - valor total

res = XlsLst(liUsa, coAcmCmpQu, vuAcmCmpQu)              'compras - quantidade
res = XlsLst(liUsa, coAcmCmpVu, vuAcmCmpVu)              'compras - valor unitario
res = XlsLst(liUsa, coAcmCmpVt, vuAcmCmpVt)              'compras - valor total

res = XlsLst(liUsa, coAcmVndQu, vuAcmVndQu)              'vendas - quantidade
res = XlsLst(liUsa, coAcmVndVu, vuAcmVndVu)              'vendas - valor unitario
res = XlsLst(liUsa, coAcmVndVt, vuAcmVndVt)              'vendas - valor total

res = XlsLst(liUsa, coAcmCuvVu, vuAcmCuvVu)              'custo-vendas - valor unitario
res = XlsLst(liUsa, coAcmCuvVt, vuAcmCuvVt)              'custo-vendas - valor total

res = XlsLst(liUsa, coAcmMrvVu, vuAcmMrvVu)              'margem-vendas - valor unitario
res = XlsLst(liUsa, coAcmMrvVt, vuAcmMrvVt)              'margem-vendas - valor total

res = XlsLst(liUsa, coAcmTraEntQu, vuAcmTraEntQu)        'TR.Arz/entradas - quantidade
res = XlsLst(liUsa, coAcmTraSaiQu, vuAcmTraSaiQu)        'TR.Arz/saidas   - quantidade
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

call Com_Xls_LstAcm_Per                            'listar acumuladores - periodo
call Com_Xls_LstAcm_Acm                            'listar acumuladores - acumulados
end sub


Sub Com_Xls_LstAcm_Per 'listar acumuladores - periodo
res = XlsLst(liUsa, coPerExiQu, acPerExiQu)              'existencia - quantidade
res = XlsLst(liUsa, coPerExiVt, acPerExiVt)              'existencia - valor total

res = XlsLst(liUsa, coPerEntQu, acPerEntQu)              'entradas - quantidade
res = XlsLst(liUsa, coPerEntVt, acPerEntVt)              'entradas - valor total

res = XlsLst(liUsa, coPerSaiQu, acPerSaiQu)              'saidas - quantidade
res = XlsLst(liUsa, coPerSaiVt, acPerSaiVt)              'saidas - valor total

res = XlsLst(liUsa, coPerCmpQu, acPerCmpQu)              'compras - quantidade
res = XlsLst(liUsa, coPerCmpVt, acPerCmpVt)              'compras - valor total

res = XlsLst(liUsa, coPerVndQu, acPerVndQu)              'vendas - quantidade
res = XlsLst(liUsa, coPerVndVt, acPerVndVt)              'vendas - valor total

'res = XlsLst(liUsa, coPerCuvVu, acPerCuvVu)              'custo-vendas - valor unitario
res = XlsLst(liUsa, coPerCuvVt, acPerCuvVt)              'custo-vendas - valor total

'res = XlsLst(liUsa, coPerMrvVu, acPerMrvVu)              'margem-vendas - valor unitario
res = XlsLst(liUsa, coPerMrvVt, acPerMrvVt)              'margem-vendas - valor total

res = XlsLst(liUsa, coPerTraEntQu, acPerTraEntQu)        'TR.Arz/entradas - quantidade
res = XlsLst(liUsa, coPerTraSaiQu, acPerTraSaiQu)        'TR.Arz/saidas   - quantidade
end sub


Sub Com_Xls_LstAcm_Acm 'listar acumuladores - acumulados
res = XlsLst(liUsa, coAcmExiQu, acAcmExiQu)              'existencia - quantidade
res = XlsLst(liUsa, coAcmExiVt, acAcmExiVt)              'existencia - valor total

res = XlsLst(liUsa, coAcmEntQu, acAcmEntQu)              'entradas - quantidade
res = XlsLst(liUsa, coAcmEntVt, acAcmEntVt)              'entradas - valor total

res = XlsLst(liUsa, coAcmSaiQu, acAcmSaiQu)              'saidas - quantidade
res = XlsLst(liUsa, coAcmSaiVt, acAcmSaiVt)              'saidas - valor total

res = XlsLst(liUsa, coAcmCmpQu, acAcmCmpQu)              'compras - quantidade
res = XlsLst(liUsa, coAcmCmpVt, acAcmCmpVt)              'compras - valor total

res = XlsLst(liUsa, coAcmVndQu, acAcmVndQu)              'vendas - quantidade
res = XlsLst(liUsa, coAcmVndVt, acAcmVndVt)              'vendas - valor total

'res = XlsLst(liUsa, coAcmCuvVu, acAcmCuvVu)              'custo-vendas - valor unitario
res = XlsLst(liUsa, coAcmCuvVt, acAcmCuvVt)              'custo-vendas - valor total

'res = XlsLst(liUsa, coAcmMrvVu, acAcmMrvVu)              'margem-vendas - valor unitario
res = XlsLst(liUsa, coAcmMrvVt, acAcmMrvVt)              'margem-vendas - valor total

res = XlsLst(liUsa, coAcmTraEntQu, acAcmTraEntQu)        'TR.Arz/entradas - quantidade
res = XlsLst(liUsa, coAcmTraSaiQu, acAcmTraSaiQu)        'TR.Arz/saidas   - 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] - AcpArt - Por artigo ------------------------------------------------
'==============================================================================
Sub XlsAcpArt_DocIni 'inicializar documento
comXlsFic$ = "StcAcpRes.xls"                       'nome do ficheiro
comCabTit$ = "Acumulados por Periodo - Artigo"     'titulo

call Com_Xls_DocIni                                'inicializar documento
acmUsaZer  = 1                                     'acumular armazem zero
acmUsaVcm  = 0                                     'nao usar custo medio
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] - AcpArz - Por artigo/armazem ----------------------------------------
'==============================================================================
Sub XlsAcpArz_DocIni 'inicializar documento
comXlsFic$ = "StcAcpRes.xls"                             'nome do ficheiro
comCabTit$ = "Acumulados por Periodo - Artigo/Armazem"   'titulo

call Com_Xls_DocIni                                'inicializar documento
acmUsaZer  = 0                                     'nao acumular armazem zero
acmUsaVcm  = 0                                     'nao usar custo medio
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
##

