'Nome       : EncRepStc.sql
'Tipo       : LST
'Data       : 2009/01/18
'Versao     : 1.0
'Descricao  : Listagens de Reposicao de Stock

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0  2009/??/?? ---------------------------------------------------
'Versao Base


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
Zoom para preview             [PrvZoom]=1.5
Opcoes para impressora WIN   [PrWinOpc]=[ORI=P]
##



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


'= reposicao ==================================================================
Reposicao por artigo   [Cmd]=RepArt=+
   +SELECT * FROM {TB_EncRpsArt} +
   +WHERE RecSit$ = 'ACT' +
   +AND   Art$   BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}' +
   +AND   DtRep$ BETWEEN '{Opc_Dtr.Ini}' AND '{Opc_Dtr.Fim}' +
   +AND   QuPen  BETWEEN  {Opc_Qpe.Ini}  AND  {Opc_Qpe.Fim}  +
   +AND   QuRep  BETWEEN  {Opc_Qre.Ini}  AND  {Opc_Qre.Fim}  +
   +AND   QuRep  > 0 +
   +ORDER BY Art$


Reposicao por localizacao [Cmd]=RepLoc=+
   +SELECT * FROM {TB_EncRpsArt} +
   +WHERE RecSit$ = 'ACT' +
   +AND   Art$   BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}' +
   +AND   DtRep$ BETWEEN '{Opc_Dtr.Ini}' AND '{Opc_Dtr.Fim}' +
   +AND   QuPen  BETWEEN  {Opc_Qpe.Ini}  AND  {Opc_Qpe.Fim}  +
   +AND   QuRep  BETWEEN  {Opc_Qre.Ini}  AND  {Opc_Qre.Fim}  +
   +AND   Loc$   BETWEEN '{Opc_Div.Ini}' AND '{Opc_Div.Fim}' +
   +AND   QuRep  > 0 +
   +ORDER BY Loc$,Art$


'= tabelas auxiliares =========================================================

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=RepArtXls,Reposicao 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
Opcao especifica           [DocEsp]=OpcEsp=???

'funcoes de listagem
Base para documento         [FxDOC]=RepArtXls
Listar cabecalho            [FxCAB]=RepArtXls_Cab
Listar linhas               [FxLIN]=RepArtXls_Lin, 0
Listar fim                  [FxFIM]=RepArtXls_Fim

Matriz auxiliar            [DocMat]=EncRepStc.xls

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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=RepLocXls,Reposicao por Localização (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
Opcao especifica           [DocEsp]=OpcEsp=???

'funcoes de listagem
Base para documento         [FxDOC]=RepLocXls
Listar cabecalho            [FxCAB]=RepLocXls_Cab
Listar linhas               [FxLIN]=RepLocXls_Lin, 0
Listar fim                  [FxFIM]=RepLocXls_Fim

Matriz auxiliar            [DocMat]=EncRepStc.xls

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=RepLoc
'Subtotalizadores           [SQLSbt]=Loc$
Subtotalizadores           [SQLSbt]=
##


'==============================================================================
#VAR - Variaveis
'==============================================================================
Tipo     = MemTxt$(1)
Pag      = Doc_CntPag
DataExt  = FrmVal$(Sig_DtHoje,45,0)


'Campos
vNrg  = FrmNum$(5.0, cntReg)                                'numero do registo

'registo
vExiQua   = FrmNum$(11.2, RegQdi)                           'existencia
vConQua   = FrmNum$(11.2, RegQco)                           'consumo
vRepQua   = FrmNum$(11.2, RegQlo)                           'reposicao

##


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


Sub FxIni 'funcao de inicializacao
cnt=0                                              'limpar contador
end sub


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


Sub Lst_AJT 'ajuste
'nada a executar
'MsgBox "", "TIT", "MSG"
end sub


'==============================================================================
'= COM = Funcoes comuns =======================================================
'==============================================================================
Sub VarRegPrp 'preparar valores do registo
regIdr  = SqlCmp("RecIde")                'IDR
regIur$ = SqlCmp$("RecIur$")              'IUR
regSit$ = SqlCmp$("RecSit$")              'situacao
regDts$ = SqlCmp$("RecDts$")              'data da situacao
regDtr$ = SqlCmp$("OdaDtr$")              'data de registo
regOpc$ = SqlCmp$("DivOpc$")              'campos opcionais

regArt$ = SqlCmp$("Art$")                 'artigo
regDtr$ = SqlCmp$("DtRep$")               'data de reposicao
regQco  = SqlCmp("QuCon")                 'quantidade consumida
regQpe  = SqlCmp("QuPen")                 'quantidade pendente
regQrp  = SqlCmp("QuRep")                 'quantidade de reposicao

'valores calculados
regDtRep$ = left$(regDtr$, 10)            'data de reposicao

'valores para listar/acumular
vArtCod$ = StcCodFrm$(regArt$)            'artigo
vArtNom$ = StcArtIde$("N1", regArt$)      'nome
vArtLoc$ = STC_MST_LOC$                   'localizacao

vRepDtr$ = regDtRep$                      'reposicao - data

vExiQua  = StcArtCon(regArt$, "EXI_Q")    'quantidade de existencia
vConQua  = regQco                         'consumo
vPenQua  = regQpe                         'pendente
vRepQua  = regQrp                         'quantidade de reposicao

vObsDiv$ = ""                             'observacoes

if vExiQua < regQrp then                  'quantidade insuficiente ?
   vObsDiv$ = "Existência insuficiente"   'observacoes
end if
end sub


Sub VarRegAcm 'acumular valores do registo
res = AcmExe("vExiQua", vExiQua)          'quantidade de existencia
res = AcmExe("vRepQua", vRepQua)          'quantidade de reposicao
res = AcmExe("vConQua", vConQua)          'consumo
end sub


'==============================================================================
'= LST - Listar ===============================================================
'==============================================================================


'==============================================================================
'= Listagem para EXCEL ========================================================
'==============================================================================
'------------------------------------------------------------------------------
'- RepArt - Reposicao por Artigo ----------------------------------------------
'------------------------------------------------------------------------------
Sub RepArtXls_DocIni 'inicializar documento
xlsOpcNfi$ = "RND:EncRepArt.xls"                   'nome do ficheiro a gerar
xlsOpcWks$ = ""                                    'nome da woorksheet

call RepXls_DocIni                                 'inicializar documento
end sub


Sub RepArtXls_DocFim 'terminar documento
call RepXls_DocFim                                 'terminar documento
end sub


Sub RepArtXls_LinTit1 'titulo 1
call RepXls_LinTit1                                'titulo 1
end sub


Sub RepArtXls_Lin 'linha de valores
call RepXls_Lin                                    'linha de valores
end sub


Sub RepArtXls_LinSbt1 'subtotal 1
call RepXls_LinSbt1                                'subtotal 1
end sub


Sub RepArtXls_LinSep 'linha de separacao
call RepXls_IncLin                                 'incrementar linha
end sub


Sub RepArtXls_Fim 'terminar
call RepXls_Fim                                    'terminar
end sub


'------------------------------------------------------------------------------
'- RepLoc - Reposicao por localizacao -----------------------------------------
'------------------------------------------------------------------------------
Sub RepLocXls_DocIni 'inicializar documento
xlsOpcNfi$ = "RND:EncLotCon.xls"                   'nome do ficheiro a gerar
xlsOpcWks$ = ""                                    'nome da woorksheet

call RepXls_DocIni                                 'inicializar documento
end sub


Sub RepLocXls_DocFim 'terminar documento
call RepXls_DocFim                                 'terminar documento
end sub


Sub RepLocXls_LinTit1 'titulo 1
call RepXls_LinTit1                                'titulo 1
end sub


Sub RepLocXls_Lin 'linha de valores
call RepXls_Lin                                    'linha de valores
end sub


Sub RepLocXls_LinSbt1 'subtotal 1
call RepXls_LinSbt1                                'subtotal 1
end sub


Sub RepLocXls_LinSep 'linha de separacao
call RepXls_IncLin                                 'incrementar linha
end sub


Sub RepLocXls_Fim 'terminar
call RepXls_Fim                                    'terminar
end sub


'------------------------------------------------------------------------------
'- COM - Funcoes comuns -------------------------------------------------------
'------------------------------------------------------------------------------
Sub RepXls_DocIni 'inicializar documento
'msgbox "","DocIni"

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$ = MemTxt$(1)                               'titulo da listagem
lstDt$  = FrmDt$("EXT", Sig_DtHoje)                'data para listagem

'msgbox "","Tit",lstTit$

'ide$    = Memtxt$(1)                               'identificacao
ide$    = VarCom$("IdeTit")                        'identificacao
tpe$    = VarCom$("IdeTpe")                        'tipo de entidade
ideCab$ = ide$ + " - " + tpe$                      'identificacao de cabecalho

res = XlsIdeLst("Emp_Num", empNum$)                'numero da empresa
res = XlsIdeLst("Emp_Nom", empNom$)                'nome da empresa
res = XlsIdeLst("Lst_Tit", lstTit$)                'titulo da listagem
res = XlsIdeLst("Lst_Data", lstDt$)                'data

call XlsComLin_Ini                                 'iniciar linhas

'definicao das colunas
coArtCod = 2                                       'artigo
coArtNom = 3                                       'nome
coArtLoc = 4                                       'localizacao

coRepDtr = 5                                       'data de reposicao

coExiQua = 6                                       'existencia
coConQua = 7                                       'consumo
coRepQua = 8                                       'reposicao

coObsDiv = 9                                       'observacoes

'subtotalizadores
sbtExiQua = 0                                      'existencia
sbtConQua = 0                                      'consumo
sbtRepQua = 0                                      'reposicao

'totalizadores
totExiQua = 0                                      'existencia
totConQua = 0                                      'consumo
totRepQua = 0                                      'reposicao
end sub


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


Sub RepXls_IncLin 'incrementar linha
call XlsComLin_IncRep                              'incrementar linha + repor formato normal

zon$ = XlsZon$(liUsa, coArtNom)                    'zona
res = XlsAli(zon$, "4")                            'alinhamento
end sub


Sub RepXls_LinTit1 'titulo 1
grp$    = SbtInf$("ACT",1)                         'grupo
ideGrp$ = "Artigo : " +grp$                        'identificacao do grupo

call RepXls_IncLin                                 'incrementar linha

res = XlsLst(liUsa, coArtNom, ideGrp$)             'identificacao de grupo
call XlsComLin_ActB                                'activar linha em BOLD
end sub


Sub RepXls_LinSbt1 'subtotal 1
call RepXls_LinSbt                                 'subtotal de grupo
x = TotLpz(1)                                      'limpar totais
end sub


Sub RepXls_Lin 'linha de valores
call RepXls_IncLin                                 'incrementar linha

call VarRegPrp                                     'preparar valores
call VarRegAcm                                     'acumular valores

'listar
xRepDtr$ = "'" + vRepDtr$                          'data de reposicao

res = XlsLst(liUsa, coArtCod, vArtCod$)            'artigo
res = XlsLst(liUsa, coArtNom, vArtNom$)            'nome
res = XlsLst(liUsa, coArtLoc, vArtLoc$)            'localizacao

res = XlsLst(liUsa, coRepDtr, xRepDtr$)            'reposicao - data

res = XlsLst(liUsa, coExiQua, vExiQua)             'existencia
res = XlsLst(liUsa, coConQua, vConQua)             'consumo
res = XlsLst(liUsa, coRepQua, vRepQua)             'reposicao

res = XlsLst(liUsa, coObsDiv, vObsDiv$)            'observacoes
end sub


Sub RepXls_LinSbt 'subtotal de grupo
call RepXls_IncLin                                 'incrementar linha

vIde$     = "Subtotal"                             'identificacao

'listar
sbtNrg    = TotCnt("vRepQua", 1)                   'numero de registos
sbtExiQua = Total("vExiQua", 1)                    'subtotal de existencia
sbtConQua = Total("vConQua", 1)                    'subtotal de consumo
sbtRepQua = Total("vRepQua", 1)                    'subtotal de reposicao

res = XlsLst(liUsa, coArtNom, vIde$)               'identificacao
res = XlsLst(liUsa, coArtLoc, sbtNrg)              'numero de registos
res = XlsLst(liUsa, coExiQua, sbtExiQua)           'existencia
res = XlsLst(liUsa, coConQua, sbtConQua)           'consumo
res = XlsLst(liUsa, coRepQua, sbtRepQua)           'quantidade

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
zon$ = XlsZon$(liUsa, coArtNom)                    'zona
res = XlsAli(zon$, "5")                            'alinhamento

call RepXls_IncLin                                 'incrementar linha
x = TotLpz(1)                                      'limpar totais
end sub


Sub RepXls_LinSep 'linha de separacao
call RepXls_IncLin                                 'incrementar linha
end sub


'- Terminar/Totais ------------------------------------------------------------
Sub RepXls_Fim 'terminar
call XlsComLin_Fim                                 'fim de linhas

ltoUsa = LinFim                                    'linha para totais
liUsa  = ltoUsa                                    'linha a usar

totNrg    = TotCnt("vRepQua", 0)                   'numero de registos
totExiQua = Total("vExiQua", 0)                    'total de existencia
totConQua = Total("vConQua", 0)                    'total de consumo
totRepQua = Total("vRepQua", 0)                    'total de reposicao

res = XlsLst(liUsa, coArtLoc, totNrg)              'numero de registos
res = XlsLst(liUsa, coExiQua, totExiQua)           'existencia
res = XlsLst(liUsa, coConQua, totConQua)           'consumo
res = XlsLst(liUsa, coRepQua, totRepQua)           'reposicao
end sub

##


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


