'Nome       : BemGrp.std
'Tipo       : LST
'Data       : 2003/03/21
'Versao     : 1.0a
'Descricao  : Bens por Grupo

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0   2002/04/01 --------------------------------------------------
'Versao base

'- Versao : 1.0a  2003/??/?? --------------------------------------------------
'Listagem de amortizacao do periodo


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


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

Bens por grupo              [Cmd]=BemGrp=+
   +SELECT * FROM ImoMst +
   +WHERE Cod$>='{Opc_Cod.Ini}' AND Cod$ <='{Opc_Cod.Fim}' +
   +ORDER By Grp$, Cod$ 


Amortizacoes discriminadas  [Cmd]=AmoGrpDis=+
   +SELECT ImoMov.*, ImoMst.* +
   +FROM ImoMov LEFT JOIN ImoMst ON ImoMov.[Cod$] = ImoMst.[Cod$] +
   +WHERE ImoMov.Dt>= {Ano.Ini} AND ImoMov.Dt<= {Ano.Fim} +
   +ORDER By ImoMst.Grp$, ImoMst.Cod$ 


Amortizacoes resumidas      [Cmd]=AmoGrpRes=+
   +SELECT ImoMst.Grp$, sum(ImoMov.AmoVl) as GrpVl, +
   +count(ImoMov.AmoVl) as GrpNum +
   +FROM ImoMov LEFT JOIN ImoMst ON ImoMov.[Cod$] = ImoMst.[Cod$] +
   +WHERE ImoMov.Dt>= {Ano.Ini} AND ImoMov.Dt<= {Ano.Fim} +
   +GROUP BY ImoMst.Grp$ +
   +ORDER BY ImoMst.Grp$

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=BemGrp,Bens por grupo

'formato
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]=BemGrp_Cab
Listar linhas               [FxLIN]=BemGrp_Lin; Sbt01,0; Sbt02,0; Sbt03,0
Listar fim                  [FxFIM]=BemGrp_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=BemGrp
Subtotalizadores           [SQLSbt]=Grp$:2,Grp$:10


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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=AmoGrpDis,Amortizacoes por grupo

'formato
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]=AmoGrpDis_Cab
Listar linhas               [FxLIN]=AmoGrpDis_Lin; Sbt01,0; Sbt02,0; Sbt03,0
Listar fim                  [FxFIM]=AmoGrpDis_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=AmoGrpDis
Subtotalizadores           [SQLSbt]=Grp$:2,Grp$:10


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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=AmoGrpRes,Amort. Grupo (Resumo)

'formato
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]=AmoGrpRes_Cab
Listar linhas               [FxLIN]=AmoGrpRes_Lin; Sbt01,0; Sbt02,0; Sbt03,0
Listar fim                  [FxFIM]=AmoGrpRes_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=AmoGrpRes
Subtotalizadores           [SQLSbt]=Grp$:2


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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=AmoPer,Amortização do Periodo 

'formato
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]=AmoPer_CabDis
Listar linhas               [FxLIN]=AmoPer_Lin,0; Sbt01,0; Sbt02,0; Sbt03,0
Listar fim                  [FxFIM]=AmoPer_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=BemGrp
Subtotalizadores           [SQLSbt]=Grp$:2,Grp$:10


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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=AmoPerR,Amortização do Periodo (Resumo)

'formato
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]=AmoPer_CabRes
Listar linhas               [FxLIN]=AmoPer_Lin,0; Sbt01,0; Sbt02,0; Sbt03,0
Listar fim                  [FxFIM]=AmoPer_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=BemGrp
Subtotalizadores           [SQLSbt]=Grp$:2,Grp$:10


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


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

BemN0    = FrmNum$(-4.0,TotCnt("Cod",0))
BemN1    = FrmNum$(-4.0,TotCnt("Cod",1))
BemN2    = FrmNum$(-4.0,TotCnt("Cod",2))

GrpN0    = FrmNum$(-4.0,TotCnt("Grp",0))
GrpN1    = FrmNum$(-4.0,TotCnt("Grp",1))
GrpN2    = FrmNum$(-4.0,TotCnt("Grp",2))


Grp      = SqlCmp$("Grp$")
Cod      = SqlCmp$("Cod$")
CodMov   = SqlCmp$("ImoMov.Cod$")
Nome     = SqlCmp$("Nome$")


vAqi     = FrmNum$(14.2,ImoAqiVl("",SqlCmp$("Cod$")))
vAqiT0   = FrmNum$(14.2,total(vAqi,0))
vAqiT1   = FrmNum$(14.2,total(vAqi,1))
vAqiT2   = FrmNum$(14.2,total(vAqi,2))

Vpa      = FrmNum$(14.2,SqlCmp("AmoVpa"))
VpaT0    = FrmNum$(14.2,total(Vpa,0))
VpaT1    = FrmNum$(14.2,total(Vpa,1))
VpaT2    = FrmNum$(14.2,total(Vpa,2))

Amo      = FrmNum$(14.2,SqlCmp("AmoVl"))
AmoT0    = FrmNum$(14.2,total(Amo,0))
AmoT1    = FrmNum$(14.2,total(Amo,1))
AmoT2    = FrmNum$(14.2,total(Amo,2))


nGrp     = FrmNum$( 7.0,SqlCmp("GrpNum"))
nGrpT0   = FrmNum$( 7.0,total(nGrp,0))
nGrpT1   = FrmNum$( 7.0,total(nGrp,1))
nGrpT2   = FrmNum$( 7.0,total(nGrp,2))

vGrp     = FrmNum$(14.2,SqlCmp("GrpVl"))
vGrpT0   = FrmNum$(14.2,total(vGrp,0))
vGrpT1   = FrmNum$(14.2,total(vGrp,1))
vGrpT2   = FrmNum$(14.2,total(vGrp,2))

SqlOpcAct("AmoVl"
'AmoPer   = FrmNum$(14.2,ImoAmoPer("A",SqlCmp$("Cod$"))
AmoPer   = FrmNum$(14.2,SqlOpcCon("AmoPer"))
AmoPerT0 = FrmNum$(14.2,total(AmoPer,0))
AmoPerT1 = FrmNum$(14.2,total(AmoPer,1))
AmoPerT2 = FrmNum$(14.2,total(AmoPer,2))
##


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

'- Funcoes de 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 'ajuste
'nada a executar
end sub


'------------------------------------------------------------------------------
'BemGrp - Bens por grupo
'------------------------------------------------------------------------------
SUB BemGrp_CabIni 'inicializar documento
cnt=0                                              'limpar contador
end sub


SUB BemGrp_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         Nome                                                    Valor  #
?================================================================================
end sub


SUB BemGrp_Lin 'linha
?@Cod          @Nome                                            @vAqi           #
end sub


SUB BemGrp_LinTit1 'titulo 1
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",2)                                'contar linhas
print                                              'linha de separacao
print tab(5) "Grupo : " SbtInf$("ACT",1)           'identificar grupo
end sub


SUB BemGrp_LinTit2 'titulo 2
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",1)                                'contar linha
print tab(5) "Grupo : " SbtInf$("ACT",2)           'identificar grupo
end sub


SUB BemGrp_LinSbt1 'subtotal 1
print tab(5) "Subtotal: " SbtInf$("ANT",1);        'identificar subtotal
print tab(53) FrmNum$(-4.0,TotCnt("Cod",1));       'numero de registos
print tab(64) FrmNum$(14.2,Total("vAqi",1))        'valor
print                                              'linha de separacao
tmp=CntLin("INC",2)                                'contar linhas
x=TotLpz(1)                                        'limpar totais
end sub


SUB BemGrp_LinSbt2 'sobtotal 2
print tab(5) "Subtotal: " SbtInf$("ANT",2);        'identificar subtotal
print tab(53) FrmNum$(-4.0,TotCnt("Cod",2));       'numero de registos
print tab(64) FrmNum$(14.2,TotCon("vAqi",2))       'valor
print                                              'linha de separacao
tmp=CntLin("INC",2)                                'contar linhas
x=TotLpz(2)                                        'limpar totais
end sub


SUB BemGrp_Fim 'totais
?================================================================================
?                                           Totais : @BemN0     @vAqiT0         #
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


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


'------------------------------------------------------------------------------
'AmoGrpDis - Amortizacoes por grupo - discriminadas
'------------------------------------------------------------------------------
SUB AmoGrpDis_CabIni 'inicializar documento
cnt=0                                              'limpar contador
end sub


SUB AmoGrpDis_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         Nome                                                    Valor  #
?================================================================================
end sub


SUB AmoGrpDis_Lin 'linha
?@CodMov       @Nome                                            @Amo            #
end sub


SUB AmoGrpDis_LinTit1 'titulo 1
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",2)                                'contar linhas
print                                              'linha de separacao
print tab(5) "Grupo: " SbtInf$("ACT",1)            'identificar grupo
end sub


SUB AmoGrpDis_LinTit2 'titulo 2
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",1)                                'contar linha
print tab(5) "Grupo : " SbtInf$("ACT",2)           'identificar grupo
end sub


SUB AmoGrpDis_LinSbt1 'subtotal 1
print tab(5) "Subtotal: " SbtInf$("ANT",1);        'identificar subtotal
print tab(53) FrmNum$(-4.0,TotCnt("CodMov",1));    'numero de registos
print tab(64) FrmNum$(14.2,Total("Amo",1))         'valor
print                                              'linha de separacao
tmp=CntLin("INC",2)                                'contar linhas
x=TotLpz(1)                                        'limpar totais
end sub


SUB AmoGrpDis_LinSbt2 'sobtotal 2
print tab(5) "Subtotal: " SbtInf$("ANT",2);        'identificar subtotal
print tab(53) FrmNum$(-4.0,TotCnt("CodMov",2));    'numero de registos
print tab(64) FrmNum$(14.2,TotCon("Amo",2))        'valor
print                                              'linha de separacao
tmp=CntLin("INC",2)                                'contar linhas
x=TotLpz(2)                                        'limpar totais
end sub


SUB AmoGrpDis_Fim 'totais
?================================================================================
?                                           Totais : @BemN0     @AmoT0          #
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


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


'------------------------------------------------------------------------------
'AmoGrpRes - Amortizacoes por grupo - resumo
'------------------------------------------------------------------------------
SUB AmoGrpRes_CabIni 'inicializar documento
cnt=0                                              'limpar contador
end sub


SUB AmoGrpRes_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#
?================================================================================
?     Grupo                                                    Valor      Numero#
?================================================================================
end sub


SUB AmoGrpRes_Lin 'linha
?     @Grp                                            @vGrp              @nGrp  #
end sub


SUB AmoGrpRes_LinTit1 'titulo 1
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",2)                                'contar linhas
print                                              'linha de separacao
print tab(6) "Grupo: " SbtInf$("ACT",1)            'identificar grupo
end sub


SUB AmoGrpRes_LinSbt1 'subtotal 1
print tab(15) "Subtotal: " SbtInf$("ANT",1);       'identificar subtotal
print tab(43) FrmNum$(-4.0,TotCnt("Grp",1));       'numero de registos
print tab(54) FrmNum$(14.2,Total("vGrp",1));       'valor
print tab(73) FrmNum$( 7.0,Total("nGrp",1))        'registos no grupo
print                                              'linha de separacao
tmp=CntLin("INC",2)                                'contar linhas
x=TotLpz(1)                                        'limpar totais
end sub


SUB AmoGrpRes_Fim 'totais
?================================================================================
?                                 Totais : @GrpN0     @vGrpT0            @nGrpT0#
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


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


'------------------------------------------------------------------------------
'AmoPer - Amortizacoes do periodo
'------------------------------------------------------------------------------
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)

'- discriminado ---------------------------------------------------------------
SUB AmoPer_CabDisIni 'inicializar documento
cnt = 0                                'limpar contador
mLst$ = "D"                            'modo discriminado
end sub


SUB AmoPer_CabDis 'cabecalho
call AmoPerCab                         'listar cabecalho
end sub


'- resumido -------------------------------------------------------------------
SUB AmoPer_CabResIni 'inicializar documento (resumo)
cnt = 0                                'limpar contador
mLst$ = "R"                            'modo resumido
end sub


SUB AmoPer_CabRes 'cabecalho
call AmoPerCab                         'listar cabecalho
end sub


'- funcoes comuns -------------------------------------------------------------
SUB AmoPerCab '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         Nome                                                    Valor  #
?================================================================================
end sub


SUB AmoPer_Lin 'linha
mIpa$=SqlOpcCon$("Opc_CtaIpa")                     'modo de imputacao de amortizacao
vAmo=ImoAmoPer(mIpa$,SqlCmp$("Cod$"))              'valor 
if vAmo>0 then                                     'ha valor ?
   res=SqlOpcAct("AmoPer",vAmo)                    'guardar valor de amortizacao
   if mLst$="D" then                               'discriminar ?
      tmp=CntLin("INC",1)                          'contar linha
?@Cod          @Nome                                            @AmoPer         #
   else
      num = VarAcm("@Cod,@AmoPer")                 'acumular valor
   end if
end if
end sub


SUB AmoPer_LinTit1 'titulo 1
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",2)                                'contar linhas
print                                              'linha de separacao
print tab(5) "Grupo : " SbtInf$("ACT",1)           'identificar grupo
end sub


SUB AmoPer_LinTit2 'titulo 2
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",1)                                'contar linha
print tab(5) "Grupo : " SbtInf$("ACT",2)           'identificar grupo
end sub


SUB AmoPer_LinSbt1 'subtotal 1
print tab(5) "Subtotal: " SbtInf$("ANT",1);        'identificar subtotal
print tab(53) FrmNum$(-4.0,TotCnt("Cod",1));       'numero de registos
print tab(64) FrmNum$(14.2,Total("AmoPer",1))      'valor
print                                              'linha de separacao
tmp=CntLin("INC",2)                                'contar linhas
x=TotLpz(1)                                        'limpar totais
end sub


SUB AmoPer_LinSbt2 'sobtotal 2
print tab(5) "Subtotal: " SbtInf$("ANT",2);        'identificar subtotal
print tab(53) FrmNum$(-4.0,TotCnt("Cod",2));       'numero de registos
print tab(64) FrmNum$(14.2,TotCon("AmoPer",2))     'valor
print                                              'linha de separacao
tmp=CntLin("INC",2)                                'contar linhas
x=TotLpz(2)                                        'limpar totais
end sub


SUB AmoPer_Fim 'totais
?================================================================================
?                                           Totais : @BemN0     @AmoPerT0       #
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


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


##



