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