Patch level : 12.0 930

Files correlati     : ve0.exe ve1.exe ve5.exe ve6.exe
Commento            :

- Aggiunte funzioni sulle righe documento :

  QTACONAI(<categoria> [ <tipo calcolo (0=netto, 1=esente, 2=lordo), <numero decimali 5])
  VALCONAI(<categoria> [ <tipo calcolo (0=netto, 1=esente, 2=lordo), <numero decimali 5])
This commit is contained in:
Alessandro Bonazzi 2020-01-22 00:20:02 +01:00
parent 9ad615fc40
commit e05c633c7b

View File

@ -615,9 +615,9 @@ int TExpr_documento::parse_user_func(const char * name, int nparms) const
if (strcmp(name, "NRATE") == 0)
return nparms == 0 ? _nrate : -1;
if (strcmp(name, "QTACONAI") == 0)
return nparms >= 1 && nparms < 3 ? _qtaconai : -1;
return nparms >= 1 && nparms < 4 ? _qtaconai : -1;
if (strcmp(name, "VALCONAI") == 0)
return nparms >= 1 && nparms < 3 ? _valconai : -1;
return nparms >= 1 && nparms < 4 ? _valconai : -1;
return -1;
}
@ -1068,11 +1068,10 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
break;
case _qtaconai:
{
int sp = stack.count();
int tipo_calcolo = (nparms > 1) ? (int)stack.pop_real().integer() : 0;
TString cat = stack.pop_string();
const int ndec = (nparms > 2) ? (int)stack.pop_real().integer() : 5;
const int tipo_calcolo = (nparms > 1) ? (int)stack.pop_real().integer() : 0;
const TString cat = stack.pop_string();
if (stack.count() >= sp - 2)
stack.push(ZERO);
real & val = stack.peek_real();
@ -1107,7 +1106,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
val *= (perc_esenz / CENTO);
}
val.round(5);
val.round(ndec);
}
else
val = ZERO;
@ -1115,12 +1114,11 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
break;
case _valconai:
{
int sp = stack.count();
int tipo_calcolo = (nparms > 1) ? (int)stack.pop_real().integer() : 0;
TString cat = stack.pop_string();
const int ndec = (nparms > 2) ? (int)stack.pop_real().integer() : 5;
const int tipo_calcolo = (nparms > 1) ? (int)stack.pop_real().integer() : 0;
const TString cat = stack.pop_string();
TString_array sottocat_found;
if (stack.count() >= sp - 2)
stack.push(ZERO);
real & val = stack.peek_real();
@ -1155,7 +1153,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
const real prezzo = rdoc.get_real(RDOC_PREZZO);
val = valqta * prezzo;
val.round(5);
val.round(ndec);
break;
}