Patch level : 12.0

Files correlati     :
Commento:
continuare modifica cespiti
This commit is contained in:
Alessandro Bonazzi 2022-07-21 09:46:58 +02:00
parent f66904be8a
commit 554c93fc23

View File

@ -1027,7 +1027,6 @@ HIDDEN const TString& catdi_get(const TRectype* pcatdi, const char* name, int si
const TString& TCespite::ammini_get(const char* pstar) const const TString& TCespite::ammini_get(const char* pstar) const
{ {
TString16 val = _ammini.get(pstar); TString16 val = _ammini.get(pstar);
TToken_string special = "AMMRIT|CSCEN|PNOR|PACC|PANT"; TToken_string special = "AMMRIT|CSCEN|PNOR|PACC|PANT";
const int fld = special.get_pos(pstar); const int fld = special.get_pos(pstar);
if (fld >= 0) // Should ALWAYS happen: tuttavia non è affatto grave! if (fld >= 0) // Should ALWAYS happen: tuttavia non è affatto grave!
@ -1035,7 +1034,7 @@ const TString& TCespite::ammini_get(const char* pstar) const
const TDitta_cespiti& dc = ditta_cespiti(); const TDitta_cespiti& dc = ditta_cespiti();
const TRectype* pcatdi = NULL; const TRectype* pcatdi = NULL;
const TRectype* pcac = NULL; const TRectype* pcac = NULL;
const bool sospamm = _sosp_covid && dc.esercizio_corrente() >= 2020; const bool sospamm = _sosp_covid && dc.esercizio_corrente() >= 2020 && _tipo_sit != 3;
// L'utente fa le sue scelte: ma saranno sensate e coerenti? // L'utente fa le sue scelte: ma saranno sensate e coerenti?
int scelte = _ammini.get_int(AMMCE_SCELTE); int scelte = _ammini.get_int(AMMCE_SCELTE);
@ -1048,8 +1047,8 @@ const TString& TCespite::ammini_get(const char* pstar) const
TString80 key; key.format("%d|%d|%s|%d", anno, gruppo, (const char*)specie, categ); TString80 key; key.format("%d|%d|%s|%d", anno, gruppo, (const char*)specie, categ);
const TRectype& catdi = cache().get(LF_CATDI, key); const TRectype& catdi = cache().get(LF_CATDI, key);
if (get_int(CESPI_IDCESPITE) == 452 && _tipo_sit != 3) // if (get_long(CESPI_IDCESPITE) == 452 && _tipo_sit != 3)
int i = 1; // int i = 1;
if (!catdi.empty()) if (!catdi.empty())
{ {
@ -1101,8 +1100,7 @@ const TString& TCespite::ammini_get(const char* pstar) const
} }
break; break;
case tc_immateriale: case tc_immateriale:
// if (scelte == 2 || (_tipo_sit != 1 && sospamm)) if (sospamm)
if (sospamm && _tipo_sit == 1)
val = "0.00"; val = "0.00";
else else
{ {
@ -1114,13 +1112,15 @@ const TString& TCespite::ammini_get(const char* pstar) const
break; break;
case tc_pluriennale: case tc_pluriennale:
// if (scelte == 2 || (_tipo_sit != 1 && sospamm)) if (sospamm)
if (sospamm && _tipo_sit == 1)
val = "0.00"; val = "0.00";
if (scelte == 2) else
val = catdi_get(pcatdi, CATDI_PFNORVN, _tipo_sit); {
else if (scelte == 2)
val = pcac->get("R15"); val = catdi_get(pcatdi, CATDI_PFNORVN, _tipo_sit);
else
val = pcac->get("R15");
}
break; break;
default: default:
break; break;
@ -1954,29 +1954,34 @@ void TCespite::calc_amm_residui(bool is_valid)
{ {
const int anniamm = _salini.get_int(SALCE_ANNIAMM); const int anniamm = _salini.get_int(SALCE_ANNIAMM);
const int vincolo = get_int(CESPI_VINCOLO); const int vincolo = get_int(CESPI_VINCOLO);
const TDitta_cespiti& dc = ditta_cespiti();
const bool sospamm = _sosp_covid && dc.esercizio_corrente() >= 2020 && _tipo_sit != 3;
real qnor; // Valore non calcolato real qnor; // Valore non calcolato
if ((tc == tc_pluriennale && vincolo == 2 && ammini_get_real(AMMCE_PNOR).is_zero()) || if ((tc == tc_pluriennale && vincolo == 2 && ammini_get_real(AMMCE_PNOR).is_zero()) ||
(tc == tc_immateriale && anniric > 0) || (tc == tc_materiale && anniric > 0)) (tc == tc_immateriale && anniric > 0) || (tc == tc_materiale && anniric > 0))
{ {
if (anniric > anniamm) if (anniric > anniamm && !sospamm)
qnor = resamm / (anniric - anniamm); qnor = resamm / (anniric - anniamm);
} else } else
if (tc == tc_pluriennale && vincolo == 3) if (tc == tc_pluriennale && vincolo == 3)
{ {
if (anniric > anniamm) if (anniric > anniamm && !sospamm)
qnor = val_amm() / anniric; qnor = val_amm() / anniric;
} else } else
if (tc == tc_pluriennale && vincolo == 1) if (tc == tc_pluriennale && vincolo == 1)
{ {
if (anniric > 0) if (!sospamm)
qnor = val_amm() / anniric; {
else if (anniric > 0)
qnor = val_amm() * ammini_get_real(AMMCE_PNOR) / CENTO; qnor = val_amm() / anniric;
else
qnor = val_amm() * ammini_get_real(AMMCE_PNOR) / CENTO;
}
} else } else
if (tc == tc_pluriennale && vincolo == 2 && ammini_get_real(AMMCE_PNOR) > ZERO) if (tc == tc_pluriennale && vincolo == 2 && ammini_get_real(AMMCE_PNOR) > ZERO)
{ {
if (anniric > anniamm) if (anniric > anniamm && !sospamm)
qnor = val_amm() * ammini_get_real(AMMCE_PNOR) / CENTO; qnor = val_amm() * ammini_get_real(AMMCE_PNOR) / CENTO;
} }
@ -2090,8 +2095,8 @@ bool TCespite::calc_amm(int tipo_sit, const TDate& data_limite,
#ifdef DBG #ifdef DBG
if (tipo_sit == 1 && atol(idcespite) == 1362) if (atol(idcespite) == 441)
tipo_sit = 1; // Put your breakpoint here int i = 1; // Put your breakpoint here
#endif #endif
const bool is_valid = valido(); const bool is_valid = valido();