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