'Nome       : ResPer.sql
'Tipo       : SQL
'Data       : 2003/10/30
'Versao     : 1.0
'Descricao  : Resumo do periodo

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0   2003/??/?? --------------------------------------------------
'Versao base


'==============================================================================
'#INF - Informacao
'==============================================================================
'------------------------------------------------------------------------------
' codigos de movimento
'------------------------------------------------------------------------------
'Cod  Descricao            Tipo Notas
'---  -------------------- ---- -----------------------------------------------
' 1 - Compra               Ent
' 2 - Dev.Cliente          Ent
' 3 - Dev.Fornec           Sai
' 4 - Quebra               Sai
' 5 - Transferencia        Ent
' 6 - Custos               Ent So deve ser considerado o valor
' 7 - E.Diversas           Ent
' 8 - S.Diversas           Ent
' 9 - Venda                Sai
'10 - Enc.Forn.            --- Nao actualiza existencias
'11 - Act.Inv.Saida        Sai
'12 - Act.Inv.Entr.        Ent
'13 - R.Encom.Forn.        Ent Semelhante a compra
'14 - Saida Taras          --- Nao usado
'15 - Entrada Taras        --- Nao usado
'16 - N.Credito            Sai Semelhante a venda
'17 - Trf.Armazem          --- Apenas movimenta armazens
'18 - Inc.Custos           Ent So deve ser considerado o valor


'==============================================================================
#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")
Base de dados           [BD]=EmpFic$("EMP","Stc,Stc.mdb")


'- generico -------------------------------------------------------------------
Familias com valores a listar [Cmd]=CmpVnd=+
+SELECT left(Art$,2) as Fam, Sum(qu) as RQT, Sum(Vt) as RVT FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(1,-1,2,-2,3,-3,9,-9,16,-16) +
+AND [Art$] BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}' +
+AND Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim} +
+GROUP BY left(Art$,2) +
+ORDER BY left(Art$,2)

Familias com movimento        [Cmd]=FamMov=+
+SELECT left(Art$,2) as Fam FROM StcMov{Ano} +
+WHERE [Art$] BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}' +
+AND Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim} +
+GROUP BY left(Art$,2) +
+ORDER BY left(Art$,2)


'- vendas ---------------------------------------------------------------------
Familias com valores a listar [Cmd]=VndFam=+
+SELECT left(Art$,2) as Fam, Sum(qu) as RQT, Sum(Vt) as RVT FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(2,-2,9,-9,16,-16) +
+AND [Art$] BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}' +
+AND Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim} +
+GROUP BY left(Art$,2) +
+ORDER BY left(Art$,2)


Familia - Vendas - Valores a somar    [Cmd]=ResVndSom=+
+SELECT Sum(qu) as VQTS, Sum(Vt) as VVTS FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(9,-9) +
+AND [Art$] BETWEEN '{Fam.Ini}' AND '{Fam.Fim}' +
+AND Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}


Familia - Vendas - Valores a subtrair [Cmd]=ResVndSub=+
+SELECT Sum(qu) as VQTR, Sum(Vt) as VVTR FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(2,-2,16,-16) +
+AND [Art$] BETWEEN '{Fam.Ini}' AND '{Fam.Fim}' +
+AND Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}


'- compras --------------------------------------------------------------------
Familias com valores a listar [Cmd]=CmpFam=+
+SELECT left(Art$,2) as Fam, Sum(qu) as RQT, Sum(Vt) as RVT FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(1,-1,3,-3) +
+AND [Art$] BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}' +
+AND Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim} +
+GROUP BY left(Art$,2) +
+ORDER BY left(Art$,2)


Familia - Compras - Valores a somar    [Cmd]=ResCmpSom=+
+SELECT Sum(qu) as CQTS, Sum(Vt) as CVTS FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(1,-1) +
+AND [Art$] BETWEEN '{Fam.Ini}' AND '{Fam.Fim}' +
+AND Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}


Familia - Compras - Valores a subtrair [Cmd]=ResCmpSub=+
+SELECT Sum(qu) as CQTR, Sum(Vt) as CVTR FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(3,-3) +
+AND [Art$] BETWEEN '{Fam.Ini}' AND '{Fam.Fim}' +
+AND Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}


'- entradas -------------------------------------------------------------------
Resumo por Familia - Valores a somar            [Cmd]=EntRqvSom=+
+SELECT Sum(qu) as ERQTS, Sum(Vt) as ERVTS FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(1,-1,2,-2,5,-5,7,-7,12,-12,13,-13) +
+AND [Art$] BETWEEN '{Fam.Ini}' AND '{Fam.Fim}' +
+AND Dtl <= {Opc_Dtl.Fim}


Resumo por Familia - Valores simples a somar    [Cmd]=EntRvsSom=+
+SELECT Sum(Vt) as ERVSS FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(6,-6,18,-18) +
+AND [Art$] BETWEEN '{Fam.Ini}' AND '{Fam.Fim}' +
+AND Dtl <= {Opc_Dtl.Fim}


'- saidas ---------------------------------------------------------------------
Resumo por Familia - Valores a somar            [Cmd]=SaiRqvSom=+
+SELECT Sum(qu) as SRQTS, Sum(Vt) as SRVTS FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(3,-3,4,-4,9,-9,11,-11,16,-16) +
+AND [Art$] BETWEEN '{Fam.Ini}' AND '{Fam.Fim}' +
+AND Dtl <= {Opc_Dtl.Fim}


'- existencia -----------------------------------------------------------------
Resumo por Familia - Valores a somar            [Cmd]=ExiRqSom=+
+SELECT Sum(qu) as EXIRQS FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(1,-1,2,-2,5,-5,7,-7,12,-12,13,-13) +
+AND [Art$] BETWEEN '{Fam.Ini}' AND '{Fam.Fim}' +
+AND Dtl <= {Opc_Dtl.Fim}


Resumo por Familia - Valores a subtrair         [Cmd]=ExiRqSub=+
+SELECT Sum(qu) as EXIRQR FROM StcMov{Ano} +
+WHERE RecVal<>255 +
+AND Cmv IN(3,-3,4,-4,9,-9,11,-11,16,-16) +
+AND [Art$] BETWEEN '{Fam.Ini}' AND '{Fam.Fim}' +
+AND Dtl <= {Opc_Dtl.Fim}

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=VndFam,Vendas Família

'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]=Vnd_Cab
Listar linhas               [FxLIN]=Vnd_Lin
Listar fim                  [FxFIM]=Vnd_Fim

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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=Vnd,Vendas (Subt.)

'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]=Vnd_Cab
Listar linhas               [FxLIN]=Vnd_Lin
Listar fim                  [FxFIM]=Vnd_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=VndFam
Subtotalizadores           [SQLSbt]=Fam:1
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=Vpmc,Vendas (Vpmc)

'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]=Vpmc_Cab
Listar linhas               [FxLIN]=Vpmc_Lin
Listar fim                  [FxFIM]=Vpmc_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=VndFam
Subtotalizadores           [SQLSbt]=
'Subtotalizadores           [SQLSbt]=Fam:1
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=CmpFam,Compras Família

'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]=Cmp_Cab
Listar linhas               [FxLIN]=Cmp_Lin
Listar fim                  [FxFIM]=Cmp_Fim

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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=CmpVnd,Compras e Vendas

'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]=CmpVnd_Cab
Listar linhas               [FxLIN]=CmpVnd_Lin
Listar fim                  [FxFIM]=CmpVnd_Fim

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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=Pmc,Cálculo de PMC

'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]=Pmc_Cab
Listar linhas               [FxLIN]=Pmc_Lin
Listar fim                  [FxFIM]=Pmc_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=FamMov
Subtotalizadores           [SQLSbt]=
'Subtotalizadores           [SQLSbt]=Fam:1
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=Afi,Análise Financeira

'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]=Afi_Cab
Listar linhas               [FxLIN]=Afi_Lin
Listar fim                  [FxFIM]=Afi_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=FamMov
Subtotalizadores           [SQLSbt]=
'Subtotalizadores           [SQLSbt]=Fam:1
##


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


'Campos
famCod   = SqlCmp$("Fam")

vPerQuX  = FrmNum$( 10.2,SqlCmp("RQT"))
vPerVtX  = FrmNum$( 14.2,SqlCmp("RVT"))

'vendas
vVndQu   = FrmNum$( 10.2,SqlOpcCon("VQTS")-SqlOpcCon("VQTR"))
vVndVt   = FrmNum$( 14.2,SqlOpcCon("VVTS")-SqlOpcCon("VVTR"))
vVpmc    = FrmNum$( 14.2,0+(SqlOpcCon("ERVTS")+SqlOpcCon("ERVSS"))/SqlOpcCon("ERQTS")*(SqlOpcCon("VQTS")-SqlOpcCon("VQTR")))

tVndN    = FrmNum$(  5.0,TotCnt("vVndQu",0))
tVndQu   = FrmNum$( 10.2,total(vVndQu,0))
tVndVt   = FrmNum$( 14.2,total(vVndVt,0))
tVpmc    = FrmNum$( 14.2,total(vVpmc,0))

sVndN    = FrmNum$(  5.0,TotCnt("vVndQu",1))
sVndQu   = FrmNum$( 10.2,total(vVndQu,1))
sVndVt   = FrmNum$( 14.2,total(vVndVt,1))
sVpmc    = FrmNum$( 14.2,total(vVpmc,1))

'compras
vCmpQu   = FrmNum$( 10.2,SqlOpcCon("CQTS")-SqlOpcCon("CQTR"))
vCmpVt   = FrmNum$( 14.2,SqlOpcCon("CVTS")-SqlOpcCon("CVTR"))

tCmpN    = FrmNum$(  5.0,TotCnt("vCmpQu",0))
tCmpQu   = FrmNum$( 10.2,total(vCmpQu,0))
tCmpVt   = FrmNum$( 14.2,total(vCmpVt,0))

sCmpN    = FrmNum$(  5.0,TotCnt("vCmpQu",1))
sCmpQu   = FrmNum$( 10.2,total(vCmpQu,1))
sCmpVt   = FrmNum$( 14.2,total(vCmpVt,1))

'entradas
vEntQe   = FrmNum$( 10.2,SqlOpcCon("ERQTS"))
vEntVe   = FrmNum$( 14.2,SqlOpcCon("ERVTS"))
vEntVs   = FrmNum$( 14.2,SqlOpcCon("ERVSS"))
vEntPmc  = FrmNum$( 14.2,0+(SqlOpcCon("ERVTS")+SqlOpcCon("ERVSS"))/SqlOpcCon("ERQTS"))

tEntN    = FrmNum$(  5.0,TotCnt("vEntQe",0))
tEntQe   = FrmNum$( 10.2,total(vEntQe,0))
tEntVe   = FrmNum$( 14.2,total(vEntVe,0))
tEntVs   = FrmNum$( 14.2,total(vEntVs,0))

sEntN    = FrmNum$(  5.0,TotCnt("vEntQe",1))
sEntQe   = FrmNum$( 10.2,total(vEntQe,1))
sEntVe   = FrmNum$( 14.2,total(vEntVe,1))
sEntVs   = FrmNum$( 14.2,total(vEntVs,1))


'existencia
vExiQu   = FrmNum$( 10.2,SqlOpcCon("EXIRQS")-SqlOpcCon("EXIRQR"))
vExiVt   = FrmNum$( 14.2,0+(SqlOpcCon("EXIRQS")-SqlOpcCon("EXIRQR"))*(SqlOpcCon("ERVTS")+SqlOpcCon("ERVSS"))/SqlOpcCon("ERQTS"))
vExiQe   = FrmNum$( 10.2,SqlOpcCon("EXIRQS"))
vExiQs   = FrmNum$( 10.2,SqlOpcCon("EXIRQR"))


tExiQu   = FrmNum$( 10.2,total(vExiQu,0))
tExiVt   = FrmNum$( 14.2,total(vExiVt,0))

sExiQu   = FrmNum$( 10.2,total(vExiQu,1))
sExiVt   = FrmNum$( 14.2,total(vExiVt,1))

##


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


'- Vendas ---------------------------------------------------------------------
Sub Vnd_Cab 'cabecalho
cabTit$="Resumo de Vendas"
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",cabTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
?   Familia                     Quantidade             Valor                    #
?================================================================================
end sub


Sub Vnd_LinTit1 'titulo 1 - familia
tmp=CntLin("MIN",5)                              'minimo de linhas
tmp=CntLin("INC",1)                              'contar linha

fam$ = SbtInf$("ACT",1)                          'familia
idg$ = fam$                                      'identificacao do grupo

print tab(5) "Familia: " idg$                    'identificar grupo
end sub


Sub Vnd_Lin 'linha
fam$    = SqlCmp$("Fam")                         'familia
famIni$ = fam$                                   'familia - Artigo inicial
famFim$ = fam$ + "z"                             'familia - Artigo final

res = SqlOpcAct("Fam.Ini",famIni$)               'registar artigo inicial
res = SqlOpcAct("Fam.Fim",famFim$)               'registar artigo final

res = SqlCalc("RESVNDSOM")                       'vendas - valores a somar
res = SqlCalc("RESVNDSUB")                       'vendas - valores a subtrair

?@FamCod                       @vVndQu        @vVndVt                           #
end sub


Sub Vnd_LinSbt1 'subtotal 1
?            Total da familia: @sVndQu        @sVndVt                           #
print

tmp=CntLin("INC",1)                              'contar linhas
x=TotLpz(1)                                      'limpar totais
end sub


Sub Vnd_Fim
?================================================================================
?                      Totais: @tVndQu        @tVndVt                           #
?================================================================================
FxDiv LstPer,SP
end sub


'- Vendas+Pmc------------------------------------------------------------------
Sub Vpmc_Cab 'cabecalho
cabTit$="Resumo de Vendas (PMC)"
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",cabTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
?                            Vendas                                             #
? Familia       Quantidade            Valor            Pmc       Vendas Pmc     #
'              <23456789.1234><123456789.12345><123456789.12345><123456789.12345>
?================================================================================
end sub


Sub Vpmc_LinTit1 'titulo 1 - familia
tmp=CntLin("MIN",5)                              'minimo de linhas
tmp=CntLin("INC",1)                              'contar linha

fam$ = SbtInf$("ACT",1)                          'familia
idg$ = fam$                                      'identificacao do grupo

print tab(5) "Familia: " idg$                    'identificar grupo
end sub


Sub Vpmc_Lin 'linha
fam$    = SqlCmp$("Fam")                         'familia
famIni$ = fam$                                   'familia - Artigo inicial
famFim$ = fam$ + "z"                             'familia - Artigo final

res = SqlOpcAct("Fam.Ini",famIni$)               'registar artigo inicial
res = SqlOpcAct("Fam.Fim",famFim$)               'registar artigo final

res = SqlCalc("RESVNDSOM")                       'vendas - valores a somar
res = SqlCalc("RESVNDSUB")                       'vendas - valores a subtrair

res = SqlCalc("ENTRQVSOM")                       'entradas - valores a somar
res = SqlCalc("ENTRVSSOM")                       'entradas - valores simples a somar

? @FamCod      @vVndQu        @vVndVt          @vEntPmc         @vVpmc          #
end sub


Sub Vpmc_LinSbt1 'subtotal 1
?Total familia:@sVndQu        @sVndVt                           @sVpmc          #
print

tmp=CntLin("INC",1)                              'contar linhas
x=TotLpz(1)                                      'limpar totais
end sub


Sub Vpmc_Fim
?================================================================================
?      Totais: @tVndQu        @tVndVt                           @tVpmc          #
?================================================================================
FxDiv LstPer,SP
end sub



'- Compras --------------------------------------------------------------------
Sub Cmp_Cab 'cabecalho
cabTit$="Resumo de Compras"
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",cabTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
?   Familia                     Quantidade             Valor                    #
?================================================================================
end sub


Sub Cmp_LinTit1 'titulo 1 - familia
tmp=CntLin("MIN",5)                              'minimo de linhas
tmp=CntLin("INC",1)                              'contar linha

fam$ = SbtInf$("ACT",1)                          'familia
idg$ = fam$                                      'identificacao do grupo

print tab(5) "Familia: " idg$                    'identificar grupo
end sub


Sub Cmp_Lin 'linha
fam$    = SqlCmp$("Fam")                         'familia
famIni$ = fam$                                   'familia - Artigo inicial
famFim$ = fam$ + "z"                             'familia - Artigo final

res = SqlOpcAct("Fam.Ini",famIni$)               'registar artigo inicial
res = SqlOpcAct("Fam.Fim",famFim$)               'registar artigo final

res = SqlCalc("RESCMPSOM")                       'compras - valores a somar
res = SqlCalc("RESCMPSUB")                       'compras - valores a subtrair

?@FamCod                       @vCmpQu        @vCmpVt                           #
end sub


Sub Cmp_LinSbt1 'subtotal 1
?            Total da familia: @sCmpQu        @sCmpVt                           #
print

tmp=CntLin("INC",1)                              'contar linhas
x=TotLpz(1)                                      'limpar totais
end sub


Sub Cmp_Fim
?================================================================================
?                      Totais: @tCmpQu        @tCmpVt                           #
?================================================================================
FxDiv LstPer,SP
end sub


'- Compras e Vendas -----------------------------------------------------------
Sub CmpVnd_Cab 'cabecalho
cabTit$="Resumo de Compras e Vendas"
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",cabTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
?                          Compras                             Vendas           #
?   Familia    Quantidade           Valor          Quantidade           Valor   #
'           1234567890.12  12345678901234.12    1234567890.12  12345678901234.12#
?================================================================================
end sub


Sub CmpVnd_LinTit1 'titulo 1 - familia
tmp=CntLin("MIN",5)                              'minimo de linhas
tmp=CntLin("INC",1)                              'contar linha

fam$ = SbtInf$("ACT",1)                          'familia
idg$ = fam$                                      'identificacao do grupo

print tab(5) "Familia: " idg$                    'identificar grupo
end sub


Sub CmpVnd_Lin 'linha
fam$    = SqlCmp$("Fam")                         'familia
famIni$ = fam$                                   'familia - Artigo inicial
famFim$ = fam$ + "z"                             'familia - Artigo final

res = SqlOpcAct("Fam.Ini",famIni$)               'registar artigo inicial
res = SqlOpcAct("Fam.Fim",famFim$)               'registar artigo final

res = SqlCalc("RESVNDSOM")                       'vendas - valores a somar
res = SqlCalc("RESVNDSUB")                       'vendas - valores a subtrair

res = SqlCalc("RESCMPSOM")                       'compras - valores a somar
res = SqlCalc("RESCMPSUB")                       'compras - valores a subtrair

?@FamCod    @vCmpQu        @vCmpVt              @vVndQu        @vVndVt          #
end sub


Sub CmpVnd_LinSbt1 'subtotal 1
? Subtotal: @sCmpQu        @sCmpVt              @sVndQu        @sVndVt          #
print

tmp=CntLin("INC",1)                              'contar linhas
x=TotLpz(1)                                      'limpar totais
end sub


Sub CmpVnd_Fim
?================================================================================
? Totais:   @tCmpQu        @tCmpVt              @tVndQu        @tVndVt          #
?================================================================================
FxDiv LstPer,SP
end sub


'- Pmc ------------------------------------------------------------------------
Sub Pmc_Cab 'cabecalho
cabTit$="Cálculo de PMC"
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",cabTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
?                                   Entradas                                    #
? Familia       Quantidade            Valor          Adicional          Pmc     #
'              <23456789.1234><123456789.12345><123456789.12345><123456789.12345>
?================================================================================
end sub


Sub Pmc_LinTit1 'titulo 1 - familia
tmp=CntLin("MIN",5)                              'minimo de linhas
tmp=CntLin("INC",1)                              'contar linha

fam$ = SbtInf$("ACT",1)                          'familia
idg$ = fam$                                      'identificacao do grupo

print tab(5) "Familia: " idg$                    'identificar grupo
end sub


Sub Pmc_Lin 'linha
fam$    = SqlCmp$("Fam")                         'familia
famIni$ = fam$                                   'familia - Artigo inicial
famFim$ = fam$ + "z"                             'familia - Artigo final

res = SqlOpcAct("Fam.Ini",famIni$)               'registar artigo inicial
res = SqlOpcAct("Fam.Fim",famFim$)               'registar artigo final

res = SqlCalc("ENTRQVSOM")                       'entradas - valores a somar
res = SqlCalc("ENTRVSSOM")                       'entradas - valores simples a somar

? @FamCod      @vEntQe        @vEntVe          @vEntVs          @vEntPmc        #
end sub


Sub Pmc_LinSbt1 'subtotal 1
?Total familia:@sEntQe        @sEntVe          @sEntVs                          #
print

tmp=CntLin("INC",1)                              'contar linhas
x=TotLpz(1)                                      'limpar totais
end sub


Sub Pmc_Fim
?================================================================================
?      Totais: @tEntQe        @tEntVe          @tEntVs                          #
?================================================================================
FxDiv LstPer,SP
end sub


'- Analise Financeira -----------------------------------------------------------
Sub Afi_Cab 'cabecalho
cabTit$="Análise Financeira"
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",cabTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
? Familia         Vendas Mês      Compras Mês       Vendas PMC       Existência #
'            <2345678901234.1><2345678901234.1><2345678901234.1><2345678901234.1>
?================================================================================
end sub


Sub Afi_LinTit1 'titulo 1 - familia
tmp=CntLin("MIN",5)                              'minimo de linhas
tmp=CntLin("INC",1)                              'contar linha

fam$ = SbtInf$("ACT",1)                          'familia
idg$ = fam$                                      'identificacao do grupo

print tab(5) "Familia: " idg$                    'identificar grupo
end sub


Sub Afi_Lin 'linha
fam$    = SqlCmp$("Fam")                         'familia
famIni$ = fam$                                   'familia - Artigo inicial
famFim$ = fam$ + "z"                             'familia - Artigo final

res = SqlOpcAct("Fam.Ini",famIni$)               'registar artigo inicial
res = SqlOpcAct("Fam.Fim",famFim$)               'registar artigo final


res = SqlCalc("RESVNDSOM")                       'vendas - valores a somar
res = SqlCalc("RESVNDSUB")                       'vendas - valores a subtrair

res = SqlCalc("RESCMPSOM")                       'compras - valores a somar
res = SqlCalc("RESCMPSUB")                       'compras - valores a subtrair

res = SqlCalc("ENTRQVSOM")                       'entradas - valores a somar
res = SqlCalc("ENTRVSSOM")                       'entradas - valores simples a somar

res = SqlCalc("EXIRQSOM")                        'existencia - valores a somar
res = SqlCalc("EXIRQSUB")                        'existencia - valores a subtrair

'            <123456789.12345><123456789.12345><123456789.12345><123456789.12345>
'? @FamCod    @vVndVt          @vCmpVt          @vVpmc           @vExiVt         @vExiQu         @vEntPmc           @vExiQe         @vExiQs         #
? @FamCod    @vVndVt          @vCmpVt          @vVpmc           @vExiVt         #
end sub



Sub Afi_LinSbt1 'subtotal 1
?Total Fam.: @sVndVt          @sCmpVt          @sVpmc           @sExiVt         #
print

tmp=CntLin("INC",1)                              'contar linhas
x=TotLpz(1)                                      'limpar totais
end sub


Sub Afi_Fim
?================================================================================
?    Totais: @tVndVt          @tCmpVt          @tVpmc           @tExiVt         #
?================================================================================
FxDiv LstPer,SP
end sub


##

