'Nome       : EncAgp.sql
'Tipo       : SQL
'Data       : 2012/11/13
'Versao     : 1.0a
'Descricao  : Artigos por grupo

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0a  2012/??/?? --------------------------------------------------
'Alterar querys para usar diario definido pelo programa
'Corrigir verificacao para entrada/saida no resumo de existencias

'- Versao : 1.0   2005/01/15 --------------------------------------------------
'Versao base


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


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


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

Artigos [Cmd]=AgpArt=+
+SELECT * FROM {TB_StcMst} +
+WHERE TpArt = 51 +
+ORDER BY art$


Registos de Vendas de um artigo  [Cmd]=AgpVnd=+
+SELECT EncMov.* +
+FROM EncMov INNER JOIN EncMst ON (EncMov.[Ndoc$] = EncMst.[Ndoc$]) AND (EncMov.[Tdoc$] = EncMst.[Tdoc$]) +
+WHERE EncMst.[Tdoc$] IN('{Opc_Tdoc}')  +
+AND EncMov.[Art$] = '{Agp.Art}' +
+AND EncMov.[Ct$] BETWEEN '{Opc_Ct.Ini}' AND '{Opc_Ct.Fim}' +
+AND EncMst.Vend {Opc_Vend.ListaNum} +
+AND EncMst.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim} +
+AND EncMov.TpRg=1 


Registos de Compras de um artigo  [Cmd]=AgpCmp=+
+SELECT EncMov.* +
+FROM EncMov INNER JOIN EncMst ON (EncMov.[Ndoc$] = EncMst.[Ndoc$]) AND (EncMov.[Tdoc$] = EncMst.[Tdoc$]) +
+WHERE EncMst.[Tdoc$]="C1" +
+AND EncMov.[Art$] = '{Agp.Art}' +
+AND EncMov.[Ct$] BETWEEN '{Opc_Ct.Ini}' AND '{Opc_Ct.Fim}' +
+AND EncMst.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim} +
+AND EncMov.TpRg=1 


Registos para existencia de um artigo  [Cmd]=AgpExi=+
+SELECT EncMov.* +
+FROM EncMov INNER JOIN EncMst ON (EncMov.[Ndoc$] = EncMst.[Ndoc$]) AND (EncMov.[Tdoc$] = EncMst.[Tdoc$]) +
+Where EncMov.[Art$] = '{Agp.Art}' +
+AND EncMst.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim} +
+AND EncMov.TpRg=1 

##

+AND EncMov.[Ndoc$] BETWEEN '{Opc_Ndoc.Ini}' AND '{Opc_Ndoc.Fim}' +


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=AgpVnd,Resumo de Movimentos

'formato
Saida/Impressora           [DocPrt]=
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
Listar cabecalho            [FxCAB]=AgpVnd_Cab
Listar linhas               [FxLIN]=AgpVnd_Lin
Listar fim                  [FxFIM]=AgpVnd_Fim

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


'==============================================================================
'#DOC - Configuracao do documento
'==============================================================================
'Tipo                       [DocTip]=SQL
'Nome                       [DocNom]=AgpCmp,Resumo de Compras

''formato
'Saida/Impressora           [DocPrt]=
'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
'Listar cabecalho            [FxCAB]=AgpCmp_Cab
'Listar linhas               [FxLIN]=AgpCmp_Lin
'Listar fim                  [FxFIM]=AgpCmp_Fim

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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=AgpExi,Resumo de Existência

'formato
Saida/Impressora           [DocPrt]=
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
Listar cabecalho            [FxCAB]=AgpExi_Cab
Listar linhas               [FxLIN]=AgpExi_Lin
Listar fim                  [FxFIM]=AgpExi_Fim

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


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


'artigo
artCod   = SqlCmp$("Art$")                         'codigo do artigo
artCov   = StcCodFrm$(SqlCmp$("Art$"))             'codigo do artigo formatado
artNom   = SqlCmp$("Nome1$")                       'nome do artigo

tdo      = SqlCmp$("tdoc$")                        'diario
ndo      = SqlCmp$("ndoc$")                        'numero

'quantidades
vArtQu   = FrmNum$(7.0,artRqu)                     'quantidades

sArtN    = FrmNum$(5.0,TotCnt("vArtQu", 1))        'numero de artigos
sArtQu   = FrmNum$(7.0,total(vArtQu, 1))           'quantidades

tArtN    = FrmNum$(5.0,TotCnt("vArtQu", 0))        'numero de artigos
tArtQu   = FrmNum$(7.0,total(vArtQu, 0))           'quantidades

##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)

Sub FxIni 'funcao de inicializacao
end sub


Sub FxFim 'funcao de finalizacao
end sub


Sub Lst_AJT 'ajuste
end sub


'- Resumo de Quantidades -------------------------------------------------------
Sub AgpRqu_Cab 'cabecalho
FxDiv LstIde,10CPI,0
'?@Tit080                                                                        #
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI", lstTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
?   Cor                  Quantidades por Tamanho                           Total
?================================================================================
end sub


Sub AgpRqu_Lin 'linha
call AgpRqu_LinAcm                                 'acumular
call AgpRqu_LinLst                                 'listar
end sub


Sub AgpRqu_LinAcm 'linha - acumular
art$= SqlCmp$("Art$")                              'artigo
res = SqlOpcAct("AGP.ART", art$)                   'registar artigo

res = AgpResPrp(art$)                              'preparar artigo

exi = SqlQryGer("", SqlRquIde$)                    'gerar lista de movimentos do artigo
while exi = 1
txo$ = SqlQryCmp$("","Opc$")                       'texto de campos opcionais
res = AgpResAcm(1, txo$)                           'acumular

exi = SqlQryRgs("")                                'registo seguinte
wend
end sub


Sub AgpRqu_LinLst 'linha - listar
txq$= AgpResCon$("")                               'consultar totais em texto
tqu = AgpResCon("")                                'consultar totais em numero

'listar artigo
artRqu = tqu                                       'total de quantidades
?@ArtCov              @ArtNom                                            @vArtQu#
'?@ArtCov              @ArtNom                                                   #


'listar quantidades
pqu = 18                                           'posicao da quantidade
pqt = 73                                           'posicao da quantidade total da linha
res = AgpAsp(">", "6;Z=P", "Total")                'formato de listagem
'res = AgpAsp(">", "6;Z=P", "")                     'formato de listagem
'res = AgpAsp(">", "6;Z=P", " ")                    'formato de listagem
nli = AgpPrp(art$, txq$, 0)                        'preparar valores

tmp=CntLin("INC",2)                                'contar linhas
tco$ = AgpLin$(0, "P")                             'titulos de colunas
print tab(7) "Tamanhos:";                          'listar identificacao da linha
print tab(pqu) tco$                                'listar titulos de colunas
print tab(5) string$(75,"=")                       'listar separacao

for li = 1 to nli
tmp=CntLin("INC",1)                                'contar linha
ide$ = AgpIde$(li)                                 'identificacao
txl$ = AgpLin$(li, "P")                            'quantidades parciais
tli$ = AgpLin$(li, "T")                            'total de quantidades da linha

print tab(05) ide$;                                'listar identificacao
print tab(pqu) txl$;                               'listar quantidades
print tab(pqt) tli$                                'listar quantidades da linha
next

'listar totais
if nli = 0 then                                    'sem movimento ?
   print tab(22) "Sem movimento"                   'listar informacao
   print tab(5) string$(75,"-")                    'listar separacao
   print                                           'separar

   tmp=CntLin("INC",3)                             'contar linha
else
   'tmp=CntLin("INC",1)                             'contar linha
   tot$ = AgpTot$("P")                             'total de quantidades parciais
   tli$ = AgpTot$("T")                             'total de quantidades da linha
   print tab(5) string$(75,"-")                    'listar separacao
   print tab(09) "Totais:";                        'listar identificacao
   print tab(pqu) tot$;                            'listar quantidades
   print tab(pqt) tli$                             'listar quantidades da linha
   print                                           'separar

   tmp=CntLin("INC",3)                             'contar linhas
end if
end sub


Sub AgpRqu_Fim 'fim de pagina
?================================================================================
?                      Totais: @tArtN                                    @tArtQu#
?================================================================================
FxDiv LstPer,SP
end sub



'- Resumo de Vendas ------------------------------------------------------------
Sub AgpVnd_Cab 'cabecalho
lstTit$ = "Resumo de Vendas"                       'titulo
call AgpRqu_Cab                                    'listar cabecalho

SqlRquIde$ = "AgpVnd"                              'identificador de comando SQL
end sub


Sub AgpVnd_Lin 'linha
call AgpRqu_Lin                                    'listar linha
end sub


Sub AgpVnd_Fim 'fim de pagina
call AgpRqu_Fim                                    'listar fim de pagina
end sub


'- Resumo de Compras -----------------------------------------------------------
Sub AgpCmp_Cab 'cabecalho
lstTit$ = "Resumo de Compras"                      'titulo
call AgpRqu_Cab                                    'listar cabecalho

SqlRquIde$ = "AgpCmp"                              'identificador de comando SQL
end sub


Sub AgpCmp_Lin 'linha
call AgpRqu_Lin                                    'listar linha
end sub


Sub AgpCmp_Fim 'fim de pagina
call AgpRqu_Fim                                    'listar fim de pagina
end sub


'- Resumo de Existencia --------------------------------------------------------
Sub AgpExi_Cab 'cabecalho
lstTit$ = "Resumo de Existencia"                   'titulo
call AgpRqu_Cab                                    'listar cabecalho

SqlRquIde$ = "AgpExi"                              'identificador de comando SQL
end sub


Sub AgpExi_Lin 'linha
call AgpExi_Acm                                    'acumular
call AgpRqu_LinLst                                 'listar
end sub


Sub AgpExi_Fim 'fim de pagina
call AgpRqu_Fim                                    'listar fim de pagina
end sub


Sub AgpExi_Acm 'acumular
art$= SqlCmp$("Art$")                              'artigo
res = SqlOpcAct("AGP.ART", art$)                   'registar artigo

res = AgpResPrp(art$)                              'preparar artigo

exi = SqlQryGer("", SqlRquIde$)                    'gerar lista de movimentos do artigo
while exi = 1
tdo$ = left$(SqlQryCmp$("","Tdoc$"),1)                      'tipo de documento
txo$ = SqlQryCmp$("","Opc$")                       'texto de campos opcionais

if tdo$ = "C" then                                'compras ?
   acm =  1                                        'somar
else
   acm = -1                                        'subtrair
end if

res = AgpResAcm(acm, txo$)                         'acumular

exi = SqlQryRgs("")                                'registo seguinte
wend
end sub

##


