'Nome       : StcTra.sql
'Tipo       : SQL
'Data       : 2016/05/13
'Versao     : 1.0
'Descricao  : STC - Transferencias de armazem

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


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
##


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


'------------------------------------------------------------------------------
'- Movimentos -----------------------------------------------------------------
'------------------------------------------------------------------------------
Gerar registos      [Cmd]=TraMov=+
   +SELECT MOV.* +
   +FROM {TB_StcMst} AS ART +
   +LEFT JOIN StcMov{Ano} AS MOV +
   +ON   ART.Art$ = MOV.Art$ +
   +WHERE MOV.RecVal <> 255 +
   +AND   Cmv IN(-17, 17) +
   +AND   Tdoc$      BETWEEN '{Opc_Tdoc.Ini}'  AND '{Opc_Tdoc.Fim}' +
   +AND   Ndoc$      BETWEEN '{Opc_Ndoc.Ini}'  AND '{Opc_Ndoc.Fim}' +
   +AND   MOV.Art$   BETWEEN '{Opc_Art.Ini}'   AND '{Opc_Art.Fim}' +
   +AND   Dtl        BETWEEN  {Opc_Dtl.Ini}    AND  {Opc_Dtl.Fim} +
   +AND   ArzEnt     BETWEEN  {Opc_ArzEnt.Ini} AND  {Opc_ArzEnt.Fim} +
   +AND   ArzSai     BETWEEN  {Opc_ArzSai.Ini} AND  {Opc_ArzSai.Fim} +
   +ORDER BY MOV.Art$, Dtl, Tdoc$, Ndoc$


'------------------------------------------------------------------------------
'- Resumo/entrada -------------------------------------------------------------
'------------------------------------------------------------------------------
Gerar registos      [Cmd]=TraResEnt=+
   +SELECT MOV.Art$ AS ART, MOV.ArzEnt AS AZE, MOV.ArzSai AS AZS, SUM(MOV.QU) AS RQU, SUM(MOV.VT) AS RVT +
   +FROM {TB_StcMst} AS ART +
   +LEFT JOIN StcMov{Ano} AS MOV +
   +ON   ART.Art$ = MOV.Art$ +
   +WHERE MOV.RecVal <> 255 +
   +AND   Cmv IN(-17, 17) +
   +AND   Tdoc$      BETWEEN '{Opc_Tdoc.Ini}'  AND '{Opc_Tdoc.Fim}' +
   +AND   Ndoc$      BETWEEN '{Opc_Ndoc.Ini}'  AND '{Opc_Ndoc.Fim}' +
   +AND   MOV.Art$   BETWEEN '{Opc_Art.Ini}'   AND '{Opc_Art.Fim}' +
   +AND   Dtl        BETWEEN  {Opc_Dtl.Ini}    AND  {Opc_Dtl.Fim} +
   +AND   ArzEnt     BETWEEN  {Opc_ArzEnt.Ini} AND  {Opc_ArzEnt.Fim} +
   +AND   ArzSai     BETWEEN  {Opc_ArzSai.Ini} AND  {Opc_ArzSai.Fim} +
   +GROUP BY MOV.Art$, ArzEnt, ArzSai +
   +ORDER BY MOV.Art$, ArzEnt, ArzSai


'------------------------------------------------------------------------------
'- Resumo/saida ---------------------------------------------------------------
'------------------------------------------------------------------------------
Gerar registos      [Cmd]=TraResSai=+
   +SELECT MOV.Art$ AS ART, MOV.ArzEnt AS AZE, MOV.ArzSai AS AZS, SUM(MOV.QU) AS RQU, SUM(MOV.VT) AS RVT +
   +FROM {TB_StcMst} AS ART +
   +LEFT JOIN StcMov{Ano} AS MOV +
   +ON   ART.Art$ = MOV.Art$ +
   +WHERE MOV.RecVal <> 255 +
   +AND   Cmv IN(-17, 17) +
   +AND   Tdoc$      BETWEEN '{Opc_Tdoc.Ini}'  AND '{Opc_Tdoc.Fim}' +
   +AND   Ndoc$      BETWEEN '{Opc_Ndoc.Ini}'  AND '{Opc_Ndoc.Fim}' +
   +AND   MOV.Art$   BETWEEN '{Opc_Art.Ini}'   AND '{Opc_Art.Fim}' +
   +AND   Dtl        BETWEEN  {Opc_Dtl.Ini}    AND  {Opc_Dtl.Fim} +
   +AND   ArzEnt     BETWEEN  {Opc_ArzEnt.Ini} AND  {Opc_ArzEnt.Fim} +
   +AND   ArzSai     BETWEEN  {Opc_ArzSai.Ini} AND  {Opc_ArzSai.Fim} +
   +GROUP BY MOV.Art$, ArzSai, ArzEnt +
   +ORDER BY MOV.Art$, ArzSai, ArzEnt

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=XlsMovArt,XLS - Movimentos/Artigo

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

'funcoes de listagem
Base para documento         [FxDOC]=XlsMovArt
Listar cabecalho            [FxCAB]=XlsMovArt_Cab
Listar linhas               [FxLIN]=XlsMovArt_Lin
Listar fim                  [FxFIM]=XlsMovArt_Fim

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

Matriz auxiliar            [DocMat]=StcTra.xls
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=XlsResEntArt,XLS - Resumo - Entrada/Artigo

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

'funcoes de listagem
Base para documento         [FxDOC]=XlsResEntArt
Listar cabecalho            [FxCAB]=XlsResEntArt_Cab
Listar linhas               [FxLIN]=XlsResEntArt_Lin
Listar fim                  [FxFIM]=XlsResEntArt_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=TraResEnt
Subtotalizadores           [SQLSbt]=ART,AZE

Matriz auxiliar            [DocMat]=StcTra.xls
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=XlsResSaiArt,XLS - Resumo - Saída/Artigo

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

'funcoes de listagem
Base para documento         [FxDOC]=XlsResSaiArt
Listar cabecalho            [FxCAB]=XlsResSaiArt_Cab
Listar linhas               [FxLIN]=XlsResSaiArt_Lin
Listar fim                  [FxFIM]=XlsResSaiArt_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=TraResSai
Subtotalizadores           [SQLSbt]=ART,AZS

Matriz auxiliar            [DocMat]=StcTra.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 -------------------------------------------------------------
vaObs    = vuObs$                               'observacaoes

'documento
vaMovTdo = vuMovTdo$                            'tipo de documento
vaMovNdo = vuMovNdo$                            'numero de documento
vaMovDoc = vuMovDoc$                            'documento
vaMovDtl = FrmDt$("",vuDocDtl)                  'data

'artigo
vaArtCod = vuArtCod$                            'codigo
vaArtCov = vuArtCov$                            'codigo formatado
vaArtNom = vuArtNom$                            'nome

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

'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
s3Nrg    = FrmNum$(9.0,TotCnt("vaArtCov",3))    'numero de registos - subtotal 3
s4Nrg    = FrmNum$(9.0,TotCnt("vaArtCov",4))    'numero de registos - subtotal 4

'- armazem de entrada ---------------------------------------------------------
vaAze    = FrmNum$(4,vuAzeCod)                  'codigo - espaco reduzido
vaAzeCod = vuAzeCod$                            'codigo
vaAzeCov = vuAzeCov$                            'codigo formatado
vaAzeNom = vuAzeNom$                            'nome

'- armazem de saida -----------------------------------------------------------
vaAzs    = FrmNum$(4,vuAzsCod)                  'codigo - espaco reduzido
vaAzsCod = vuAzsCod$                            'codigo
vaAzsCov = vuAzsCov$                            'codigo formatado
vaAzsNom = vuAzsNom$                            'nome

'- valores --------------------------------------------------------------------
vaMovQua = FrmNum$(6.3,vuMovQua)                'quantidade
toMovQua = FrmNum$(6.3,Total("vaMovQua",0))     'quantidade - total
s1MovQua = FrmNum$(6.3,Total("vaMovQua",1))     'quantidade - subtotal 1
s2MovQua = FrmNum$(6.3,Total("vaMovQua",2))     'quantidade - subtotal 2
s3MovQua = FrmNum$(6.3,Total("vaMovQua",3))     'quantidade - subtotal 3
s4MovQua = FrmNum$(6.3,Total("vaMovQua",4))     'quantidade - subtotal 4

vaMovVto = FrmNum$(12.2,vuMovVto)               'valor
toMovVto = FrmNum$(12.2,Total("vaMovVto",0))    'valor - total
s1MovVto = FrmNum$(12.2,Total("vaMovVto",1))    'valor - subtotal 1
s2MovVto = FrmNum$(12.2,Total("vaMovVto",2))    'valor - subtotal 2
s3MovVto = FrmNum$(12.2,Total("vaMovVto",3))    'valor - subtotal 3
s4MovVto = FrmNum$(12.2,Total("vaMovVto",4))    'valor - subtotal 4

##


'==============================================================================
#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 ---------------------------------------------------------------------
'=============================================================================
'-----------------------------------------------------------------------------
'- [VAR] - Variaveis ---------------------------------------------------------
'-----------------------------------------------------------------------------
Sub Com_Var_Con 'consultar variaveis
vuDocTdo$ = SqlCmp$("MOV.TDOC$")                   'tipo de documento
vuDocNdo$ = SqlCmp$("MOV.NDOC$")                   'numero de documento
vuDocDtl  = SqlCmp("MOV.DTL")                      'data do documento

vuArtCod$ = SqlCmp$("MOV.ART$")                    'artigo

vuMovQua  = SqlCmp("QU")                           'quantidade
vuMovVto  = SqlCmp("VT")                           'valor total
vuMovUni  = vuMovVto / vuMovQua                    'valor unitario

vuAzeCod  = SqlCmp("MOV.ARZENT")                   'armazem - entrada
vuAzsCod  = SqlCmp("MOV.ARZSAI")                   'armazem - saida

vuMovTdo$ = vuDocTdo$                              'tipo de documento
vuMovNdo$ = FrmNdo$("46", vuDocTdo$, vuDocNdo$)    'numero de documento
vuMovDoc$ = vuMovTdo$ + " " + vuMovNdo$            'documento
end sub


Sub Com_Var_Prp 'preparar variaveis
vuObs$ = ""                                        'anular observacoes
call Com_Var_Con                                   'consultar variaveis

'preparar valores
call Com_Var_PrpArt                                'preparar variaveis - artigo
call Com_Var_PrpAze                                'preparar variaveis - armazem/entrada
call Com_Var_PrpAzs                                'preparar variaveis - armazem/saida
call Com_Var_PrpDoc                                'preparar variaveis - documento
end sub


Sub Com_Var_Prp_Res 'preparar variaveis - resumo
vuArtCod$ = SqlCmp$("ART")                         'artigo

vuMovQua = SqlCmp("RQU")                           'quantidade
vuMovVto = SqlCmp("RVT")                           'valor total
vuMovUni = vuMovVto / vuMovQua                     'valor unitario

vuAzeCod = SqlCmp("AZE")                           'armazem/entrada
vuAzsCod = SqlCmp("AZS")                           'armazem/saida

vuObs$   = ""                                      'anular observacoes

'preparar valores
call Com_Var_PrpArt                                'preparar variaveis - artigo
call Com_Var_PrpAze                                'preparar variaveis - armazem/entrada
call Com_Var_PrpAzs                                'preparar variaveis - armazem/saida
end sub


Sub Com_Var_PrpArt 'preparar variaveis - artigo
res     = SqlOpcAct("Art.Cod",vuArtCod$)           'registar artigo
res     = SqlCalc("ARTNOM")                        'preparar nome do artigo

vuArtCov$ = StcCodFrm$(vuArtCod$)                  'codigo formatado
vuArtNom$ = SqlOpcCon$("NOME$")                    'nome
vuArtIde$ = vuArtCov$ + " - " + vuArtNom$          'identificacao
end sub


Sub Com_Var_PrpAze 'preparar variaveis - armazem/entrada
res       = SqlOpcAct("ARZ.COD", vuAzeCod)         'registar armazem
vuAzeNom$ = SqlCalc$("ARZNOM")                     'preparar nome do armazem

vuAzeCtx$ = TxtCv$(vuAzeCod)                       'codigo em texto
vuAzeCov$ = NumTxt$(vuAzeCod, 4)                   'codigo formatado
vuAzeIde$ = vuAzeCov$ + " - " + vuAzeNom$          'identificacao
end sub


Sub Com_Var_PrpAzs 'preparar variaveis - armazem/saida
res       = SqlOpcAct("ARZ.COD", vuAzsCod)         'registar armazem
vuAzsNom$ = SqlCalc$("ARZNOM")                     'preparar nome do armazem

vuAzsCtx$ = TxtCv$(vuAzsCod)                       'codigo em texto
vuAzsCov$ = NumTxt$(vuAzsCod, 4)                   'codigo formatado
vuAzsIde$ = vuAzsCov$ + " - " + vuAzsCov$          'identificacao
end sub


Sub Com_Var_PrpDoc 'preparar variaveis - documento
vuDocCov$ = vuMovDoc$                              'codigo formatado
vuDocIde$ = vuMovDoc$                              'identificacao
end sub


Sub Com_Var_Acm 'preparar variaveis - acumular
'- (52) ------------------------------------------>'Comentario
'acumular valores
res = AcmExe("vaArtCov", 1)                        'acumular - contagem

res = AcmExe("vaMovQua", vuMovQua)                 'acumular - quantidade
res = AcmExe("vaMovVto", vuMovVto)                 'acumular - valor
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

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

opcDoc$ = OpcCon$("OPC_Doc","DES")                 'opcao de documento
opcPer$ = OpcCon$("OPC_Dtl","DES")                 'opcao de periodo
opcArt$ = OpcCon$("OPC_Art","DES")                 'opcao de artigo
opcAze$ = OpcCon$("OPC_Aze","DES")                 'opcao de armazem de entrada
opcAzs$ = OpcCon$("OPC_Azs","DES")                 'opcao de armazem de saida

res = XlsIdeLst("OPC_Doc", opcDoc$)                'mostrar limite de documento
res = XlsIdeLst("OPC_Per", opcPer$)                'mostrar limite de periodo
res = XlsIdeLst("OPC_Art", opcArt$)                'mostrar limite de artigos
res = XlsIdeLst("OPC_Aze", opcAze$)                'mostrar limite de armazem de entrada
res = XlsIdeLst("OPC_Azs", opcAzs$)                'mostrar limite de armazem de saida

call XlsComLin_Ini                                 'iniciar linhas

'definicao das colunas
coIds    =  3                                      'identificqcao de subtotal
coNrg    =  4                                      'numero de registos

coArtCod =  2                                      'artigo - codigo
coArtNom =  3                                      'artigo - nome

coDocDtl =  4                                      'documento - data
coDocTdo =  5                                      'documento - tipo
coDocNdo =  6                                      'documento - numero

coAzeCod =  7                                      'armazem/entrada - codigo
coAzeNom =  8                                      'armazem/entrada - nome
coAzsCod =  9                                      'armazem/entrada - codigo
coAzsNom = 10                                      'armazem/entrada - nome

coMovQua = 11                                      'quantidade
coMovUni = 12                                      'valor unitario
coMovVto = 13                                      'valor total

coObs    = 14                                      'observacoes
end sub


Sub Com_Xls_DocFim 'terminar documento
call XlsComLin_Fim                                 'fim de linhas

'listar
liUsa = linFim                                     'linha a usar

'msgbox "","LST","TOT"

sbtNiv = 0                                         'nivel do subtotal
call Com_Xls_SbtAcm                                'subtotal - acumumulado
'call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO

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


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

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


Sub Com_Xls_LinSep 'linha de separacao
call XlsVnd_IncLin                                 'incrementar linha
end sub


Sub Com_Xls_LstLinArt 'listar linha - artigo
res = XlsLst(liUsa, coArtCod, vuArtCod$)           'codigo
res = XlsLst(liUsa, coArtNom, vuArtNom$)           'nome
end sub


Sub Com_Xls_LstLinDoc 'listar linha - documento
vtxDtl$ = FrmDt$("", vuDocDtl)                     'data

res = XlsLst(liUsa, coDocDtl, vtxDtl$)             'data do documento
res = XlsLst(liUsa, coDocTdo, vuMovTdo$)           'tipo de documento
res = XlsLst(liUsa, coDocNdo, vuMovNdo$)           'numero de documento
end sub


Sub Com_Xls_LstLinAze 'listar linha - armazem/entrada
res = XlsLst(liUsa, coAzeCod, vuAzeCov$)           'codigo
res = XlsLst(liUsa, coAzeNom, vuAzeNom$)           'nome
end sub


Sub Com_Xls_LstLinAzs 'listar linha - armazem/saida
res = XlsLst(liUsa, coAzsCod, vuAzsCov$)           'codigo
res = XlsLst(liUsa, coAzsNom, vuAzsNom$)           'nome
end sub


Sub Com_Xls_LstLinVlr 'listar linha - valores
res = XlsLst(liUsa, coMovQua, vuMovQua)            'quantidade
res = XlsLst(liUsa, coMovUni, vuMovUni)            'valor unitario
res = XlsLst(liUsa, coMovVto, vuMovVto)            'valor total
end sub


Sub Com_Xls_LstLinObs 'listar linha - observacoes
res = XlsLst(liUsa, coAObs, vuObs$)                'observacoes
end sub


Sub Com_Xls_LstLinMov 'listar linha - movimento
'listar valores
'- (52) ------------------------------------------>'Comentario
call Com_Xls_LstLinArt                             'listar linha - artigo
call Com_Xls_LstLinDoc                             'listar linha - documento
call Com_Xls_LstLinAze                             'listar linha - armazem/entrada
call Com_Xls_LstLinAzs                             'listar linha - armazem/entrada
call Com_Xls_LstLinVlr                             'listar linha - valores
call Com_Xls_LstLinObs                             'listar linha - observacoes

'acumular valores
call Com_Var_Acm                                   'preparar variaveis - acumular

'terminar
vuObs$ = ""                                        'limpar observacoes
end sub


Sub Com_Xls_SbtAcm 'subtotal - acumumulado
vNiv    = sbtNiv                                   'nivel do totalizador

vNrg    = TotCnt("vaArtCov", vNiv)                 'numero de registos
vMovQua = Total("vaMovQua", vNiv)                  'quantidade
vMovVto = Total("vaMovVto", vNiv)                  'valor total
vMovUni = vMovVto / vMovQua                        'valor unitario (medio)

'listar
res = XlsLst(liUsa, coNrg, vNrg)                   'numero de registos
res = XlsLst(liUsa, coMovQua, vMovQua)             'total quantidade
res = XlsLst(liUsa, coMovUni, vMovUni)             'total valor unitario (medio)
res = XlsLst(liUsa, coMovVto, vMovVto)             'total valor

x = TotLpz(vNiv)                                   'limpar totais
end sub


Sub Com_Xls_SbtAsp 'subtotal - aspecto
res = XlsLst(liUsa, coIds, ideSbt$)                'identificar subtotal

'zon$ = XlsZon$(liUsa, coNrg)                       'zona
'msgbox "","ALI/NRG",zon$

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO

zon$ = XlsZon$(liUsa, coIds, liUsa, coNrg)         'zona
res = XlsAli(zon$, "|")                            'alinhamento
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, coIds, titIde$)             'listar identificacao
end if

titIde$ = ""                                       'anular titulo
end sub


Sub Com_Xls_LinSbt1 'subtotal 1
sbtNiv = 1                                         'nivel do subtotal
vNrg   = TotCnt("vaArtCov", sbtNiv)                'numero de registos

'if vNrg > 1 then                                   'listar numero ?
   call Com_Xls_IncLin                             'incrementar linha	

   call Com_Xls_SbtAcm                             'subtotal - acumumulado
   call Com_Xls_SbtAsp                             'subtotal - aspecto
'end if

call Com_Xls_IncLin                                'incrementar linha	

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


'- grupo 2 -------------------------------------------------------------------
Sub Com_Xls_LinTit2 'titulo 2
titIde$ = ""                                       'anular titulo

if titIde$ <> "" then                              'ha titulo ?
   call Com_Xls_IncLin                             'incrementar linha	
   call XlsComLin_ActB                             'activar linha em BOLD

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

titIde$ = ""                                       'anular titulo
end sub


Sub Com_Xls_LinSbt2 'subtotal 2
sbtNiv = 2                                         'nivel do subtotal
vNrg   = TotCnt("vaArtCov", sbtNiv)                'numero de registos

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

   call Com_Xls_SbtAcm                             'subtotal - acumumulado
   call Com_Xls_SbtAsp                             'subtotal - aspecto
end if

sepSbt2 = 1                                        'separar subtotal 2
sepSbt2 = 0                                        'nao separar subtotal 2
if sepSbt2 = 1 then                                'separar subtotal 2 ?
   call Com_Xls_IncLin                             'incrementar linha	
end if

sepSbt2 = 0                                        'nao separar subtotal 2
x = TotLpz(2)                                      'limpar totais
ideSbt$ = ""                                       'limpar identificador de subtotal
end sub


'==============================================================================
'- [XLS] - Movimentos - Por artigo --------------------------------------------
'==============================================================================
Sub XlsMovArt_DocIni 'inicializar documento
comXlsFic$ = "StcTra.xls"                          'nome do ficheiro
'comCabTit$ = "Movimentos/Artigo"                   'titulo
comCabTit$ = "Trf. Armazém - Movimentos/Artigo"    'titulo

call Com_Xls_DocIni                                'inicializar documento
end sub


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


Sub XlsMovArt_Lin 'linha
call Com_Var_Prp                                   'preparar variaveis
call Com_Xls_IncLin                                'incrementar linha	

'listar
call Com_Xls_LstLinMov                             'listar movimento
end sub


Sub XlsMovArt_Fim 'terminar
call Com_Xls_LstTot                                'listar totais
end sub


Sub XlsMovArt_LinTit1 'titulo 1
call Com_Var_Con                                   'consultar variaveis
call Com_Var_PrpArt                                'preparar variaveis - artigo

titIde$ = vuArtIde$                                'titulo
call Com_Xls_LinTit1                               'listar
end sub


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


'==============================================================================
'- [XLS] - Resumo - Entrada ---------------------------------------------------
'==============================================================================
Sub XlsResEntArt_DocIni 'inicializar documento
comXlsFic$ = "StcTra.xls"                          'nome do ficheiro
'comCabTit$ = "Resumo/Entrada - Artigo"             'titulo
comCabTit$ = "Trf. Armazém - Resumo/Entrada - Artigo"    'titulo

call Com_Xls_DocIni                                'inicializar documento
end sub


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


Sub XlsResEntArt_Lin 'linha
call Com_Var_Prp_Res                               'preparar variaveis
call Com_Xls_IncLin                                'incrementar linha	

'listar
call Com_Xls_LstLinArt                             'listar linha - artigo
call Com_Xls_LstLinAze                             'listar linha - armazem/entrada
call Com_Xls_LstLinAzs                             'listar linha - armazem/saida
call Com_Xls_LstLinVlr                             'listar linha - valores
call Com_Xls_LstLinObs                             'listar linha - observacoes

'terminar
call Com_Var_Acm                                   'acumular
vuObs$ = ""                                        'limpar observacoes
end sub


Sub XlsResEntArt_Fim 'terminar
call Com_Xls_LstTot                                'listar totais
end sub


Sub XlsResEntArt_LinTit1 'titulo 1
call Com_Var_Prp_Res                               'preparar variaveis
call Com_Var_PrpArt                                'preparar variaveis - artigo

titIde$ = vuArtIde$                                'titulo
call Com_Xls_LinTit1                               'listar
end sub


Sub XlsResEntArt_LinSbt1 'subtotal 1
'msgbox "","RES","SBT/ART"

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


Sub XlsResEntArt_LinTit2 'titulo 2
call Com_Var_Prp_Res                               'preparar variaveis
'call Com_Var_PrpArt                                'preparar variaveis - artigo

titIde$ = vuAzeIde$                                'titulo
'call Com_Xls_LinTit2                               'listar
end sub


Sub XlsResEntArt_LinSbt2 'subtotal 2
ideSbt$ = "Subtotal do armazém (" + vuAzeCov$ + ")"      'identificacao de subtotal
call Com_Xls_LinSbt2                                     'listar
end sub


'==============================================================================
'- [XLS] - Resumo - Saida -----------------------------------------------------
'==============================================================================
Sub XlsResSaiArt_DocIni 'inicializar documento
comXlsFic$ = "StcTra.xls"                          'nome do ficheiro
'comCabTit$ = "Resumo/Saida - Artigo"               'titulo
comCabTit$ = "Trf. Armazém - Resumo/Saida - Artigo"      'titulo

call Com_Xls_DocIni                                'inicializar documento
end sub


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


Sub XlsResSaiArt_Lin 'linha
call Com_Var_Prp_Res                               'preparar variaveis
call Com_Xls_IncLin                                'incrementar linha	

'listar
call Com_Xls_LstLinArt                             'listar linha - artigo
call Com_Xls_LstLinAze                             'listar linha - armazem/entrada
call Com_Xls_LstLinAzs                             'listar linha - armazem/saida
call Com_Xls_LstLinVlr                             'listar linha - valores
call Com_Xls_LstLinObs                             'listar linha - observacoes

'terminar
call Com_Var_Acm                                   'acumular
vuObs$ = ""                                        'limpar observacoes
end sub


Sub XlsResSaiArt_Fim 'terminar
call Com_Xls_LstTot                                'listar totais
end sub


Sub XlsResSaiArt_LinTit1 'titulo 1
call Com_Var_Prp_Res                               'preparar variaveis
call Com_Var_PrpArt                                'preparar variaveis - artigo

titIde$ = vuArtIde$                                'titulo
call Com_Xls_LinTit1                               'listar
end sub


Sub XlsResSaiArt_LinSbt1 'subtotal 1
'msgbox "","RES","SBT/ART"

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


Sub XlsResSaiArt_LinTit2 'titulo 2
call Com_Var_Prp_Res                               'preparar variaveis
'call Com_Var_PrpArt                                'preparar variaveis - artigo

titIde$ = vuAzsIde$                                'titulo
'call Com_Xls_LinTit2                               'listar
end sub


Sub XlsResSaiArt_LinSbt2 'subtotal 2
ideSbt$ = "Subtotal do armazém (" + vuAzsCov$ + ")"      'identificacao de subtotal
call Com_Xls_LinSbt2                                     'listar
end sub

##


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