Risolti problemucci in elaborazioni differite per DBService
git-svn-id: svn://10.65.10.50/branches/R_10_00@22788 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
7e9f0d51c5
commit
06cfa6bf68
@ -263,7 +263,7 @@ const TString_array& TTipo_documento::sheet_columns() const
|
||||
TConfig prof(pn, "SHEET");
|
||||
for (int i = 0; i < MAX_COLUMNS; i++)
|
||||
{
|
||||
const TString& id = prof.get("Col", NULL, i);
|
||||
const TString& id = prof.get("Col", NULL, i);
|
||||
if (atoi(id) <= 0)
|
||||
break;
|
||||
((TString_array&)_sheet_columns).add(id);
|
||||
@ -297,10 +297,10 @@ void TTipo_documento::set_defaults(TMask& m) const
|
||||
{
|
||||
TFilename pn; profile_name(pn);
|
||||
TConfig prof(pn, "DEFAULT");
|
||||
|
||||
TToken_string s;
|
||||
for(int i = 0; ; i++)
|
||||
{
|
||||
TToken_string s(prof.get("Default", NULL, i));
|
||||
s = prof.get("Default", NULL, i);
|
||||
if (s.empty())
|
||||
break;
|
||||
const int field = s.get_int();
|
||||
|
@ -993,7 +993,6 @@ void TDocumento_mask::cli2mask(bool force_load)
|
||||
set(F_CODPAG, c.get(CLI_CODPAG));
|
||||
|
||||
TToken_string key;
|
||||
|
||||
key.add(c.get(CLI_TIPOCF));
|
||||
key.add(c.get(CLI_CODCF));
|
||||
key.add("V");
|
||||
@ -3267,6 +3266,8 @@ bool TElabora_mask::elabora()
|
||||
TParametri_elaborazione& p = e->params();
|
||||
set(F_QTA, p.get("QUANTITA"));
|
||||
}
|
||||
// Toglie spunta ai documenti selezionati
|
||||
_tree.toggle_all_nodes();
|
||||
}
|
||||
const TString8 num_in = e->codice_numerazione_iniziale();
|
||||
set(F_CODNUM_ELAB, num_in);
|
||||
|
151
ve/velib06a.cpp
151
ve/velib06a.cpp
@ -713,16 +713,13 @@ bool codmag_coll_handler( TMask_field& f, KEY key )
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void upd_colli_peso_tara(TMask& m, const TString & codart)
|
||||
{
|
||||
// const real qta = m.get_real(FR_QTA) * curr_fc; // curr_fc puo' non essere inizializzata e vale -1
|
||||
// Usando il metodo apposito di TArticolo non si sbaglia micca mai.
|
||||
// Sarebbe bene sparare (come dice Luca) a curr_fc ovunque copaia
|
||||
TArticolo & articolo = cached_article(codart);
|
||||
TArticolo& articolo = cached_article(codart);
|
||||
const real qta = articolo.convert_to_um(m.get_real(FR_QTA), NULL, m.get(FR_UMQTA));
|
||||
|
||||
const real ppcollo = articolo.get_real(ANAMAG_PPCOLLO);
|
||||
|
||||
real ncolli = ppcollo.is_zero() ? UNO : qta / ppcollo;
|
||||
@ -1602,6 +1599,7 @@ bool codart_handler(TMask_field& f, KEY key )
|
||||
|
||||
if (key == K_TAB && (f.focusdirty() || row_mask.get(FR_CHECKED).empty()))
|
||||
{
|
||||
// cached_article(NULL); // Azzera cache articoli nel caso l'utente abbia cambiato pesi
|
||||
TCond_vendita & condv = mask.condv();
|
||||
|
||||
condv.set_testa(&mask);
|
||||
@ -1725,7 +1723,7 @@ bool codart_handler(TMask_field& f, KEY key )
|
||||
else
|
||||
{
|
||||
curr_um.cut(0);
|
||||
curr_fc = 1.0;
|
||||
curr_fc = UNO;
|
||||
}
|
||||
row_mask.set(FR_UMQTA, curr_um);
|
||||
upd_colli_peso_tara(row_mask, codart);
|
||||
@ -1783,91 +1781,90 @@ bool codart_handler(TMask_field& f, KEY key )
|
||||
if (mask.gestione_note_per_articolo())
|
||||
mask.send_key(K_F8, F_NAR, &sh);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (key == K_F8 && !row_mask.is_running())
|
||||
} else
|
||||
if (key == K_F8 && !row_mask.is_running())
|
||||
{
|
||||
const bool explode_db = ini_get_bool(CONFIG_DITTA, "ve", "EXPLODEDB");
|
||||
|
||||
if (explode_db && !sh.sheet_mask().is_running())
|
||||
{
|
||||
const bool explode_db = ini_get_bool(CONFIG_DITTA, "ve", "EXPLODEDB");
|
||||
const bool valcomp = ini_get_bool(CONFIG_DITTA, "ve", "VALCOMP");
|
||||
const bool matbase = ini_get_bool(CONFIG_DITTA, "ve", "TIPOESPL");
|
||||
const TExplosion_grouping raggart = (TExplosion_grouping) ini_get_int(CONFIG_DITTA, "ve", "RAGGART");
|
||||
const bool elrorig = ini_get_bool(CONFIG_DITTA, "ve", "ELRORIG");
|
||||
const int livello = ini_get_int(CONFIG_DITTA, "ve", "LIVESPL");
|
||||
const int ordin = ini_get_int(CONFIG_DITTA, "ve", "ORDDB");
|
||||
TDocumento & doc = mask.doc();
|
||||
TRiga_documento & curr_row = doc[current_doc_row];
|
||||
const int start_level = curr_row.get_int(RDOC_LEVEL);
|
||||
|
||||
if (explode_db && !sh.sheet_mask().is_running())
|
||||
{
|
||||
const bool valcomp = ini_get_bool(CONFIG_DITTA, "ve", "VALCOMP");
|
||||
const bool matbase = ini_get_bool(CONFIG_DITTA, "ve", "TIPOESPL");
|
||||
const TExplosion_grouping raggart = (TExplosion_grouping) ini_get_int(CONFIG_DITTA, "ve", "RAGGART");
|
||||
const bool elrorig = ini_get_bool(CONFIG_DITTA, "ve", "ELRORIG");
|
||||
const int livello = ini_get_int(CONFIG_DITTA, "ve", "LIVESPL");
|
||||
const int ordin = ini_get_int(CONFIG_DITTA, "ve", "ORDDB");
|
||||
TDocumento & doc = mask.doc();
|
||||
TRiga_documento & curr_row = doc[current_doc_row];
|
||||
const int start_level = curr_row.get_int(RDOC_LEVEL);
|
||||
sh.update_row(current_doc_row - 1);
|
||||
curr_row.autosave(sh);
|
||||
|
||||
sh.update_row(current_doc_row - 1);
|
||||
curr_row.autosave(sh);
|
||||
TDistinta_tree db;
|
||||
TArray components;
|
||||
|
||||
TDistinta_tree db;
|
||||
TArray components;
|
||||
db.set_root(curr_row);
|
||||
|
||||
db.set_root(curr_row);
|
||||
const int items = db.explode(components, matbase, raggart, livello, "A", ordin);
|
||||
if (items > 0)
|
||||
{
|
||||
TProgind pi(items, TR("Esplosione in corso..."), false, true);
|
||||
int row = current_doc_row;
|
||||
const TString16 tiporiga(curr_row.tipo().codice());
|
||||
|
||||
const int items = db.explode(components, matbase, raggart, livello, "A", ordin);
|
||||
if (items > 0)
|
||||
{
|
||||
TProgind pi(items, TR("Esplosione in corso..."), false, true);
|
||||
int row = current_doc_row;
|
||||
const TString16 tiporiga(curr_row.tipo().codice());
|
||||
TString_array& str_arr = sh.rows_array();
|
||||
|
||||
TString_array& str_arr = sh.rows_array();
|
||||
for (int i = components.first(); i < items; i = components.succ(i))
|
||||
{
|
||||
pi.addstatus(1L);
|
||||
TRiga_esplosione & r = (TRiga_esplosione &) components[i];
|
||||
sh.insert(row, false, true);
|
||||
TRiga_documento & new_row = doc[row + 1];
|
||||
|
||||
for (int i = components.first(); i < items; i = components.succ(i))
|
||||
TDocumento::copy_data(new_row, curr_row);
|
||||
new_row.put(RDOC_CODART, r.articolo());
|
||||
new_row.put(RDOC_CODARTMAG, r.articolo());
|
||||
new_row.put(RDOC_LIVELLO, r.giacenza());
|
||||
new_row.zero(RDOC_DESCR);
|
||||
new_row.zero(RDOC_DESCLUNGA);
|
||||
new_row.zero(RDOC_DESCEST);
|
||||
new_row.put(RDOC_CHECKED, "");
|
||||
new_row.put(RDOC_UMQTA, r.um());
|
||||
new_row.put(RDOC_GENERATA, "X");
|
||||
new_row.put(RDOC_QTA, r.val() /* * qta_fin */);
|
||||
const int level = start_level + r.livello();
|
||||
new_row.put(RDOC_LEVEL, level);
|
||||
if (!valcomp)
|
||||
{
|
||||
pi.addstatus(1L);
|
||||
TRiga_esplosione & r = (TRiga_esplosione &) components[i];
|
||||
sh.insert(row, false, true);
|
||||
TRiga_documento & new_row = doc[row + 1];
|
||||
|
||||
TDocumento::copy_data(new_row, curr_row);
|
||||
new_row.put(RDOC_CODART, r.articolo());
|
||||
new_row.put(RDOC_CODARTMAG, r.articolo());
|
||||
new_row.put(RDOC_LIVELLO, r.giacenza());
|
||||
new_row.zero(RDOC_DESCR);
|
||||
new_row.zero(RDOC_DESCLUNGA);
|
||||
new_row.zero(RDOC_DESCEST);
|
||||
new_row.put(RDOC_CHECKED, "");
|
||||
new_row.put(RDOC_UMQTA, r.um());
|
||||
new_row.put(RDOC_GENERATA, "X");
|
||||
new_row.put(RDOC_QTA, r.val() /* * qta_fin */);
|
||||
const int level = start_level + r.livello();
|
||||
new_row.put(RDOC_LEVEL, level);
|
||||
if (!valcomp)
|
||||
{
|
||||
new_row.zero(RDOC_PREZZO);
|
||||
sh.row(row).add("0", sh.cid2index(FR_PREZZO));
|
||||
row_mask.reset(FR_PREZZO);
|
||||
}
|
||||
new_row.autoload(sh);
|
||||
sh.check_row(row);
|
||||
new_row.autosave(sh); // Da sheet a rdoc
|
||||
row++;
|
||||
new_row.zero(RDOC_PREZZO);
|
||||
sh.row(row).add("0", sh.cid2index(FR_PREZZO));
|
||||
row_mask.reset(FR_PREZZO);
|
||||
}
|
||||
if (elrorig)
|
||||
{
|
||||
doc.destroy_row(current_doc_row, true);
|
||||
sh.destroy(current_doc_row - 1, false);
|
||||
row--;
|
||||
}
|
||||
else
|
||||
if (valcomp)
|
||||
{
|
||||
curr_row.zero(RDOC_PREZZO);
|
||||
curr_row.autoload(sh);
|
||||
}
|
||||
sh.force_update();
|
||||
sh.post_select(current_doc_row - 1);
|
||||
sh.update_mask(current_doc_row - 1);
|
||||
new_row.autoload(sh);
|
||||
sh.check_row(row);
|
||||
new_row.autosave(sh); // Da sheet a rdoc
|
||||
row++;
|
||||
}
|
||||
if (elrorig)
|
||||
{
|
||||
doc.destroy_row(current_doc_row, true);
|
||||
sh.destroy(current_doc_row - 1, false);
|
||||
row--;
|
||||
}
|
||||
else
|
||||
if (valcomp)
|
||||
{
|
||||
curr_row.zero(RDOC_PREZZO);
|
||||
curr_row.autoload(sh);
|
||||
}
|
||||
sh.force_update();
|
||||
sh.post_select(current_doc_row - 1);
|
||||
sh.update_mask(current_doc_row - 1);
|
||||
}
|
||||
mask.update_giacenza();
|
||||
}
|
||||
mask.update_giacenza();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user