Patch level : 10.0 500

Files correlati     : ve2.exe ve2700a.msk
Ricompilazione Demo : [ ]
Commento            :
Corretta selezione nuovi articoli da aggiungere al listino


git-svn-id: svn://10.65.10.50/trunk@19575 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2009-11-04 15:58:12 +00:00
parent 89d8a61d76
commit b2667c6cde
2 changed files with 95 additions and 63 deletions

View File

@ -515,7 +515,7 @@ void TAggiorna_listini_edit_mask::add_art()
TString query;
query << "USE ANAMAG\n";
query << "SELECT ((GRMERC?=#GRMERC)||(GRMERC=\"\"))&&(RCONDV.CODRIGA=\"\")\n";
query << "JOIN RCONDV INTO TIPO=\"L\" CATVEN=#CATVEN COD=#COD TIPORIGA=\"A\" CODRIGA=CODART\n";
query << "JOIN RCONDV INTO TIPO=\"L\" CATVEN==#CATVEN COD==#COD TIPORIGA=\"A\" CODRIGA==CODART\n";
query << "JOIN UMART INTO CODART=CODART\n";
TISAM_recordset recset(query);
TString8 grmerc, grmerc_filter;
@ -748,7 +748,6 @@ bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_even
}
}
break;
case S2_PREZZO:
if (e == fe_modify && jolly == 2)
{
@ -818,7 +817,8 @@ bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_even
TSheet_field& sf_listini = sfield(F_MULTILISTINI);
const int selected_riga = sf_listini.selected();
TMask& rowmask = sf_listini.sheet_row_mask(selected_riga);
rowmask.reset(-1);
rowmask.reset(-1); // Azzera tutto ma ...
rowmask.set(S2_CHECK, "X"); // ... forza spunta della riga
}
}
break;
@ -979,68 +979,54 @@ TAggiorna_listini_edit_mask::TAggiorna_listini_edit_mask(TMask* query_mask)
///////////////////////////////////////////////////////////////////////////////
class TAggiorna_listini_query_mask : public TAutomask
{
TArray_sheet* _sheet;
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TAggiorna_listini_query_mask();
virtual ~TAggiorna_listini_query_mask();
};
bool TAggiorna_listini_query_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch(o.dlg())
{
case F_FATHCATVEN:
if (e == fe_button)
{
TArray_sheet sheet_catven(-1, -1, 78, 10, TR("Categorie di vendita"), HR("Codice|Descrizione@50"));
TString4 catven;
FOR_EACH_SHEET_ROW(*_sheet, t, riga)
{
const char* cv = riga->get(0);
if (catven != cv)
{
catven = cv;
TToken_string r;
r.add(catven);
r.add(cache().get("CVE", catven, "S0"));
sheet_catven.add(r);
}
}
if (sheet_catven.run() == K_ENTER)
{
TToken_string& r = sheet_catven.row(-1);
o.set(r.get(0));
e = fe_modify;
}
}
if ((e == fe_init || e == fe_modify) && !o.empty())
set(F_FATHDESVEN, cache().get("CVE", o.get(), "S0"));
break;
case F_FATHCODLIS:
if (e == fe_button)
{
TString query;
query << "USE CONDV\n";
query << "SELECT (FATHCOD!='')&&(BETWEEN(FATHCATVEN,#CATVEN,#CATVEN))\n";
query << "FROM TIPO=L\n";
query << "TO TIPO=L\n";
//ottiene tutti i listini che hanno un padre
TISAM_recordset listini_figli(query);
listini_figli.set_var("#CATVEN", get(F_FATHCATVEN));
const int listini_figli_items = listini_figli.items();
//adesso deve crearsi la lista dei padri
TAssoc_array listini_padri;
for (bool ok = listini_figli.move_first(); ok; ok = listini_figli.move_next())
{
//quale è il padre del figlio?
TToken_string key;
key.add(listini_figli.get(CONDV_FATHCATVEN).as_string(), 0);
key.add(listini_figli.get(CONDV_FATHCOD).as_string(), 1);
//se non esiste già nella lista dei padri deve essere aggiunto!
if (!listini_padri.is_key(key))
{
//necessita della descrizione del padre
TToken_string chiave;
chiave.add("L");
chiave.add(key.get(0));
chiave.add("");
chiave.add("");
chiave.add(key.get(1));
const TString& descr_padre = cache().get(LF_CONDV, chiave, CONDV_DESCR);
listini_padri.add(key, descr_padre);
}
} //for(bool ok =...
//utilizzando l'assoc_array dei padri propone uno sheet di ricerca dei soli listini che hanno paternità
//maschera volante di ricerca (è una display)
TArray_sheet sheet(-1, -1, 78, 10, TR("Listini padri"), HR("Cat.Ven.|Codice|Descrizione@50"));
//riempimento dello sheet
FOR_EACH_ASSOC_STRING(listini_padri, obj, key, descr)
{
TToken_string row;
row = key;
row.add(descr);
sheet.add(row);
}
sheet.rows_array().sort(); //riordina le righe attualmente scombinate
if (sheet.run() == K_ENTER)
if (_sheet->run() == K_ENTER)
{
//riempie la maschera di query
TToken_string& row = sheet.row(sheet.selected());
TToken_string& row = _sheet->row(-1);
set(F_FATHCATVEN, row.get(0), true);
set(F_FATHCODLIS, row.get(1));
set(F_FATHDESLIS, row.get(2));
@ -1067,10 +1053,67 @@ TAggiorna_listini_query_mask::TAggiorna_listini_query_mask() : TAutomask("ve2700
//in base alla cervellotica configurazione impostata dall'utonto abilita/disabilita campi
const bool gesliscv = ini_get_bool(CONFIG_DITTA, "ve", "GESLISCV");
enable(F_FATHCATVEN, gesliscv);
enable(F_FATHDESVEN, gesliscv);
//attenzione!!! il campo CATVEN è in chiave 1! per disabilitarlo ci vuole questo trucco!
if (!gesliscv)
efield(F_FATHCATVEN).reset_key(1);
_sheet = new TArray_sheet(-1, -1, 78, 10, TR("Listini padri"), HR("Cat.Ven.|Codice|Descrizione@50"));
TString query;
query << "USE CONDV\n";
query << "SELECT (FATHCOD!='')&&(BETWEEN(FATHCATVEN,#CATVEN,#CATVEN))\n";
query << "FROM TIPO=L\n";
query << "TO TIPO=L\n";
//ottiene tutti i listini che hanno un padre
TISAM_recordset listini_figli(query);
listini_figli.set_var("#CATVEN", get(F_FATHCATVEN));
const int listini_figli_items = listini_figli.items();
//adesso deve crearsi la lista dei padri
TAssoc_array listini_padri;
for (bool ok = listini_figli.move_first(); ok; ok = listini_figli.move_next())
{
//quale è il padre del figlio?
TToken_string key;
key.add(listini_figli.get(CONDV_FATHCATVEN).as_string(), 0);
key.add(listini_figli.get(CONDV_FATHCOD).as_string(), 1);
//se non esiste già nella lista dei padri deve essere aggiunto!
if (!listini_padri.is_key(key))
{
//necessita della descrizione del padre
TToken_string chiave;
chiave.add("L");
chiave.add(key.get(0));
chiave.add("");
chiave.add("");
chiave.add(key.get(1));
const TString& descr_padre = cache().get(LF_CONDV, chiave, CONDV_DESCR);
listini_padri.add(key, descr_padre);
}
} //for(bool ok =...
//utilizzando l'assoc_array dei padri propone uno sheet di ricerca dei soli listini che hanno paternità
//maschera volante di ricerca (è una display)
//riempimento dello sheet
FOR_EACH_ASSOC_STRING(listini_padri, obj, key, descr)
{
TToken_string row;
row = key;
row.add(descr);
_sheet->add(row);
}
if (_sheet->items() > 0)
{
_sheet->rows_array().sort(); //riordina le righe attualmente scombinate
TToken_string& row = _sheet->row(0);
set(F_FATHCATVEN, row.get(0), true);
set(F_FATHCODLIS, row.get(1));
set(F_FATHDESLIS, row.get(2));
}
}
TAggiorna_listini_query_mask::~TAggiorna_listini_query_mask()
{
delete _sheet;
}
////////////////////////////////////////////////////////

View File

@ -25,26 +25,15 @@ END
STRING F_FATHCATVEN 2
BEGIN
PROMPT 1 1 "Cat. ven. "
FLAGS "U"
FLAGS "BU"
KEY 1
USE CVE
INPUT CODTAB F_FATHCATVEN
DISPLAY "Cat." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_FATHCATVEN CODTAB
OUTPUT F_FATHDESVEN S0
CHECKTYPE FORCED
END
STRING F_FATHDESVEN 50
BEGIN
PROMPT 18 1 ""
USE CVE KEY 2
INPUT S0 F_FATHDESVEN
DISPLAY "Descrizione@50" S0
DISPLAY "Cat." CODTAB
COPY OUTPUT F_FATHCATVEN
CHECKTYPE NORMAL
FLAGS "D"
END
STRING F_FATHCODLIS 3