Aumentata velocità scrittura ordini mrp e risolti problemi di uso concorsuale da parte di più utenti

git-svn-id: svn://10.65.10.50/branches/R_10_00@22864 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2013-05-27 12:06:39 +00:00
parent f5f80e6152
commit 8cac0d0ab6

View File

@ -1755,15 +1755,19 @@ TRisalita_mask::TRisalita_mask(TMRP_line* line, const TDate& fromdate, const TDa
ir ++;
}
has_internal_refs = TRUE;
} else {
}
else
{
add_gross_ref(*line,b);
}
}
}
}
if (!has_internal_refs)
{
for (int c = F_ARTICOLO; c < F_DOCANNODOC; c++)
sf.delete_column(c);
}
add_total_rows();
set(F_FABB_LORDO,lordo.string());
@ -3199,12 +3203,14 @@ int TMatResPlanning::print_gross_ref(const TMRP_line& line, int bucket)
void TMatResPlanning::save_orders(TAssoc_array& docs)
{
TLocalisamfile docfile(LF_DOC);
TMatResMask& m = *_mask;
FOR_EACH_ASSOC_OBJECT(docs, hash, str, obj)
{
TDocumento& doc = (TDocumento&)*obj;
int err;
int err = NOERR;
if (doc.get_long(DOC_NDOC))
{
// riscrittura; elimina righe con qta zero
@ -3220,42 +3226,41 @@ void TMatResPlanning::save_orders(TAssoc_array& docs)
nrows = doc.physical_rows();
if (nrows > 0)
err = doc.rewrite();
err = doc.rewrite(docfile);
else
{
/*
TDocumento d;
if (d.read(doc, _isequal, _testandlock) == NOERR)
d.remove();
*/
doc.remove(docfile);
}
}
else
{
// generazione
err = doc.write();
err = doc.write(docfile);
}
if (err != NOERR)
doc.read(); // unlock
{
// doc.read(); // unlock
doc.read(docfile, _isequal, _unlock); // 13/05/2013
}
}
docs.destroy();
prefix().close_closeable_isamfiles();
}
bool TMatResPlanning::ask_save()
{
TMatResMask& m = *_mask;
TSheet_field& sf = m.sfield(F_ORDINI);
TSheet_field& sf = _mask->sfield(F_ORDINI);
int tot = 0;
FOR_EACH_SHEET_ROW(sf, r, row)
{
TToken_string& riga = *row;
if (*riga.get(0) == 'X')
tot++;
}
bool yes = TRUE;
if (tot > 0)
yes = yesno_box(FR("Si desidera elaborare %d righe?"), tot);
return yes;
tot += row->get_char(0) == 'X' ? 1 : 0;
return tot > 0 && yesno_box(FR("Si desiderano elaborare %d righe?"), tot);
}
const TRectype* TMatResPlanning::irefs2rdoc(const TMRP_internalrefs& irefs) const
@ -3358,7 +3363,7 @@ bool TMatResPlanning::emit_orders()
int ignore_duedate_lt_docdate = 0;
if (!ask_save())
return FALSE;
return false;
TProgind pi(sf.items(), TR("Generazione ordini"), FALSE, TRUE);
@ -3559,12 +3564,12 @@ bool TMatResPlanning::emit_orders()
}
save_orders(docs);
if (sf.items())
if (!sf.empty())
{
FOR_EACH_SHEET_ROW_BACK(sf, r, row)
{
if ((*row->get(sf.cid2index(F_SELECTED)) == 'X' && *row->get(sf.cid2index(F_OK))=='X')
|| real(row->get(sf.cid2index(F_QUANTITA))).is_zero())
if ((*row->get(sf.cid2index(F_SELECTED)) == 'X' && *row->get(sf.cid2index(F_OK))=='X') ||
real(row->get(sf.cid2index(F_QUANTITA))).is_zero())
{
if (m.get_bool(F_ALL_ORDERSCHANGES))
row->add("", sf.cid2index(F_QUANTITA));
@ -3574,9 +3579,9 @@ bool TMatResPlanning::emit_orders()
}
sf.force_update();
}
m.enable(DLG_SAVEREC, sf.items() > 0);
m.enable(DLG_SAVEREC, !sf.empty());
return TRUE;
return true;
}
void TMatResPlanning::compute()