Corretta gestione effetti generati manualmente

git-svn-id: svn://10.65.10.50/branches/R_10_00@22669 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2012-06-07 15:58:50 +00:00
parent f03f803125
commit 4937ec8dda

View File

@ -936,10 +936,10 @@ void TContabilizzazione_effetti_app::compile_saldac(const TEffetto& eff,
TArray& differenze_cam, TArray& customers) TArray& differenze_cam, TArray& customers)
{ {
int anno = reff.get_int(REFF_ANNO); int anno = reff.get_int(REFF_ANNO);
TString16 numpart = reff.get(REFF_NUMPART); TString8 numpart = reff.get(REFF_NUMPART);
// Ricava il numero della fattura. // Ricava il numero della fattura.
TString16 numdoc_to_search = reff.get(REFF_CODNUM); TString8 numdoc_to_search = reff.get(REFF_CODNUM);
TString16 nfatt = reff.get(REFF_NFATT); const TString nfatt = reff.get(REFF_NFATT);
TCodice_numerazione cn; TCodice_numerazione cn;
if (numdoc_to_search.not_empty() && nfatt.not_empty() && real::is_natural(nfatt)) if (numdoc_to_search.not_empty() && nfatt.not_empty() && real::is_natural(nfatt))
@ -949,10 +949,8 @@ void TContabilizzazione_effetti_app::compile_saldac(const TEffetto& eff,
cn.complete_num(nf, numdoc_to_search); cn.complete_num(nf, numdoc_to_search);
} }
else // se gli estremi della fattura non sono compilati si piglia il numero della partita else // se gli estremi della fattura non sono compilati si piglia il numero della partita
if (nfatt.full()) numdoc_to_search = nfatt.full() ? nfatt : numpart;
numdoc_to_search = nfatt;
else
numdoc_to_search = numpart;
if (anno == 0 || numpart.empty()) // Se non sono gia' settati sulla riga effetto... if (anno == 0 || numpart.empty()) // Se non sono gia' settati sulla riga effetto...
{ {
anno = reff.get_int(REFF_ANNODOC);// ... li va a prendere dagli estremi fattura... anno = reff.get_int(REFF_ANNODOC);// ... li va a prendere dagli estremi fattura...
@ -997,7 +995,7 @@ void TContabilizzazione_effetti_app::compile_saldac(const TEffetto& eff,
for (int r = partita->last(); r > 0; r = partita->pred(r)) for (int r = partita->last(); r > 0; r = partita->pred(r))
{ {
const TRiga_partite& rpart = partita->riga(r); const TRiga_partite& rpart = partita->riga(r);
const TString16 numdoc = rpart.get(PART_NUMDOC); const TString& numdoc = rpart.get(PART_NUMDOC);
if (numdoc == numdoc_to_search && rpart.is_fattura()) if (numdoc == numdoc_to_search && rpart.is_fattura())
{ {
nriga = r; nriga = r;
@ -1005,10 +1003,18 @@ void TContabilizzazione_effetti_app::compile_saldac(const TEffetto& eff,
} }
} }
} }
// reperire il numero di rata (nrata) dalla riga effetto // reperire il numero di rata (nrata) dalla riga effetto
const int nrata = reff.get_int(REFF_NRATA); int nrata = reff.get_int(REFF_NRATA);
if (nrata <= 0 && nriga > 0 && nriga < uns)
{
const TRiga_partite& rpart = partita->riga(nriga);
const int nrate = rpart.rate();
for (nrata = 1; nrata < nrate && rpart.rata(nrata).chiusa(); nrata++);
}
char acc_sal = 'A'; char acc_sal = 'A';
if (partita->esiste(nriga,nrata)) // calcola se e' a saldo o in acconto della rata if (nrata > 0 && partita->esiste(nriga,nrata)) // calcola se e' a saldo o in acconto della rata
{ {
acc_sal = reff.get_char(REFF_ACCSAL); acc_sal = reff.get_char(REFF_ACCSAL);
if (acc_sal != 'S' && acc_sal != 'A') if (acc_sal != 'S' && acc_sal != 'A')
@ -1016,9 +1022,8 @@ void TContabilizzazione_effetti_app::compile_saldac(const TEffetto& eff,
} }
else else
{ {
if (nriga != uns) nriga = uns; // E' praticamente impossibile che si trovi la fattura
nriga = uns; // E' praticamente impossibile che si trovi la fattura nrata = uns; // senza le proprie scadenze. Al limite settiamo il numero di riga per non assegnati.
// senza le proprie scadenze. Al limite settiamo il numero di riga per non assegnati.
} }
// Creo una nuova riga di pagamento // Creo una nuova riga di pagamento
TRectype& old_riga_pagamento = partita->pagamento(nriga,nrata,nrigp); TRectype& old_riga_pagamento = partita->pagamento(nriga,nrata,nrigp);