diff --git a/cg/cg2105.cpp b/cg/cg2105.cpp index 0f4e9dc67..b805aac3f 100755 --- a/cg/cg2105.cpp +++ b/cg/cg2105.cpp @@ -137,6 +137,7 @@ void TPay_mask::set_pag(const TRectype& oldpag, const TRiga_scadenze& scad, const int nrigp = oldpag.get_int(PAGSCA_NRIGP); const TRiga_partite& sum = p.riga(nrigp); const TRiga_partite& fatt = scad.riga(); + const bool assigned = oldpag.get_int(PAGSCA_NRIGA) != TPartita::UNASSIGNED; TMask_field& group = field(S_RATA); TString prompt(80); @@ -153,10 +154,10 @@ void TPay_mask::set_pag(const TRectype& oldpag, const TRiga_scadenze& scad, << " Riga:" << oldpag.get_int(PAGSCA_NRIGA) << " Rata:" << oldpag.get_int(PAGSCA_NRATA) << " del "; - if (oldpag.get_int(PAGSCA_NRIGA) == TPartita::UNASSIGNED) - prompt << sum.get_date(PART_DATAPAG).string(); - else + if (assigned) prompt << scad.get_date(SCAD_DATASCAD).string(); + else + prompt << sum.get_date(PART_DATAPAG).string(); group.set(prompt); set(S_NUMDOC, fatt.get(PART_NUMDOC)); // Numero documento @@ -171,18 +172,26 @@ void TPay_mask::set_pag(const TRectype& oldpag, const TRiga_scadenze& scad, } set(S_DESCR, desfat); - set(S_DATAPAG, sum.get(PART_DATAPAG)); // Data pagamento - set(S_TIPOPAG, sum.get(PART_TIPOPAG)); // Tipo pagamento - set(S_DESCAGG, sum.get(PART_DESCR)); // Descrizione documento - - set(S_SEZIONE_SCAD, fatt.sezione()); // Sezione della riga + set(S_DATAPAG, sum.get(PART_DATAPAG)); // Data pagamento + set(S_TIPOPAG, sum.get(PART_TIPOPAG)); // Tipo pagamento + set(S_DESCAGG, sum.get(PART_DESCR)); // Descrizione documento - set(S_IMPORTO_SCAD, scad.get(SCAD_IMPORTO)); // Importo della rata - set(S_IMPORTOVAL_SCAD, scad.get(SCAD_IMPORTOVAL)); // Importo in valuta - - const bool in_valuta = scad.in_valuta(); + const bool in_valuta = fatt.in_valuta(); + + if (assigned) + { + set(S_SEZIONE_SCAD, fatt.sezione() == 'A' ? "A" : "D"); // Sezione della riga + set(S_IMPORTO_SCAD, scad.get(SCAD_IMPORTO)); // Importo della rata + if (in_valuta) + set(S_IMPORTOVAL_SCAD, scad.get(SCAD_IMPORTOVAL)); // Importo in valuta + _da_pagare = scad.residuo(in_valuta).valore(); // Calcola residuo in valuta + } + else + { + set(S_SEZIONE_SCAD, sum.sezione()); // Sezione della riga + _da_pagare = ZERO; + } - _da_pagare = scad.residuo(in_valuta).valore(); // Calcola residuo in valuta TReal_field& res = (TReal_field&)field(S_RESIDUORATA); res.set_decimals(in_valuta ? 3 : 0);