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)
|
for (int i = 1; i < sf.items(); i += 2)
|
||||||
{
|
{
|
||||||
const char* art = sf.cell(i, codart_pos);
|
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();
|
um.trim();
|
||||||
if (codart == art && codum == um)
|
if (codart == art && codum == um)
|
||||||
return i - 1;
|
return i - 1;
|
||||||
@ -212,45 +212,60 @@ void TAggiorna_listini_edit_mask::fill_multilistini_sheet()
|
|||||||
//..viene aggiunta al padre medesimo (i padri devono sapere tutto dei figli, sennò che genitori sono?)
|
//..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..
|
//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?)
|
//..loro ignoranza di tale riga (un padre qualche vantaggio dovrà pur averlo, no?)
|
||||||
TString query;
|
|
||||||
query << "USE RCONDV\n";
|
TToken_string keys_listini(140, ';');
|
||||||
query << "SELECT (TIPORIGA=\"A\")&&(ANAMAG.GRMERC=#GRMERC)&&(((CATVEN=#FATHCATVEN)&&(COD=#FATHCOD))";
|
TToken_string key;
|
||||||
//giro su tutti i figli nello sheet dei figli
|
|
||||||
|
key.add(get(F_FATHCATVEN));
|
||||||
|
key.add(get(F_FATHCODLIS));
|
||||||
|
key.trim();
|
||||||
|
keys_listini.add(key);
|
||||||
|
|
||||||
TSheet_field& sf_figli = sfield(F_LISTINI_FIGLI);
|
TSheet_field& sf_figli = sfield(F_LISTINI_FIGLI);
|
||||||
TToken_string keys_figli(140, ';');
|
|
||||||
FOR_EACH_SHEET_ROW(sf_figli, r, riga)
|
FOR_EACH_SHEET_ROW(sf_figli, r, riga)
|
||||||
{
|
{
|
||||||
TToken_string key;
|
key.cut(0);
|
||||||
key.add(riga->get(0));
|
key.add(riga->get(0));
|
||||||
key.add(riga->get(1));
|
key.add(riga->get(1));
|
||||||
key.trim();
|
key.trim();
|
||||||
keys_figli.add(key);
|
keys_listini.add(key);
|
||||||
//prosegue la select
|
|
||||||
query << "||((CATVEN=\"" << key.get(0) << "\")&&(COD=\"" << key.get(1) << "\"))";
|
|
||||||
}
|
}
|
||||||
query << ")\n";
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
FOR_EACH_TOKEN(keys_listini, tok)
|
||||||
|
{
|
||||||
|
if (!pi.addstatus(1))
|
||||||
|
break;
|
||||||
|
|
||||||
|
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 << "JOIN ANAMAG INTO CODART==CODRIGA\n";
|
||||||
query << "FROM TIPO=L\n";
|
query << "FROM TIPO=L CATVEN=#CATVEN COD=#COD TIPORIGA=A\n";
|
||||||
query << "TO TIPO=L\n";
|
query << "TO TIPO=L CATVEN=#CATVEN COD=#COD TIPORIGA=A\n";
|
||||||
|
|
||||||
TISAM_recordset recset_rows(query);
|
TISAM_recordset recset_rows(query);
|
||||||
TString8 grmerc;
|
TString8 grmerc;
|
||||||
grmerc.format("%-3s%-2s", (const char*)get(F_GRMERC),(const char*)get(F_SOTGRMERC));
|
grmerc.format("%-3s%-2s", (const char*)get(F_GRMERC),(const char*)get(F_SOTGRMERC));
|
||||||
recset_rows.set_var("#GRMERC", grmerc);
|
recset_rows.set_var("#GRMERC", grmerc);
|
||||||
recset_rows.set_var("#FATHCATVEN", get(F_FATHCATVEN));
|
recset_rows.set_var("#CATVEN", key.get(0));
|
||||||
recset_rows.set_var("#FATHCOD", get(F_FATHCODLIS));
|
recset_rows.set_var("#COD", key.get(1));
|
||||||
const long recset_rows_items = recset_rows.items();
|
const long recset_rows_items = recset_rows.items();
|
||||||
TProgind pi(recset_rows_items, TR("Creazione righe listini..."), true, true);
|
|
||||||
|
|
||||||
TSheet_field& sf_multilistini = sfield(F_MULTILISTINI);
|
//posizione dell'attuale prezzo
|
||||||
const int prezzo_pos = sf_multilistini.cid2index(F_PREZZO);
|
const int pos = keys_listini.get_pos(key);
|
||||||
|
|
||||||
//per ogni riga del recordset va ad aggiornare lo sheet sulla maschera (aggiunge la riga)
|
//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 (bool ok = recset_rows.move_first(); ok; ok = recset_rows.move_next())
|
||||||
{
|
{
|
||||||
if (!pi.addstatus(1))
|
|
||||||
break;
|
|
||||||
|
|
||||||
//dati riga corrente
|
//dati riga corrente
|
||||||
const TString& codart = recset_rows.get(RCONDV_CODRIGA).as_string();
|
const TString& codart = recset_rows.get(RCONDV_CODRIGA).as_string();
|
||||||
const TString& um = recset_rows.get(RCONDV_UM).as_string();
|
const TString& um = recset_rows.get(RCONDV_UM).as_string();
|
||||||
@ -259,17 +274,13 @@ void TAggiorna_listini_edit_mask::fill_multilistini_sheet()
|
|||||||
//..(descrizione/um) del codart in questione (che starà la riga sotto, ovvero riga_alta+1)
|
//..(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);
|
const int riga_alta = find_codart(sf_multilistini, codart, um);
|
||||||
|
|
||||||
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)
|
//mette il prezzo al posto giusto (padre e figlio)
|
||||||
const int pos = keys_figli.get_pos(riga_key);
|
if (pos <= 0)
|
||||||
if (pos < 0)
|
|
||||||
sf_multilistini.row(riga_alta + 1).add(prezzo.string(), prezzo_pos);
|
sf_multilistini.row(riga_alta + 1).add(prezzo.string(), prezzo_pos);
|
||||||
else
|
else
|
||||||
sf_multilistini.row(riga_alta).add(prezzo.string(), prezzo_pos + 1 + pos);
|
sf_multilistini.row(riga_alta).add(prezzo.string(), prezzo_pos + pos);
|
||||||
}
|
} //for(bool ok..
|
||||||
|
} //FOR_EACH_TOKEN..
|
||||||
|
|
||||||
//aggiorna i prezzi nuovi dei listini figli
|
//aggiorna i prezzi nuovi dei listini figli
|
||||||
update_sons_prices();
|
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;
|
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!)
|
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)
|
if (old_son_prezzo > ZERO)
|
||||||
{
|
{
|
||||||
const real fath_prezzo = riga->get(fath_prezzo_pos);
|
const real fath_prezzo = riga->get(fath_prezzo_pos);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user