'Nome       : StcRve.sql
'Tipo       : LST
'Data       : 2003/11/20
'Versao     : 1.0
'Descricao  : Resumos de vendas

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


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


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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=Vpmc,Resumo de 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]=RveXls,Resumo de Vendas (XLS)

'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
Base para documento         [FxDOC]=XlsRve
Listar cabecalho            [FxCAB]=XlsRve_Cab
Listar linhas               [FxLIN]=XlsRve_Lin,0; Grp,0; Sbt,0; Sep,0
Listar fim                  [FxFIM]=XlsRve_Fim

Matriz auxiliar            [DocMat]=StcRve.xls

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


'==============================================================================
#VAR - Variaveis
'==============================================================================
Tipo     = MemTxt$(1)                                 '?
Pag      = Doc_CntPag                                 'contador de paginas
Tit080   = TxTit$("TT=10CPI, LD, PT=40C",Memtxt$(1))  'titulo para 80 colunas
Tit132   = TxTit$("TT=16CPI, LD, PT=66C",Memtxt$(1))  'titulo para 132 colunas
DataExt  = FrmVal$(Sig_DtHoje,45,0)                   'data por extenso
##


'==============================================================================
#INC - Inclusao de ficheiros
'==============================================================================
Funcoes comuns                 =[STC_LST],StcSql_Res.inc
##


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

SUB FxIni 'funcao de inicializacao
cnt=0                                           'limpar contador
'msgbox "","FxIni",""
end sub


SUB FxFim 'funcao de finalizacao
res = XlsFim(0)                                 'terminar EXCEL
'msgbox "","FxFim",""
end sub


SUB Lst_AJT 'ajuste
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


'-----------------------------------------------------------------------------
' XLS - Funcoes comuns
'-----------------------------------------------------------------------------
Sub Xls_DocIni 'inicializar documento
dfi$ = FicEmp$("EMP","Ext","dExcel",cmo$)          'directorio de documentos EXCEL
nfi$ = "RND:StaRve.xls"                            'nome do ficheiro
cmo$ = SigCmoCur$("MIX")                           'modulo corrente
ficDoc$ = FicTmp$(dfi$, nfi$)                      'ficheiro para documento
res = DirCri("D", dfi$)                            'criar directorio para documento

xlsMatNom$ = DocOpc$("DocMat")                     'nome do ficheiro matriz
xlsMat$    = DocOpc$("DocMat+SBT")                 'endereco do ficheiro matriz

res = FicCop(xlsMat$, ficDoc$)                     'criar ficheiro (copia de matriz)

res = XlsPrp(0)                                    'preparar EXCEL
res = XlsDocLer(ficDoc$)                           'ler ficheiro

'res = XlsDocCri("")                                'criar documento
end sub


Sub Xls_DocFim 'terminar documento
res = XlsLinEli(xlsLin, 1)                         'eliminar linha - ultima
res = XlsLinEli(xlsLba, 1)                         'eliminar linha - primeira

'res = XlsWks(1)                                    'activar worksheet

res = XlsDocDir$("A", dfi$)                        'activar directorio
res = XlsDocGrv(ficDoc$)                           'gravar ficheiro

'res = XlsPrt(1)                                    'listar worksheet
res = XlsVer(0)                                    'mostrar EXCEL - normal
'res = XlsVer(1)                                    'mostrar EXCEL - maximizado
res = XlsLib(0)                                    'libertar EXCEL
end sub


'-----------------------------------------------------------------------------
' XLS - Resumo de vendas
'-----------------------------------------------------------------------------
Sub XlsRve_DocIni 'inicializar documento
call Xls_DocIni                                    'inicializar documento
call XlsRve_Prep                                   'preparar
end sub


Sub XlsRve_DocFim 'terminar documento
'res = MsgUtz("","Doc Fim","")

linIni = linBav                                    'linha inicial
linFim = linCnt                                    'linha final

'mostrar
call Xls_DocFim                                    'terminar/mostrar documento
end sub


Sub XlsRve_Prep 'inicializar EXCEL
res = XlsWks("Valores")                            'activar worksheet

empNum$ = Emp_Inf_Cod$                             'numero da empresa
empNom$ = Emp_Inf_Nome$                            'nome da empresa
lstTip$ = MemTxt$(2)                               'tipo da listagem
'lstDt$  = FrmDt$("", Sig_DtHoje)                   'data para 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_Tipo", lstTip$)               'tipo da listagem
res = XlsIdeLst("Lst_Data", lstDt$)                'data

res = XlsIdePsq("PO_BAS")                          'pesquisar posicao base
linBav = XlsIdePsqRes("L")                         'linha da posicao base

xlsLba = linBav                                    'linha base
xlsLin = linBav + 1                                'contador de linhas usadas
end sub


Sub XlsRve_Lin 'linha de valores
res = XlsLinIns(xlsLin, 1)                         'juntar 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

FaCod$  = "'" + SqlCmp$("Fam")                     'codigo da familia
VndQu    = SqlOpcCon("VQTS") - SqlOpcCon("VQTR")   'vendas em quantidade
VndVt    = SqlOpcCon("VVTS") - SqlOpcCon("VVTR")   'vendas em valor

res = XlsLst(xlsLin, 2, FaCod$)                    'codigo
res = XlsLst(xlsLin, 3, VndQu)                     'quantidade
res = XlsLst(xlsLin, 4, VndVt)                     'valor

res = XlsFormCop(xlsLba, 5, xlsLin, 5)             'copiar formula
res = XlsFormCop(xlsLba, 6, xlsLin, 6)             'copiar formula

'seguinte
xlsLin = xlsLin + 1                                'numero de linhas
End sub


Sub XlsRve_Fim 'terminar
'res = XlsWksAct("A", "Grafico")                    'activar worksheet
res = XlsWksAct("A", 1)                            'activar worksheet
end sub

##


