Patch level : 10.0 602

Files correlati     : lv2.exe
Ricompilazione Demo : [ ]
Commento            :

Sort delle fatture, corretto doppionolo se ci sono due articoli uguali


git-svn-id: svn://10.65.10.50/trunk@20036 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2010-02-01 15:00:50 +00:00
parent 07191e0de1
commit 8ecd229662

View File

@ -298,6 +298,7 @@ void TFatturazione_lavanderie::post_process(TLista_documenti& doc_out, TLista_do
bool elcons = contr.get_bool(LVCONDV_ELCONS);
bool rifbol = contr.get_bool(LVCONDV_RIFBOL);
bool riftest = ini_get_bool(CONFIG_DITTA, "lv", "RifTest");
TAssoc_array nolo_computed;
if (doc.physical_rows() > 0 && doc[1].is_descrizione())
{
@ -574,9 +575,10 @@ void TFatturazione_lavanderie::post_process(TLista_documenti& doc_out, TLista_do
//di partenza, poi costruisco la descrizione in base alla periodicità di fatturazione,
//metto la qta uguale alla dotazione che ho appena letto
//e prendo il prezzo nolo dalla riga contratto
if (dot != ZERO)
if (dot != ZERO && nolo_computed.objptr(codart) == NULL)
{
TRiga_documento& nolorow = doc.insert_row(++i, "01");
nolo_computed.add(codart, codart);
doc.copy_data(nolorow, rout);
TString80 descr("Nolo");
const int contrper = contr.get_int(LVCONDV_PERFAT);
@ -753,17 +755,27 @@ void TFatturazione_lavanderie::post_process(TLista_documenti& doc_out, TLista_do
break;
case 5: //forfait = FISSO SU DOTAZIONE INIZIALE
{
rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_IMPFISART));
rout.put(RDOC_QTA, reclav.get_real("DOTIN"));
const TString80 codartorig=rout.get(RDOC_CODART);
rout.put(RDOC_PREZZO, rcont.get_real(LVRCONDV_IMPFISART));
const real dotin = reclav.get_real("DOTIN");
for (int h = doc.physical_rows(); h > i; h--)
{
TRiga_documento& delrow = doc[h];
const TString80 codart=delrow.get(RDOC_CODART);
if ( codartorig == codart)
doc.destroy_row(h, true);
}
rout.put(RDOC_QTA, dotin);
if (rout.get(RDOC_DESCR).blank())
{
const TString & descr = cached_article(codart).get(RDOC_DESCR);
rout.put(RDOC_DESCR, descr);
}
const TString80 codartorig=rout.get(RDOC_CODART);
for (int h = doc.physical_rows(); h > i; h--)
{
TRiga_documento& delrow = doc[h];
const TString80 codart=delrow.get(RDOC_CODART);
if ( codartorig == codart)
doc.destroy_row(h, true);
}
}
break;
default: break;
@ -979,6 +991,8 @@ void TFatturazione_lavanderie::post_process(TLista_documenti& doc_out, TLista_do
}
if (to_delete || doc.totale_doc() == ZERO)
doc_out.destroy(id);
else
doc.sort_rows(RDOC_CODART);
}
for (int id = doc_out.items() - 1; id >= 0 ; id--)
{
@ -1066,9 +1080,11 @@ TRiga_documento& TFatturazione_lavanderie::find_or_create_row(TDocumento& doc_ou
//scorro le righe documetno
for (r = doc_out.physical_rows(); r > 0; r--)
{
//se trovo una riga raggruppabile e di lavanderia, allora interrompo il ciclo
if (doc_out[r].raggruppabile(rin, _campi_raggruppamento) && (doc_out[r].get_char("LVTYPE") == lavtype))
break;
}
//se non ho trovato la riga, ne creo una nuova
if (r <= 0)
@ -1195,7 +1211,7 @@ void TFatturazione_lavanderie::create_row(TDocumento& doc_out, const TRiga_docum
//per il suo segno al prezzo ricavato sopra o da contratto (o da magazzino), o da bolla
if (!sgndotin.is_zero() && !sgncons.is_zero())
{
TRiga_documento& rc = find_or_create_row(doc_out, rin, 'I');
TRiga_documento& rc = find_or_create_row(doc_out, rin, 'C');
rc.add(RDOC_QTA, sgndotin * qta);
rc.put(RDOC_PREZZO, prezzo);
}
@ -1326,6 +1342,7 @@ void TFatturazione_lav_app::genera_bolle_nolo(TAssoc_array& cliela, TFatturazion
const long codcf = contratto.get_long(LVCONDV_CODCF);
const int codcont = contratto.get_int(LVCONDV_CODCONT);
const bool fattnocons = !contratto.get_bool(LVCONDV_FORFNOCONS);
doc.put(DOC_CODCF, codcf);
TToken_string key("C");
@ -1434,8 +1451,11 @@ void TFatturazione_lav_app::genera_bolle_nolo(TAssoc_array& cliela, TFatturazion
for(bool ok = rcont.move_first(); ok; ok = rcont.move_next())
{
TRectype& riga = rcont.cursor()->curr();
const int tipoforf = riga.get_int(LVRCONDV_TIPOFORF);
if (riga.get_int(LVRCONDV_TIPOFORF) == 2)
if (tipoforf > 0 &&
((tipoforf == 2) ||
(tipoforf != 2 && fattnocons)))
{
TRiga_documento& rdoc = doc.new_row("21");