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