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