Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@19397 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
760f634c89
commit
211728c14b
@ -183,7 +183,7 @@ int TAggiorna_listini_edit_mask::find_codart(TSheet_field& sf, const TString& co
|
||||
for (int i = 1; i < sf.items(); i += 2)
|
||||
{
|
||||
const char* art = sf.cell(i, codart_pos);
|
||||
TString4 um = sf.cell(i, codum_pos);
|
||||
TString4 um = sf.cell(i - 1, codum_pos);
|
||||
um.trim();
|
||||
if (codart == art && codum == um)
|
||||
return i - 1;
|
||||
@ -212,64 +212,75 @@ void TAggiorna_listini_edit_mask::fill_multilistini_sheet()
|
||||
//..viene aggiunta al padre medesimo (i padri devono sapere tutto dei figli, sennò che genitori sono?)
|
||||
//se invece la riga appartiene al padre e non a uno o più figli questi ultimi saranno lasciati nella..
|
||||
//..loro ignoranza di tale riga (un padre qualche vantaggio dovrà pur averlo, no?)
|
||||
TString query;
|
||||
query << "USE RCONDV\n";
|
||||
query << "SELECT (TIPORIGA=\"A\")&&(ANAMAG.GRMERC=#GRMERC)&&(((CATVEN=#FATHCATVEN)&&(COD=#FATHCOD))";
|
||||
//giro su tutti i figli nello sheet dei figli
|
||||
|
||||
TToken_string keys_listini(140, ';');
|
||||
TToken_string key;
|
||||
|
||||
key.add(get(F_FATHCATVEN));
|
||||
key.add(get(F_FATHCODLIS));
|
||||
key.trim();
|
||||
keys_listini.add(key);
|
||||
|
||||
TSheet_field& sf_figli = sfield(F_LISTINI_FIGLI);
|
||||
TToken_string keys_figli(140, ';');
|
||||
|
||||
FOR_EACH_SHEET_ROW(sf_figli, r, riga)
|
||||
{
|
||||
TToken_string key;
|
||||
key.cut(0);
|
||||
key.add(riga->get(0));
|
||||
key.add(riga->get(1));
|
||||
key.trim();
|
||||
keys_figli.add(key);
|
||||
//prosegue la select
|
||||
query << "||((CATVEN=\"" << key.get(0) << "\")&&(COD=\"" << key.get(1) << "\"))";
|
||||
keys_listini.add(key);
|
||||
}
|
||||
query << ")\n";
|
||||
query << "JOIN ANAMAG INTO CODART==CODRIGA\n";
|
||||
query << "FROM TIPO=L\n";
|
||||
query << "TO TIPO=L\n";
|
||||
|
||||
TISAM_recordset recset_rows(query);
|
||||
TString8 grmerc;
|
||||
grmerc.format("%-3s%-2s", (const char*)get(F_GRMERC),(const char*)get(F_SOTGRMERC));
|
||||
recset_rows.set_var("#GRMERC", grmerc);
|
||||
recset_rows.set_var("#FATHCATVEN", get(F_FATHCATVEN));
|
||||
recset_rows.set_var("#FATHCOD", get(F_FATHCODLIS));
|
||||
const long recset_rows_items = recset_rows.items();
|
||||
TProgind pi(recset_rows_items, TR("Creazione righe listini..."), true, true);
|
||||
|
||||
TProgind pi(keys_listini.items(), TR("Creazione righe listini..."), true, true);
|
||||
TSheet_field& sf_multilistini = sfield(F_MULTILISTINI);
|
||||
sf_multilistini.destroy();
|
||||
|
||||
const int prezzo_pos = sf_multilistini.cid2index(F_PREZZO);
|
||||
|
||||
//per ogni riga del recordset va ad aggiornare lo sheet sulla maschera (aggiunge la riga)
|
||||
for (bool ok = recset_rows.move_first(); ok; ok = recset_rows.move_next())
|
||||
FOR_EACH_TOKEN(keys_listini, tok)
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
//dati riga corrente
|
||||
const TString& codart = recset_rows.get(RCONDV_CODRIGA).as_string();
|
||||
const TString& um = recset_rows.get(RCONDV_UM).as_string();
|
||||
const real prezzo = recset_rows.get(RCONDV_PREZZO).as_real();
|
||||
//cerca se esiste o se deve aggiungerla: la find_codart restituisce il numero della riga alta..
|
||||
//..(descrizione/um) del codart in questione (che starà la riga sotto, ovvero riga_alta+1)
|
||||
const int riga_alta = find_codart(sf_multilistini, codart, um);
|
||||
key = tok;
|
||||
TString query;
|
||||
query << "USE RCONDV\n";
|
||||
query << "SELECT ANAMAG.GRMERC=#GRMERC\n";
|
||||
//giro su tutti i figli nello sheet dei figli
|
||||
query << "JOIN ANAMAG INTO CODART==CODRIGA\n";
|
||||
query << "FROM TIPO=L CATVEN=#CATVEN COD=#COD TIPORIGA=A\n";
|
||||
query << "TO TIPO=L CATVEN=#CATVEN COD=#COD TIPORIGA=A\n";
|
||||
|
||||
TToken_string riga_key;
|
||||
riga_key.add(recset_rows.get(RCONDV_CATVEN).as_string());
|
||||
riga_key.add(recset_rows.get(RCONDV_COD).as_string());
|
||||
riga_key.trim();
|
||||
//mette il prezzo al posto giusto (padre e figlio)
|
||||
const int pos = keys_figli.get_pos(riga_key);
|
||||
if (pos < 0)
|
||||
sf_multilistini.row(riga_alta + 1).add(prezzo.string(), prezzo_pos);
|
||||
else
|
||||
sf_multilistini.row(riga_alta).add(prezzo.string(), prezzo_pos + 1 + pos);
|
||||
}
|
||||
TISAM_recordset recset_rows(query);
|
||||
TString8 grmerc;
|
||||
grmerc.format("%-3s%-2s", (const char*)get(F_GRMERC),(const char*)get(F_SOTGRMERC));
|
||||
recset_rows.set_var("#GRMERC", grmerc);
|
||||
recset_rows.set_var("#CATVEN", key.get(0));
|
||||
recset_rows.set_var("#COD", key.get(1));
|
||||
const long recset_rows_items = recset_rows.items();
|
||||
|
||||
//posizione dell'attuale prezzo
|
||||
const int pos = keys_listini.get_pos(key);
|
||||
|
||||
//per ogni riga del recordset va ad aggiornare lo sheet sulla maschera (aggiunge la riga)
|
||||
for (bool ok = recset_rows.move_first(); ok; ok = recset_rows.move_next())
|
||||
{
|
||||
//dati riga corrente
|
||||
const TString& codart = recset_rows.get(RCONDV_CODRIGA).as_string();
|
||||
const TString& um = recset_rows.get(RCONDV_UM).as_string();
|
||||
const real prezzo = recset_rows.get(RCONDV_PREZZO).as_real();
|
||||
//cerca se esiste o se deve aggiungerla: la find_codart restituisce il numero della riga alta..
|
||||
//..(descrizione/um) del codart in questione (che starà la riga sotto, ovvero riga_alta+1)
|
||||
const int riga_alta = find_codart(sf_multilistini, codart, um);
|
||||
|
||||
//mette il prezzo al posto giusto (padre e figlio)
|
||||
if (pos <= 0)
|
||||
sf_multilistini.row(riga_alta + 1).add(prezzo.string(), prezzo_pos);
|
||||
else
|
||||
sf_multilistini.row(riga_alta).add(prezzo.string(), prezzo_pos + pos);
|
||||
} //for(bool ok..
|
||||
} //FOR_EACH_TOKEN..
|
||||
|
||||
//aggiorna i prezzi nuovi dei listini figli
|
||||
update_sons_prices();
|
||||
@ -291,7 +302,7 @@ void TAggiorna_listini_edit_mask::update_sons_prices()
|
||||
const int son_prezzo_pos = fath_prezzo_pos + 1 + r;
|
||||
FOR_EACH_SHEET_ROW(sf_listini, i, riga) if (riga->get_char(0) > ' ') //è come dire checked (ignoranti!)
|
||||
{
|
||||
const real old_son_prezzo = sf_listini.cell(r - 1, son_prezzo_pos);
|
||||
const real old_son_prezzo = sf_listini.cell(i - 1, son_prezzo_pos);
|
||||
if (old_son_prezzo > ZERO)
|
||||
{
|
||||
const real fath_prezzo = riga->get(fath_prezzo_pos);
|
||||
|
Loading…
x
Reference in New Issue
Block a user