diff --git a/ca/ca3883.cpp b/ca/ca3883.cpp index 61979eb5e..3d0832777 100755 --- a/ca/ca3883.cpp +++ b/ca/ca3883.cpp @@ -1617,18 +1617,39 @@ const TVariant& TPrint_saldana_recordset::get(const char* column_name) const if (strncmp(column_name, "RECORD.", 7) == 0) column_name += 7; - if (_forza_maturato && strcmp(column_name, "COS_MAT") == 0) + if (strcmp(column_name, "COS_PERC") == 0) { const int indice = get("LEVEL").as_int(); - if (indice <= 1) - column_name = "COS_BDG"; + if (_forza_maturato && indice <= 1) + var.set(CENTO); + else + { + const TString* val_bdg = (TString*)riga.objptr("COS_BDG"); + if (val_bdg == NULL || real::is_null(*val_bdg)) + var.set(CENTO); + else + { + const TString* val_mat = (TString*)riga.objptr("COS_MAT"); + if (val_mat == NULL || real::is_null(*val_mat)) + var.set(ZERO); + else + { + const real bdg(*val_bdg); + const real mat(*val_mat); + const real perc = mat * CENTO / bdg; + var.set(perc); + } + } + } + } + else + { + const TString* val = (TString*)riga.objptr(column_name); + if (val) + var.set(*val); + else + var.set_null(); } - - const TString* val = (TString*)riga.objptr(column_name); - if (val) - var.set(*val); - else - var.set_null(); } return var; } diff --git a/ca/ca3900a.rep b/ca/ca3900a.rep index 354a875a0..22fbdd59a 100755 --- a/ca/ca3900a.rep +++ b/ca/ca3900a.rep @@ -130,21 +130,7 @@ MESSAGE RESET,F3.108 MESSAGE ADD,F3.102 - #101 @ \ legge il budget -0 = IF \ se 0 per evitare la divisione per 0 mette 100 nella % - 100 -ELSE - #102 @ - 100 * - #101 @ F; - 2 ROUND - DUP - 100 E; IF - DROP - 100 - THEN -THEN -#THIS ! + #COS_PERC #RIC_BDG @@ -178,7 +164,7 @@ THEN MESSAGE ADD,F3.108 - + #105 @ 0