Cacarole Gabriella Saldaconto

git-svn-id: svn://10.65.10.50/trunk@2054 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-10-31 11:37:09 +00:00
parent d77b6dbe36
commit b8f59ca129
5 changed files with 1427 additions and 1399 deletions

View File

@ -485,16 +485,17 @@ real TPrimanota_application::calcola_saldo() const
}
TMask& m = curr_mask();
real sbilancio = abs(tdare)-abs(tavere);
const real sbilancio = abs(tdare)-abs(tavere);
const real absbilancio = abs(tdare - tavere);
switch (sbilancio.sign())
{
case +1: // Il dare supera l'avere in valore assoluto
m.set(F_DARE, real(tdare-tavere).string());
m.set(F_DARE, absbilancio.string());
m.reset(F_AVERE);
break;
case -1: // L'avere supera il dare in valore assoluto
m.reset(F_DARE);
m.set(F_AVERE, real(tavere-tdare).string());
m.set(F_AVERE, absbilancio.string());
break;
default: // Sbilancio nullo
m.reset(F_DARE);
@ -1576,6 +1577,11 @@ bool TPrimanota_application::doc_handler(TMask_field& f, KEY key)
{
const TDate dd(val);
m.set(F_ANNORIF, dd.year()); // copia data documento
// TBI modifica scadenze pagamento
if (app().pagamento() != NULL)
app().recalc_scadenze(dd);
}
else if (!app().npart_is_prot())
{

View File

@ -211,6 +211,7 @@ protected:
void write_scadenze(const TMask& m);
void remove_scadenze(const TMask& m, const char* rif);
void renumber_partita(TMask& m, const char* oldp, const char* newp);
void recalc_scadenze(const TDate& d);
bool edit_partite(const TMask& m, int riga);

View File

@ -264,6 +264,18 @@ void TPrimanota_application::reset_pagamento()
}
}
void TPrimanota_application::recalc_scadenze(const TDate& d)
{
if (_pag == NULL) return;
_pag->set_inizio(d);
// ridefinisci lo sheet sulla base delle nuove rate
TSheet_field& ps = pags();
TString_array& rws = pag_rows();
_pag->set_sheet(ps);
rws = ps.rows_array();
ps.force_update();
}
void TPrimanota_application::set_pagamento(const char* c, const char* d)
{

View File

@ -42,6 +42,13 @@ const char* TPagamento::_rata_sfield(int n, int f) const
return kak;
}
void TPagamento::set_inizio(const TDate& d)
{
bool dio;
_inizio = d;
recalc_rate(0, FALSE, NULL, d.string(), NULL, _rdiff, _mcomm, dio);
}
void TPagamento::set_intervallo_rate(int in)
{
_dirty = TRUE;
@ -989,7 +996,8 @@ word TPagamento::recalc_rate(int row, bool is_perc_modified,
if (rdiff == 2)
{
real reminder = toshare - rfirst;
real rdiv = reminder / real(_rate.items() - (1+first));
real rdiv = reminder.is_zero() ? real(0.0) :
(reminder / real(_rate.items() - (1+first)));
rdiv.round( is_perc_modified ? _round : 2);
rfirst += reminder - (rdiv * real(_rate.items() - (1+first)));
rvl = rdiv;
@ -1116,7 +1124,7 @@ bool TPagamento::read(TTable* t, TTable* r)
next_scad(d,(int)(r->get_long("I0")),_mcomm,i);
tt->add((const char*)d);
tt->add("");
tt->add(r->get("S1"));
tt->add(r->get("S1")); // ulteriore classificazione
_slicer.add((real)r->get("R0"));
_rate.add(tt);
}

View File

@ -102,6 +102,7 @@ public:
real recalc_percrata(int i);
void set_numero_rate(int n, int sscad = -1, int rdiff = 1);
void set_inizio(const TDate& d); // resetta tutto
void set_inizio_scadenza(char v) { _inscad = v; }
void set_code(const char* c) { _code = c; }
void set_round(int n) { _round = n; }