Gestione saldaconto
git-svn-id: svn://10.65.10.50/trunk@1820 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
e8c89b8688
commit
e44826200b
@ -281,8 +281,6 @@ void TPrimanota_application::reset_pagamento()
|
|||||||
|
|
||||||
void TPrimanota_application::renumber_partita(TMask& m, const char* oldp, const char* newp)
|
void TPrimanota_application::renumber_partita(TMask& m, const char* oldp, const char* newp)
|
||||||
{
|
{
|
||||||
bool movep = FALSE;
|
|
||||||
|
|
||||||
const TRectype& testa = _rel->lfile().curr();
|
const TRectype& testa = _rel->lfile().curr();
|
||||||
const long nreg = testa.get_long("NUMREG");
|
const long nreg = testa.get_long("NUMREG");
|
||||||
const TString16 ndoc(testa.get("NUMDOC"));
|
const TString16 ndoc(testa.get("NUMDOC"));
|
||||||
@ -308,13 +306,20 @@ void TPrimanota_application::renumber_partita(TMask& m, const char* oldp, const
|
|||||||
const int numrig = 1;
|
const int numrig = 1;
|
||||||
|
|
||||||
TBill clifo(gruppo, conto, sottoconto, tipocf);
|
TBill clifo(gruppo, conto, sottoconto, tipocf);
|
||||||
TPartita part(clifo, anno, numpart);
|
TPartita oldpart(clifo, anno, oldp);
|
||||||
|
TPartita newpart(clifo, anno, newp);
|
||||||
if (part.primo_pagamento() != -1)
|
|
||||||
movep = yesno_box("Si desidera spostare i pagamenti sulla nuova partita?");
|
int npart = oldpart.prima_fattura(nreg);
|
||||||
|
|
||||||
// TBI
|
if (oldpart.primo_pagamento() != -1)
|
||||||
warning_box("Funzione non implementata");
|
{
|
||||||
|
if (!yesno_box("Si desidera spostare i pagamenti sulla nuova partita?"))
|
||||||
|
oldpart.scollega_pagamenti(npart);
|
||||||
|
}
|
||||||
|
oldpart.riassegna_riga(npart, newpart, TRUE);
|
||||||
|
|
||||||
|
oldpart.rewrite();
|
||||||
|
newpart.rewrite();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -447,7 +452,7 @@ bool TPrimanota_application::read_scadenze(TMask& m)
|
|||||||
{
|
{
|
||||||
TRiga_scadenze& scadenza = partita.rata(i);
|
TRiga_scadenze& scadenza = partita.rata(i);
|
||||||
|
|
||||||
const real importo = scadenza.get(SCAD_IMPORTO);
|
real importo = scadenza.get(SCAD_IMPORTO);
|
||||||
const TDate scad = scadenza.get(SCAD_DATASCAD);
|
const TDate scad = scadenza.get(SCAD_DATASCAD);
|
||||||
const int tipop = scadenza.get_int(SCAD_TIPOPAG);
|
const int tipop = scadenza.get_int(SCAD_TIPOPAG);
|
||||||
const bool paid = scadenza.get_bool(SCAD_PAGATA);
|
const bool paid = scadenza.get_bool(SCAD_PAGATA);
|
||||||
|
@ -392,11 +392,12 @@ void TPagamento::set_percrata(int i, real r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TToken_string& TPagamento::set_rata(int index, const real& howmuch,
|
TToken_string& TPagamento::set_rata(int index, real& howmuch,
|
||||||
const TDate& date, int type,const char* ulc, bool pagato)
|
const TDate& date, int type,const char* ulc, bool pagato)
|
||||||
{
|
{
|
||||||
// calcola percentuali e scadenze a partire dagli importi
|
// calcola percentuali e scadenze a partire dagli importi
|
||||||
TToken_string* tt = (TToken_string*)_rate.objptr(index);
|
TToken_string* tt = (TToken_string*)_rate.objptr(index);
|
||||||
|
int first = _tpr < 4 ? 0 : 1;
|
||||||
|
|
||||||
const bool nwr = (tt == NULL); // nuova rata
|
const bool nwr = (tt == NULL); // nuova rata
|
||||||
|
|
||||||
@ -404,8 +405,16 @@ TToken_string& TPagamento::set_rata(int index, const real& howmuch,
|
|||||||
|
|
||||||
TDate oldd = index > 0 ? data_rata(index -1) : _inizio;
|
TDate oldd = index > 0 ? data_rata(index -1) : _inizio;
|
||||||
int day = date - oldd;
|
int day = date - oldd;
|
||||||
real toshare(_tpr < 4 ? _firstr : _secndr);
|
real toshare(_tpr < 4 ? _firstr : _secndr);
|
||||||
|
|
||||||
|
if (index == first && _tpr > 0 && _tpr < 4)
|
||||||
|
howmuch -= _secndr;
|
||||||
|
|
||||||
real perc = (_tpr > 3 && index == 0) ? ZERO : howmuch/toshare;
|
real perc = (_tpr > 3 && index == 0) ? ZERO : howmuch/toshare;
|
||||||
|
|
||||||
|
if (index == first && _tpr > 0 && _tpr < 4)
|
||||||
|
howmuch += _secndr;
|
||||||
|
|
||||||
perc *= real(100.0);
|
perc *= real(100.0);
|
||||||
perc.round(2);
|
perc.round(2);
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ public:
|
|||||||
const char* ulc = NULL, const char* imp = NULL,
|
const char* ulc = NULL, const char* imp = NULL,
|
||||||
const char* data = NULL);
|
const char* data = NULL);
|
||||||
// questa calcola percentuali e scadenze a partire dagli importi
|
// questa calcola percentuali e scadenze a partire dagli importi
|
||||||
TToken_string& set_rata (int index, const real& howmuch, const TDate& date, int type,
|
TToken_string& set_rata (int index, real& howmuch, const TDate& date, int type,
|
||||||
const char* ulc, bool pagato);
|
const char* ulc, bool pagato);
|
||||||
|
|
||||||
// settano tipo rata e ult. class default per le rate; se bool = TRUE
|
// settano tipo rata e ult. class default per le rate; se bool = TRUE
|
||||||
|
@ -869,6 +869,82 @@ bool TPartita::chiusa(bool update)
|
|||||||
return chiusa;
|
return chiusa;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TPartita::riassegna_riga(int r, TPartita& part, bool remove)
|
||||||
|
{
|
||||||
|
TRiga_partite& row = riga(r);
|
||||||
|
TRiga_partite& nrw = part.nuova_riga();
|
||||||
|
|
||||||
|
TToken_string knames(256);
|
||||||
|
// copy all non-key fields
|
||||||
|
knames.add(PART_ANNO);
|
||||||
|
knames.add(PART_NUMPART);
|
||||||
|
knames.add(PART_NRIGA);
|
||||||
|
|
||||||
|
for (int f = 0; f < row.items(); f++)
|
||||||
|
{
|
||||||
|
const char* fnam = row.fieldname(f);
|
||||||
|
if (knames.get_pos(fnam) == -1)
|
||||||
|
nrw.put(fnam, row.get(fnam));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1; i <= row.rate(); i++)
|
||||||
|
{
|
||||||
|
TRiga_scadenze& scd = row.rata(i);
|
||||||
|
TRiga_scadenze& nsc = nrw.new_row();
|
||||||
|
|
||||||
|
// copy all non-key fields
|
||||||
|
knames = "";
|
||||||
|
knames.add(SCAD_ANNO);
|
||||||
|
knames.add(SCAD_NUMPART);
|
||||||
|
knames.add(SCAD_NRIGA);
|
||||||
|
knames.add(SCAD_NRATA);
|
||||||
|
for (int f = 0; f < scd.items(); f++)
|
||||||
|
{
|
||||||
|
const char* fnam = scd.fieldname(f);
|
||||||
|
if (knames.get_pos(fnam) == -1)
|
||||||
|
nsc.put(fnam, scd.get(fnam));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = scd.last(); j > 0; j = scd.pred(j))
|
||||||
|
{
|
||||||
|
TRectype& pag = scd.row(j);
|
||||||
|
TRectype& npg = nsc.new_row();
|
||||||
|
knames = "";
|
||||||
|
knames.add(PAGSCA_NUMPART);
|
||||||
|
knames.add(PAGSCA_NRIGA);
|
||||||
|
knames.add(PAGSCA_NRATA);
|
||||||
|
knames.add(PAGSCA_NRIGP);
|
||||||
|
for (int f = 0; f < pag.items(); f++)
|
||||||
|
{
|
||||||
|
const char* fnam = pag.fieldname(f);
|
||||||
|
if (knames.get_pos(fnam) == -1)
|
||||||
|
npg.put(fnam, pag.get(fnam));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (remove) rimuovi_riga(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TPartita::scollega_pagamenti(int r)
|
||||||
|
{
|
||||||
|
TRiga_partite& row = riga(r);
|
||||||
|
|
||||||
|
for (int i = 0; i < row.rate(); i++)
|
||||||
|
{
|
||||||
|
TRiga_scadenze& sc = row.rata(i+1);
|
||||||
|
for (int j = sc.last(); j > 0; j = sc.pred(j))
|
||||||
|
{
|
||||||
|
TRectype& pag = sc.row(j);
|
||||||
|
pag.put(PAGSCA_NRIGA, (int)TPartita::UNASSIGNED);
|
||||||
|
pag.put(PAGSCA_NRATA, (int)TPartita::UNASSIGNED);
|
||||||
|
_unassigned.add_row(pag);
|
||||||
|
sc.rows_array().destroy_row(j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TPartite_array
|
// TPartite_array
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
@ -187,7 +187,12 @@ public:
|
|||||||
TRectype& pagamento(int nriga, int nrata, int nrigp);
|
TRectype& pagamento(int nriga, int nrata, int nrigp);
|
||||||
bool rata_chiusa(int nriga, int nrata) const;
|
bool rata_chiusa(int nriga, int nrata) const;
|
||||||
bool esiste(int nriga, int nrata = 0, int nrigp = 0) const;
|
bool esiste(int nriga, int nrata = 0, int nrigp = 0) const;
|
||||||
|
|
||||||
|
// assegna riga e figli a altra partita, distruggendola se remove e' TRUE
|
||||||
|
void riassegna_riga(int r, TPartita& part, bool remove = TRUE);
|
||||||
|
// de-assegna tutti i pagamenti di una riga e li distrugge
|
||||||
|
void scollega_pagamenti(int r);
|
||||||
|
|
||||||
int succ(int r) const { return _part.succ_row(r); }
|
int succ(int r) const { return _part.succ_row(r); }
|
||||||
int pred(int r) const { return _part.pred_row(r); }
|
int pred(int r) const { return _part.pred_row(r); }
|
||||||
int first() const { return _part.first_row(); }
|
int first() const { return _part.first_row(); }
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#define PAGSCA_NRIGA "NRIGA"
|
#define PAGSCA_NRIGA "NRIGA"
|
||||||
#define PAGSCA_NRATA "NRATA"
|
#define PAGSCA_NRATA "NRATA"
|
||||||
#define PAGSCA_NRIGP "NRIGP"
|
#define PAGSCA_NRIGP "NRIGP"
|
||||||
|
#define PAGSCA_NUMPART "NUMPART"
|
||||||
|
|
||||||
#define PAGSCA_TIPOPAG "TIPOPAG"
|
#define PAGSCA_TIPOPAG "TIPOPAG"
|
||||||
#define PAGSCA_IMPORTO "IMPORTO"
|
#define PAGSCA_IMPORTO "IMPORTO"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user