Migliorata gestione ammortamenti su parti eliminate
git-svn-id: svn://10.65.10.50/branches/R_10_00@23019 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
b1c386d1db
commit
0d2e2d4bca
@ -140,25 +140,22 @@ class TCCC_mask : public TAutomask
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
TCCC_mask();
|
TCCC_mask();
|
||||||
virtual ~TCCC_mask() { }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//costruttore: se la chiave ha l'analitica fa comparire i campi per cms/cdc/fase
|
//costruttore: se la chiave ha l'analitica fa comparire i campi per cms/cdc/fase
|
||||||
//se inoltre ha UsePdcc=false (ovvero usa pdc analitico puro) -> ci vogliono anche i conti!
|
//se inoltre ha UsePdcc=false (ovvero usa pdc analitico puro) -> ci vogliono anche i conti!
|
||||||
TCCC_mask::TCCC_mask()
|
TCCC_mask::TCCC_mask() : TAutomask("cetbccc")
|
||||||
: TAutomask("cetbccc")
|
|
||||||
{
|
{
|
||||||
//parte nascondendo i campi analitici
|
//parte nascondendo i campi analitici
|
||||||
hide(-2);
|
hide(-2);
|
||||||
|
|
||||||
//controllo analitica su chiave
|
|
||||||
_has_ca = dongle().active(CAAUT);
|
|
||||||
|
|
||||||
//inizializza i flag che servono un pò dappertutto
|
//inizializza i flag che servono un pò dappertutto
|
||||||
//di base usa il pdcc
|
//di base usa il pdcc
|
||||||
TConfig& cfg = ca_config();
|
TConfig& cfg = ca_config();
|
||||||
|
|
||||||
|
//controllo analitica su chiave e parametri
|
||||||
|
_has_ca = cfg.get_int("Authorizations") > 1;
|
||||||
_use_pdcc = cfg.get_bool("UsePdcc");
|
_use_pdcc = cfg.get_bool("UsePdcc");
|
||||||
|
|
||||||
//se la chiave ha CA -> campi cms/cdc/fase!
|
//se la chiave ha CA -> campi cms/cdc/fase!
|
||||||
@ -345,6 +342,10 @@ bool TCCE_mask::is_leap(int year) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
real TCCE_mask::calc_coeff(const TDate& ies, const TDate& fes) const
|
real TCCE_mask::calc_coeff(const TDate& ies, const TDate& fes) const
|
||||||
|
{
|
||||||
|
const bool rip_by_day = get_int(F_TIPO_RIP) != 1;
|
||||||
|
real coeff = UNO;
|
||||||
|
if (rip_by_day) // ripartizione per giorno
|
||||||
{
|
{
|
||||||
const real tot_es = fes - ies + 1;
|
const real tot_es = fes - ies + 1;
|
||||||
real max_es = 365;
|
real max_es = 365;
|
||||||
@ -355,8 +356,14 @@ real TCCE_mask::calc_coeff(const TDate& ies, const TDate& fes) const
|
|||||||
if ((im < 3 && (fm >= 3 || fy > iy) && is_leap(iy)) ||
|
if ((im < 3 && (fm >= 3 || fy > iy) && is_leap(iy)) ||
|
||||||
(fm >= 3 && (im < 3 || iy < fy) && is_leap(fy)))
|
(fm >= 3 && (im < 3 || iy < fy) && is_leap(fy)))
|
||||||
max_es += 1.0;
|
max_es += 1.0;
|
||||||
real coeff = tot_es / max_es;
|
coeff = tot_es / max_es;
|
||||||
coeff.round(9);
|
}
|
||||||
|
else // ripartizione mensile
|
||||||
|
{
|
||||||
|
const int fm = fes.year()*12 + fes.month();
|
||||||
|
const int sm = ies.year()*12 + ies.month();
|
||||||
|
coeff = real(fm - sm + 1) / real(12);
|
||||||
|
}
|
||||||
return coeff;
|
return coeff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -379,13 +386,17 @@ bool TCCE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
a.run();
|
a.run();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_DURATA:
|
case F_TIPO_RIP:
|
||||||
if (e == fe_init && !field(F_CODESER).empty())
|
if (e == fe_modify || e == fe_init)
|
||||||
{
|
{
|
||||||
const TDate ies = get_date(F_DATAINI);
|
const TDate ies = get_date(F_DATAINI);
|
||||||
const TDate fes = get_date(F_DATAFINE);
|
const TDate fes = get_date(F_DATAFINE);
|
||||||
|
if (ies.ok() && fes >= ies)
|
||||||
|
{
|
||||||
set(F_DURATA, fes-ies+1);
|
set(F_DURATA, fes-ies+1);
|
||||||
set(F_COEFF_DURATA, calc_coeff(ies, fes));
|
TReal_field& cd = (TReal_field&)efield(F_COEFF_DURATA);
|
||||||
|
cd.set(calc_coeff(ies, fes).string(0, cd.decimals()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -57,6 +57,8 @@ int TForce_mov_qmask::calcola_stato_attivita()
|
|||||||
const TRectype& curr_ccb = cache().get("CCB", str);
|
const TRectype& curr_ccb = cache().get("CCB", str);
|
||||||
if (curr_ccb.get_bool("B1")) // Bollato stampato
|
if (curr_ccb.get_bool("B1")) // Bollato stampato
|
||||||
_staat = 1;
|
_staat = 1;
|
||||||
|
else
|
||||||
|
_staat = 0;
|
||||||
|
|
||||||
TDitta_cespiti& dc = ditta_cespiti();
|
TDitta_cespiti& dc = ditta_cespiti();
|
||||||
dc.set_attivita(ese, gru, spe);
|
dc.set_attivita(ese, gru, spe);
|
||||||
@ -67,13 +69,12 @@ int TForce_mov_qmask::calcola_stato_attivita()
|
|||||||
int TForce_mov_qmask::calcola_ammo_eliminate()
|
int TForce_mov_qmask::calcola_ammo_eliminate()
|
||||||
{
|
{
|
||||||
const int ese = get_int(F_ESERCIZIO);
|
const int ese = get_int(F_ESERCIZIO);
|
||||||
|
|
||||||
TString4 str; str.format("%04d", ese);
|
TString4 str; str.format("%04d", ese);
|
||||||
|
|
||||||
const TRectype& curr_cce = cache().get("CCE", str);
|
const TRectype& curr_cce = cache().get("CCE", str);
|
||||||
if (curr_cce.get_bool("B3")) //possibilitá ammortamenti su parti eliminate (si prosegue solo se TRUE)
|
if (curr_cce.get_bool("B3")) //possibilitá ammortamenti su parti eliminate (si prosegue solo se TRUE)
|
||||||
_ammoelim = 1;
|
_ammoelim = 1;
|
||||||
|
else
|
||||||
|
_ammoelim = 0;
|
||||||
return _ammoelim;
|
return _ammoelim;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,7 +118,7 @@ bool TForce_mov_qmask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
calcola_stato_attivita();
|
calcola_stato_attivita();
|
||||||
calcola_ammo_eliminate();
|
calcola_ammo_eliminate();
|
||||||
if (_ammoelim != 1)
|
if (_ammoelim != 1)
|
||||||
return error_box(TR("Non previsti ammortamenti sulle parti eliminate"));
|
return error_box(FR("Non è previsto l'ammortamento sulle parti parti eliminate nell'esercizio %s"), (const char*)o.get());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -125,23 +126,21 @@ bool TForce_mov_qmask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
if (e == fe_init || e == fe_modify) //seleziona il filtro da applicare alla maschera nel campo del movimento
|
if (e == fe_init || e == fe_modify) //seleziona il filtro da applicare alla maschera nel campo del movimento
|
||||||
{
|
{
|
||||||
const TString& ces = get(F_IDCESPITE);
|
const TString& ces = get(F_IDCESPITE);
|
||||||
const bool cesok = !real::is_null(ces);
|
|
||||||
TString filter;
|
TString filter;
|
||||||
filter << "(IDRET=\"\")&&(ANSI(DTMOV)>=ANSI(#" << F_INIZIO_ES
|
filter << "(IDRET=\"\")&&(BETWEEN(DTMOV,#" << F_INIZIO_ES
|
||||||
<< "))&&(ANSI(DTMOV)<=ANSI(#" << F_FINE_ES << "))";
|
<< ",#" << F_FINE_ES << "))";
|
||||||
if (cesok) // se viene selezionato un particolare cespite al filtro si aggiunge il suo codice
|
if (ces.full()) // se viene selezionato un particolare cespite al filtro si aggiunge il suo codice
|
||||||
filter << "&&(IDCESPITE==\"" << ces << "\")";
|
filter << "&&(IDCESPITE==\"" << ces << "\")";
|
||||||
|
|
||||||
TEdit_field& m = efield(F_IDMOV); // setta il filtro della ricerca sulla maschera
|
TEdit_field& m = efield(F_IDMOV); // setta il filtro della ricerca sulla maschera
|
||||||
m.browse()->set_filter(filter);
|
m.browse()->set_filter(filter);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (e == fe_close)
|
if (e == fe_close)
|
||||||
{
|
{
|
||||||
if (stato_attivita() == 1)
|
if (stato_attivita() == 1)
|
||||||
warning_box(TR("E' stato stampato il bollato dell'anno:\nnon sono permesse forzature"));
|
warning_box(TR("E' stato stampato il bollato dell'anno:\nnon sono permesse forzature"));
|
||||||
if (ammo_eliminate() == 0)
|
if (ammo_eliminate() == 0)
|
||||||
warning_box(TR("Non é previsto l'ammortamento sulle parti eliminate nell'esercizio selezionato"));
|
warning_box(TR("Non è previsto l'ammortamento sulle parti eliminate nell'esercizio selezionato"));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -169,7 +168,7 @@ bool TForce_mov_qmask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
const TRectype& categoria = ces.categoria();
|
const TRectype& categoria = ces.categoria();
|
||||||
bool non_ammortizzabile = categoria.get_bool("B0");
|
bool non_ammortizzabile = categoria.get_bool("B0");
|
||||||
if (non_ammortizzabile)
|
if (non_ammortizzabile)
|
||||||
return error_box(TR("Ammortamenti non effettuabili perché la categoria del cespite non é ammortizzabile"));
|
return error_box(TR("Ammortamenti non effettuabili perché la categoria del cespite non è ammortizzabile"));
|
||||||
|
|
||||||
if (!curr_movce.empty())
|
if (!curr_movce.empty())
|
||||||
{
|
{
|
||||||
@ -183,7 +182,7 @@ bool TForce_mov_qmask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
const TDate dataini(get(F_INIZIO_ES));
|
const TDate dataini(get(F_INIZIO_ES));
|
||||||
const TDate datafine(get(F_FINE_ES));
|
const TDate datafine(get(F_FINE_ES));
|
||||||
if ( dtmov < dataini || dtmov > datafine)
|
if ( dtmov < dataini || dtmov > datafine)
|
||||||
return error_box(TR("Il movimento selezionato non é di competenza dell'esercizio selezionato"));
|
return error_box(TR("Il movimento selezionato non è di competenza dell'esercizio selezionato"));
|
||||||
}
|
}
|
||||||
|
|
||||||
key.format("%s|%s|1", (const char *) idcespite, (const char *) get(F_IDMOV));
|
key.format("%s|%s|1", (const char *) idcespite, (const char *) get(F_IDMOV));
|
||||||
@ -209,8 +208,8 @@ bool TForce_mov_qmask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
if (ammmv.empty())
|
if (ammmv.empty())
|
||||||
return error_box(TR("Ammortamenti fiscali sui movimenti incoerenti per il movimento selezionato"));
|
return error_box(TR("Ammortamenti fiscali sui movimenti incoerenti per il movimento selezionato"));
|
||||||
calc_res_mov(ces, curr_movce, ammmv); //calcolo del residuo fiscale in uscita maschera di selezione
|
calc_res_mov(ces, curr_movce, ammmv); //calcolo del residuo fiscale in uscita maschera di selezione
|
||||||
if (_residuof==ZERO)
|
if (_residuof.is_zero())
|
||||||
return error_box(TR("Impossibile forzare ammortamento perché non esiste residuo fiscale\nda ammortizzare per le parti eliminate del cespite"));
|
warning_box(TR("Non esiste residuo fiscale\nda ammortizzare per le parti eliminate del cespite"));
|
||||||
}
|
}
|
||||||
|
|
||||||
key.format("%s|%s|2", (const char *) idcespite, (const char *) get(F_IDMOV));
|
key.format("%s|%s|2", (const char *) idcespite, (const char *) get(F_IDMOV));
|
||||||
@ -220,8 +219,8 @@ bool TForce_mov_qmask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
if (ammmv.empty())
|
if (ammmv.empty())
|
||||||
return error_box(TR("Ammortamenti civilistici sui movimenti incoerenti per il movimento selezionato"));
|
return error_box(TR("Ammortamenti civilistici sui movimenti incoerenti per il movimento selezionato"));
|
||||||
calc_res_mov(ces, curr_movce, ammmv); //calcolo del residuo civilistico in uscita maschera di selezione
|
calc_res_mov(ces, curr_movce, ammmv); //calcolo del residuo civilistico in uscita maschera di selezione
|
||||||
if (_residuoc==ZERO)
|
if (_residuoc.is_zero())
|
||||||
return error_box(TR("Impossibile forzare ammortamento perché non esiste residuo civilistico\nda ammortizzare per le parti eliminate del cespite"));
|
warning_box(TR("Non esiste residuo civilistico\nda ammortizzare per le parti eliminate del cespite"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,7 @@ BEGIN
|
|||||||
DISPLAY "Codice esercizio" CODTAB
|
DISPLAY "Codice esercizio" CODTAB
|
||||||
DISPLAY "Inizio esercizio" 104@->D0
|
DISPLAY "Inizio esercizio" 104@->D0
|
||||||
DISPLAY "Fine esercizio" 104@->D1
|
DISPLAY "Fine esercizio" 104@->D1
|
||||||
|
DISPLAY "Ammortamento\nparti vendute@12C" B3
|
||||||
OUTPUT F_ESERCIZIO CODTAB
|
OUTPUT F_ESERCIZIO CODTAB
|
||||||
OUTPUT F_INIZIO_ES 104@->D0
|
OUTPUT F_INIZIO_ES 104@->D0
|
||||||
OUTPUT F_FINE_ES 104@->D1
|
OUTPUT F_FINE_ES 104@->D1
|
||||||
@ -136,12 +137,14 @@ NUMBER F_IDMOV 11
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 10 "Movimento "
|
PROMPT 1 10 "Movimento "
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
USE LF_MOVCE SELECT (IDRET="")&&(ANSI(DTMOV)>=ANSI(#F_INIZIO_ES))&&(ANSI(DTMOV)<=ANSI(#F_FINE_ES))
|
USE LF_MOVCE SELECT (IDRET="")&&(BETWEEN(DTMOV,#F_INIZIO_ES,#F_FINE_ES))
|
||||||
JOIN LF_CESPI INTO IDCESPITE==IDCESPITE
|
JOIN LF_CESPI INTO IDCESPITE==IDCESPITE
|
||||||
|
JOIN %TMC INTO CODTAB==CODMOV
|
||||||
INPUT IDMOV F_IDMOV
|
INPUT IDMOV F_IDMOV
|
||||||
DISPLAY "Movimento@11" IDMOV
|
DISPLAY "Movimento@11" IDMOV
|
||||||
DISPLAY "Data mov.@10" DTMOV
|
DISPLAY "Data mov.@10" DTMOV
|
||||||
DISPLAY "Cod. tipo mov." CODMOV
|
DISPLAY "Tipo\nmov.@4" CODMOV
|
||||||
|
DISPLAY "Ammesso\nAmmort.@7C" 4->B4
|
||||||
DISPLAY "Data doc.@10" DTDOC
|
DISPLAY "Data doc.@10" DTDOC
|
||||||
DISPLAY "Tipo doc." TPDOC
|
DISPLAY "Tipo doc." TPDOC
|
||||||
DISPLAY "Numero doc." NDOC
|
DISPLAY "Numero doc." NDOC
|
||||||
|
12
ce/ce4.cpp
12
ce/ce4.cpp
@ -7,14 +7,10 @@ int main(int argc,char** argv)
|
|||||||
const int r = (argc > 1) ? (argv[1][1]-'0') : 0;
|
const int r = (argc > 1) ? (argv[1][1]-'0') : 0;
|
||||||
switch (r)
|
switch (r)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1: ce4200(argc,argv); break; //calcolo cespiti per commessa
|
||||||
ce4200(argc,argv); break; //calcolo cespiti per commessa
|
case 2: ce4300(argc,argv); break; //stampa proiezione ammortamenti cespiti
|
||||||
case 2:
|
case 3: ce4400(argc,argv); break; //contabilizzazione cespiti
|
||||||
ce4300(argc,argv); break; //stampa proiezione ammortamenti cespiti
|
case 4: ce4500(argc,argv); break; //stampa cespiti in contabilitŕ analitica
|
||||||
case 3:
|
|
||||||
ce4400(argc,argv); break; //contabilizzazione cespiti
|
|
||||||
case 4:
|
|
||||||
ce4500(argc,argv); break; //stampa cespiti in contabilitŕ analitica
|
|
||||||
case 0:
|
case 0:
|
||||||
default: ce4100(argc,argv); break; // ripartizione analitica cespiti
|
default: ce4100(argc,argv); break; // ripartizione analitica cespiti
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ public:
|
|||||||
//
|
//
|
||||||
real TCalc_cesp_cms::calc_perc_util_cesp(const TRectype& salcecms_rec, const TDate& dtinices, const TDate& dtfineces)
|
real TCalc_cesp_cms::calc_perc_util_cesp(const TRectype& salcecms_rec, const TDate& dtinices, const TDate& dtfineces)
|
||||||
{
|
{
|
||||||
//adeesso prende la percentuale di utilizzo del cespite nella commessa..
|
//adesso prende la percentuale di utilizzo del cespite nella commessa..
|
||||||
real percutil = salcecms_rec.get_real(SALCECMS_PERCUTIL);
|
real percutil = salcecms_rec.get_real(SALCECMS_PERCUTIL);
|
||||||
//normalizza la percentuale...
|
//normalizza la percentuale...
|
||||||
percutil = percutil / CENTO;
|
percutil = percutil / CENTO;
|
||||||
@ -130,7 +130,6 @@ real TCalc_cesp_cms::calc_perc_util_cesp(const TRectype& salcecms_rec, const TDa
|
|||||||
if (!dtfinecms.ok())
|
if (!dtfinecms.ok())
|
||||||
dtfinecms = cms.get_date(COMMESSE_DATAFINE);
|
dtfinecms = cms.get_date(COMMESSE_DATAFINE);
|
||||||
if (dtfinecms.ok() && (dtfinecms < dtfineces))
|
if (dtfinecms.ok() && (dtfinecms < dtfineces))
|
||||||
|
|
||||||
dtfine = dtfinecms;
|
dtfine = dtfinecms;
|
||||||
|
|
||||||
TDate dtini = dtinices;
|
TDate dtini = dtinices;
|
||||||
|
@ -229,7 +229,7 @@ void TStampa_proiez_ammo_rep::set_filter(const TStampa_proiez_ammo_mask& msk)
|
|||||||
const TString idcespite = rel_cespi.curr().get(CESPI_IDCESPITE);
|
const TString idcespite = rel_cespi.curr().get(CESPI_IDCESPITE);
|
||||||
const int codcat = rel_cespi.curr().get_int(CESPI_CODCAT);
|
const int codcat = rel_cespi.curr().get_int(CESPI_CODCAT);
|
||||||
|
|
||||||
//NOVITA'! usa l'ggetto TCespite per completezza di calcoli
|
//NOVITA'! usa l'oggetto TCespite per completezza di calcoli
|
||||||
TCespite cespite(idcespite);
|
TCespite cespite(idcespite);
|
||||||
cespite.load_saldi(1, _anno);
|
cespite.load_saldi(1, _anno);
|
||||||
|
|
||||||
|
@ -242,7 +242,7 @@ bool TSaldo_per_codice::use_pdcc() const
|
|||||||
static char _use_pdcc = ' ';
|
static char _use_pdcc = ' ';
|
||||||
if (_use_pdcc == ' ')
|
if (_use_pdcc == ' ')
|
||||||
{
|
{
|
||||||
TConfig cfg = ca_config();
|
TConfig& cfg = ca_config();
|
||||||
_use_pdcc = cfg.get_bool("UsePdcc");
|
_use_pdcc = cfg.get_bool("UsePdcc");
|
||||||
}
|
}
|
||||||
return _use_pdcc != '\0';
|
return _use_pdcc != '\0';
|
||||||
@ -478,7 +478,7 @@ int TSaldo_per_codice::compila_rmov_CG(const int tipo, const int riga_nor, TArra
|
|||||||
if (!ok)
|
if (!ok)
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg.format(FR("Il codice cespite %s non e' un sottoconto valido"), (const char*)_idcespite);
|
msg.format(FR("Il codice cespite %s non è un sottoconto valido"), (const char*)_idcespite);
|
||||||
log.log(2, msg);
|
log.log(2, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -123,8 +123,7 @@ Picture = <ce00>
|
|||||||
Module = 11
|
Module = 11
|
||||||
Flags = ""
|
Flags = ""
|
||||||
Item_01 = "Cambio esercizio", "ce2 -1", "F"
|
Item_01 = "Cambio esercizio", "ce2 -1", "F"
|
||||||
Item_02 = "Riattribuzione percentuali", "", ""
|
Item_02 = "Rispristino stampa bollato", "ce2 -4", "F"
|
||||||
Item_03 = "Rispristino stampa bollato", "ce2 -4", "F"
|
|
||||||
|
|
||||||
[CEMENU_013]
|
[CEMENU_013]
|
||||||
Caption = "Cespiti per contabilità analitica"
|
Caption = "Cespiti per contabilità analitica"
|
||||||
|
@ -515,17 +515,17 @@ PAGE "Conti CA" 0 2 0 0
|
|||||||
|
|
||||||
GROUPBOX DLG_NULL 76 6
|
GROUPBOX DLG_NULL 76 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 "@bAmm. Normali"
|
PROMPT 1 0 "@bAmmortamenti Normali"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 76 6
|
GROUPBOX DLG_NULL 76 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 6 "@bAmm. Accelerati"
|
PROMPT 1 6 "@bAmmortamenti Accelerati"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 76 6
|
GROUPBOX DLG_NULL 76 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 12 "@bAmm. Anticipati"
|
PROMPT 1 12 "@bAmmortamenti Anticipati"
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user