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:
parent
f5f80e6152
commit
8cac0d0ab6
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user