diff --git a/ce/ce4300.cpp b/ce/ce4300.cpp
index db3d7d9b0..58db6def5 100755
--- a/ce/ce4300.cpp
+++ b/ce/ce4300.cpp
@@ -14,6 +14,7 @@
#include "movce.h"
#include "salce.h"
#include "celib.h"
+#include "ce2101.h"
#include "ce4.h"
#include "ce4300.h"
@@ -177,7 +178,10 @@ real TStampa_proiez_ammo_rep::get_value (const int codcat, const char* field) co
void TStampa_proiez_ammo_rep::set_filter(const TStampa_proiez_ammo_mask& msk)
{
_anno = msk.get_int(F_ESERCIZIO);
+ const int gruppo = msk.get_int(F_GRUPPO);
+ const TString& specie = msk.get(F_SPECIE);
((TStampa_proiez_ammo_recordset*) recordset())->set_filter(msk);
+ //ditta_cespiti().set_attivita(_anno, gruppo, specie);
_cat.destroy();
@@ -195,8 +199,8 @@ void TStampa_proiez_ammo_rep::set_filter(const TStampa_proiez_ammo_mask& msk)
//Dalla lista cespiti deve risalire ai costi, agli ammortamenti e alle alienazioni;..
//..quindi servono i files collegati..
- TLocalisamfile salce(LF_SALCE);
- TLocalisamfile ammce(LF_AMMCE);
+ //TLocalisamfile salce(LF_SALCE);
+ //TLocalisamfile ammce(LF_AMMCE);
//ISAM query per trovare su MOVCE i movimenti relativi al cespite corrente nell'esercizio selezionato
TString query;
@@ -219,88 +223,76 @@ void TStampa_proiez_ammo_rep::set_filter(const TStampa_proiez_ammo_mask& msk)
TProgind pi(num, "Calcolo proiezione ammortamenti...");
for (cur_cespi = 0; cur_cespi.pos() < num; ++cur_cespi)
{
- pi.addstatus(1);
+ if (!pi.addstatus(1))
+ break;
- real costo_ini, costo_fin, alien, incremento, famm;
-
- //Colonna COSTO
const TString idcespite = rel_cespi.curr().get(CESPI_IDCESPITE);
- const int codcat = rel_cespi.curr().get_int(CESPI_CODCAT);
- salce.put(SALCE_IDCESPITE, idcespite);
- salce.put(SALCE_CODES, _anno);
- salce.put(SALCE_TPSALDO, 1);
- if (salce.read() == NOERR)
- {
- //costo ad inizio esercizio (=0 nel caso di acquisto cespite nell'anno in corso)
- costo_ini = salce.get_real(SALCE_CSTO);
- add_value(codcat, SALCE_CSTO, costo_ini);
- //costo a fine esercizio (=0 nel caso di vendita cespite nell'anno in corso)
- salce.next();
- costo_fin = salce.get_real(SALCE_CSTO);
- }
+ const int codcat = rel_cespi.curr().get_int(CESPI_CODCAT);
- //Colonna ALIENAZIONI
- //cerca tutti i movimenti di vendita relativi al cespite corrente all'interno dell'esercizio..
+ //NOVITA'! usa l'ggetto TCespite per completezza di calcoli
+ TCespite cespite(idcespite);
+ cespite.load_saldi(1, _anno);
+
+ //valore ammortizzabile (#VALAMM)
+ const real val_ammortizzabile = cespite.val_amm();
+ //residuo da ammortizzare (#RESAMM)
+ const real res_da_ammortizzare = cespite.res_amm();
+ if (res_da_ammortizzare <= ZERO)
+ continue;
+
+ //Colonna ALIENAZIONI e colonna ACQUISIZIONI/INCREMENTI
+ //cerca tutti i movimenti di vendita/acquisto relativi al cespite corrente all'interno dell'esercizio..
//..selezionato sulla maschera;somma i loro importi in modo da ricavare l'importo complessivo..
//..di tutti
+
+ real alienazioni, acquisizioni;
+
movce.set_var("#CESPITE", TVariant(idcespite)); //assegna il vero valore dell'idcespite alla query
for (bool ok = movce.move_first(); ok; ok = movce.move_next())
{
const real vendita = movce.get(MOVCE_IMPVEN).as_real();
- add_value(codcat, MOVCE_IMPVEN, vendita);
- alien += vendita;
+ add_value(codcat, "ALIENAZIONI", vendita);
+ alienazioni += vendita;
const real acquisto = movce.get(MOVCE_CSTO).as_real();
add_value(codcat, "ACQUISIZIONI", acquisto);
- incremento += acquisto;
+ acquisizioni += acquisto;
}
- //Colonna FAMM (fondo ammortamento)
- ammce.put(AMMCE_IDCESPITE, idcespite);
- ammce.put(AMMCE_CODES, _anno);
- ammce.put(AMMCE_TPSALDO, 1); //tiposaldo iniziale
- ammce.put(AMMCE_TPAMM, 1); //tipoamm fiscale
- if (ammce.read() == NOERR)
- {
- famm += ammce.get_real(AMMCE_QNOR);
- famm += ammce.get_real(AMMCE_QACC);
- famm += ammce.get_real(AMMCE_QANT);
- add_value(codcat, "AMMO0", famm);
- }
+ add_value(codcat, "VALAMM", val_ammortizzabile - acquisizioni + alienazioni);
+ add_value(codcat, "RESAMM", res_da_ammortizzare - acquisizioni + alienazioni);
- //Colonna QAMM
- //Per questi ci vuole un tiposaldo diverso
- ammce.put(AMMCE_TPSALDO, 2); //tiposaldo finale
- if (ammce.read() == NOERR)
+ //colonne AMMORTAMENTI
+ //anno selezionato nella mascheta
+ const TRectype& ammce = cespite.amm_pro();
+ real qamm;
+ qamm += ammce.get_real(AMMCE_QNOR);
+ qamm += ammce.get_real(AMMCE_QACC);
+ qamm += ammce.get_real(AMMCE_QANT);
+ add_value(codcat, "AMMO1", qamm);
+
+ //Colonne degli ammortamenti successivi all'anno selezionato
+ //Si calcolano in questo modo perche' si calcolano cespite x cespite;si usa costo_fin perche' e'..
+ //..quello che serve nel futuro!
+ real residuo = res_da_ammortizzare - qamm; //qamm e' AMMO1
+ TString8 ammo;
+ for (int a = 2; a <= 5 && residuo > ZERO; a++)
{
- real qamm;
- qamm += ammce.get_real(AMMCE_QNOR);
- qamm += ammce.get_real(AMMCE_QACC);
- qamm += ammce.get_real(AMMCE_QANT);
- add_value(codcat, "AMMO1", qamm);
-
- //Colonne degli ammortamenti
- //Si calcolano in questo modo perche' si calcolano cespite x cespite;si usa costo_fin perche' e'..
- //..quello che serve nel futuro!
- real residuo = costo_fin - alien - famm - qamm; //qamm e' AMMO1
- TString8 ammo;
- for (int a = 2; a <= 5 && residuo > ZERO; a++)
+ ammo.format("AMMO%d", a);
+ if (qamm >= residuo)
{
- ammo.format("AMMO%d", a);
- if (qamm >= residuo)
- {
- add_value(codcat, ammo, residuo);
- residuo = ZERO;
- }
- else
- {
- add_value(codcat, ammo, qamm);
- residuo -= qamm;
- }
+ add_value(codcat, ammo, residuo);
+ residuo = ZERO;
+ }
+ else
+ {
+ add_value(codcat, ammo, qamm);
+ residuo -= qamm;
}
- if (residuo > ZERO)
- add_value(codcat, "AMMOX", residuo);
}
+ if (residuo > ZERO)
+ add_value(codcat, "AMMOX", residuo);
+
} //for(cur_cespi...
@@ -325,14 +317,19 @@ bool TStampa_proiez_ammo_rep::get_usr_val(const TString& name, TVariant& var) co
var.set(dal - 1L);
return true;
}
- if (name == "#COSTO") //costo
+ if (name == "#VALAMM") //costo
{
- var = get_value(codcat, SALCE_CSTO);
+ var = get_value(codcat, "VALAMM");
return true;
}
- if (name == "#ALIENAZ") //movimenti di vendita
+ if (name == "#RESAMM") //residuo da ammortizzare
+ {
+ var = get_value(codcat, "RESAMM");
+ return true;
+ }
+ if (name == "#ALIENAZIONI") //movimenti di vendita
{
- var = get_value(codcat, MOVCE_IMPVEN);
+ var = get_value(codcat, "ALIENAZIONI");
return true;
}
if (name == "#ACQUISIZIONI") //movimenti di vendita
diff --git a/ce/ce4300a.rep b/ce/ce4300a.rep
index 9511b2f72..27afb6f34 100755
--- a/ce/ce4300a.rep
+++ b/ce/ce4300a.rep
@@ -10,14 +10,16 @@
-
+
#SYSTEM.RAGSOC
+
#SYSTEM.DATE
+
#REPORT.PAGE
@@ -26,8 +28,8 @@
I0
MESSAGE RESET,F2
-
-
+
+
I0
MESSAGE COPY,F2.100
@@ -36,57 +38,58 @@
-
-
-
+
+
+
#FINESCPREC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#ANNOES
-
+
#ANNOES
-
+
#ANNOES
-
+
#ANNOES
-
+
#ANNOES+1
-
+
#ANNOES+2
-
+
#ANNOES+3
-
+
#ANNOES+4
-
-
+
+
+ #RESAMME;0
CODTAB[7,8]
@@ -94,46 +97,46 @@
S0
- #COSTO
+ #VALAMM
MESSAGE ADD,F2.101
- #AMMO0
+ #VALAMM-#RESAMM
MESSAGE ADD,F2.102
- #ALIENAZ
+ #ALIENAZIONI
MESSAGE ADD,F2.103
- IF((#101-#102)C;0,0,#101-#102)
+ #RESAMM
MESSAGE ADD,F2.104
#ACQUISIZIONI
MESSAGE ADD,F2.105
-
+
#AMMO1
MESSAGE ADD,F2.106
-
+
#AMMO2
MESSAGE ADD,F2.107
-
+
#AMMO3
MESSAGE ADD,F2.108
-
+
#AMMO4
MESSAGE ADD,F2.109
-
+
#AMMO5
MESSAGE ADD,F2.110
-
+
#AMMOX
MESSAGE ADD,F2.111
@@ -156,41 +159,43 @@ THEN
#THIS !
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
MESSAGE ADD,F1.105
-
+
MESSAGE ADD,F1.106
-
+
MESSAGE ADD,F1.107
-
+
MESSAGE ADD,F1.108
-
+
MESSAGE ADD,F1.109
-
+
MESSAGE ADD,F1.110
-
+
-
+
@@ -199,37 +204,37 @@ THEN
-
+
MESSAGE ADD,F1.101
-
+
MESSAGE ADD,F1.102
-
+
MESSAGE ADD,F1.103
-
+
MESSAGE ADD,F1.104
-
+
MESSAGE ADD,F1.105
-
+
MESSAGE ADD,F1.106
-
+
MESSAGE ADD,F1.107
-
+
MESSAGE ADD,F1.108
-
+
MESSAGE ADD,F1.109
-
+
MESSAGE ADD,F1.110
-
+
MESSAGE ADD,F1.111