'Nome       : CasArt.std
'Tipo       : LST
'Data       : 2006/02/17
'Versao     : 1.1
'Descricao  : Listagem de Artigos

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.1   2006/??/?? --------------------------------------------------
'Adaptacao para SIG 4

'- Versao : 1.0   1999/10/19 --------------------------------------------------
'Versao base


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


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


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


Artigos                [Cmd]=Artigos=+
   +SELECT * FROM CasArt +
   +WHERE Cod$>='{Opc_Art.Ini}' AND Cod$ <='{Opc_Art.Fim}' +
   +ORDER By Cod$ 


Identigicacao de grupo [Cmd]=GrpIde=+
   +SELECT Nome$ as [IdeGrp$] FROM CasArt +
   +WHERE Cod$='{Grp}'


Dados por artigos pos codigo    [Cmd]=ArtNum=+
   +SELECT count(CasPrq.[Art$]) AS Num, +
   +min(CasPrq.[Prc]) AS Min, +
   +max(CasPrq.[Prc]) AS Max, +
   +sum(CasPrq.[Prc]) AS Tot, +
   +avg(CasPrq.[Prc]) AS Med +
   +FROM CasPrq +
   +WHERE CasPrq.[Art$]='{Cod$}'

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=CasArt,Artigos
Vias                       [DocVia]=Original

'formato
Impressora                 [DocPrt]=
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'funcoes de listagem
Listar cabecalho            [FxCAB]=Doc1_Cab
Listar linhas               [FxLIN]=Doc1_Lin; Sbt1,2; Sbt2,2
Listar fim                  [FxFIM]=Doc1_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=Artigos
'Subtotalizadores           [SQLSbt]=Cod$:2,Cod$:6
Subtotalizadores           [SQLSbt]=Cod$:1,Cod$:5


'diversos
'parametros especificos
'Dados a listar            [DocEsp]=ConCmd=
##


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

Cod      = CasFrmCod$(SqlCmp$("Cod$"), "", "CasArtCod$")
Nom      = SqlCmp$("Nome$")
Iva      = FrmNum$(3,TabIva(SqlCmp("Iva")))
GEs      = SqlCmp$("Gre$")
Prc1     = FrmNum$(9.1,SqlCmp("Prc1"))
Prc2     = FrmNum$(9.1,SqlCmp("Prc2"))
Prc3     = FrmNum$(9.1,SqlCmp("Prc3"))

T        = FrmNum$(14.1,Total(Cod))
D1_Vl    = FrmNum$(15.1,SqlCmp("Prc1"))
CntL     = FrmNum$( 3.0,CntLin("CON"))

'valores por calculo SQL (usar a funcao SqlCalc)
Num      = FrmNum$( 3.0,SqlOpcCon("Num"))
Min      = FrmNum$(10.1,SqlOpcCon("Min"))
Max      = FrmNum$(10.1,SqlOpcCon("Max"))
Tot      = FrmNum$(10.1,SqlOpcCon("Tot"))
Med      = FrmNum$(10.1,SqlOpcCon("Med"))

'totais/subtotais
D1_VlTot = FrmNum$(15.1,Total(D1_Vl))
D1_T1    = FrmNum$(15.1,Total(D1_Vl,1))
D1_T2    = FrmNum$(15.1,Total(D1_Vl,2))
TotCnt   = FrmNum$( 6.0,TotCnt("COD",0))
##


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


'-----------------------------------------------------------------------------
' Funcoes para inicializacao
'-----------------------------------------------------------------------------
SUB FxIni 'inicializacao base
'x=SqlOpcAct("Opc1","Opcao 1")                  'activar opcao

cnt=0                                           'limpar contador
'x=SqlOpcAct("LinAdi",1)                         'usar linha adicional
x=SqlOpcAct("LinAdi",0)                         'nao usar linha adicional
end sub


SUB Lst_AJT
end sub


'-----------------------------------------------------------------------------
'DOC1 - Documento 1
'-----------------------------------------------------------------------------
SUB Doc1_CabIni 'inicializar documento
'cnt=cnt+1                                      'contar
''x=SqlOpcAct("Cnt",cnt)                         'actualizar valor de opcao

'if cnt>5 then 
'   x=SqlOpcAct("LinAdi",1)                     'usar linha adicional
'end if
end sub


SUB Doc1_Cab 'cabecalho
FxDiv LstIde,16CPI,0
'print TxTit$("TT=16CPI, LD, PT=66C, TL=16CPI",MemTxt$(1))
'FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",MemTxt$(1))
?Data : @DataExt                                                  Folha No: @Pag#
?================================================================================
?Codigo          Descrição               Preço 1     Preço 2     Preço 3  Iva G.E
?================================================================================
end sub


SUB Doc1_Lin 'linha
?@Cod            @Nom                 @Prc1       @Prc2       @Prc3       @Iva@GEs
' 123456789012345 12345678901234567890 12345678901 12345678901 12345678901 

'linha adicional
usa=SqlOpcCon("LinAdi")           'validar linha adicional
if usa=1 then                     'listar linha adicional ?
   tmp=SqlCalc("ArtNum")          'gerar valores calculados
'?                                @Num     @Tot         @Med                      #
?    Total: @Num                                                #
?

   tmp=CntLin("INC",1)            'contar linha adicional
end if
end sub


SUB Doc1_LinTit1 'titulo 1
tmp=CntLin("MIN",5)                         'minimo de linhas
tmp=CntLin("INC",1)                         'contar linha

grp$=SbtInf$("ACT",1)                       'grupo
tmp =SqlOpcAct("Grp",grp$)                  'actualizar valor do grupo
grv$=CasFrmCod$(grp$, "", "CasArtCod$")     'formatar
ide$=SqlCalc$("GrpIde")                     'pesquisar identificador de grupo
print tab(5) "Grupo : " grv$ "     " ide$   'identificar grupo

tmp=CntLin("INC",1)                         'contar linha
print                                       'separar
end sub


SUB Doc1_LinTit2 'titulo 2
tmp=CntLin("MIN",5)                         'minimo de linhas
tmp=CntLin("INC",1)                         'contar linha

grp$=SbtInf$("ACT",2)                       'grupo
tmp =SqlOpcAct("Grp",grp$)                  'actualizar valor do grupo
grv$=CasFrmCod$(grp$, "", "CasArtCod$")     'formatar
ide$=SqlCalc$("GrpIde")                     'pesquisar identificador de grupo
print tab(5) "Grupo : " grv$ "     " ide$   'identificar grupo
end sub


SUB Doc1_LinTit3 'titulo 3
tmp=CntLin("MIN",5)                         'minimo de linhas
tmp=CntLin("INC",1)                         'contar linha

grp$=SbtInf$("ACT",3)                       'grupo
tmp =SqlOpcAct("Grp",grp$)                  'actualizar valor do grupo
grv$=CasFrmCod$(grp$, "", "CasArtCod$")     'formatar
ide$=SqlCalc$("GrpIde")                     'pesquisar identificador de grupo
print tab(5) "Grupo : " grv$ "     " ide$   'identificar grupo
end sub


SUB Doc1_LinSbt1 'sobtotal 1
grp$=SbtInf$("ANT",1)                         'grupo
grv$=CasFrmCod$(grp$, "", "CasArtCod$")       'formatar

print tab(5) "Subtotal: " grv$;
print tab(30) FrmNum$( 6.0,TotCnt("COD",1));
print                                         'terminar linha
print                                         'linha de separacao
tmp=CntLin("INC",2)                           'contar linhas
x=TotLpz(1)                                   'limpar totais
end sub


SUB Doc1_LinSbt2 'sobtotal 2
grp$=SbtInf$("ANT",2)                         'grupo
grv$=CasFrmCod$(grp$, "", "CasArtCod$")       'formatar

print tab(5) "Subtotal: " grv$;
print tab(30) FrmNum$( 6.0,TotCnt("COD",2));
print                                         'terminar linha
print                                         'linha de separacao
tmp=CntLin("INC",2)                           'contar linhas
x=TotLpz(2)                                   'limpar totais
end sub


SUB Doc1_LinSbt3 'sobtotal 3
'grp$=SbtInf$("ANT",3)                         'grupo
'grv$=CasFrmCod$(grp$, "", "CasArtCod$")       'formatar
'print tab(5) "Subtotal: " grv$;

print tab(5) "Subtotal: ";
print tab(39) FrmNum$( 6.0,TotCnt("COD",3));
print                                         'terminar linha
print                                         'linha de separacao
tmp=CntLin("INC",2)                           'contar linhas
x=TotLpz(2)                                   'limpar totais
end sub


SUB Doc1_Fim 'totais
?================================================================================
?                    Totais : @TotCnt artigos
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


SUB Doc1_FimAjt 'fim de pagina intermedia
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub

##

