Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
aggiunta lista articoli aggiungibili


git-svn-id: svn://10.65.10.50/trunk@19402 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2009-10-07 15:25:36 +00:00
parent 72d6d48f97
commit b2a56fe7fb
2 changed files with 85 additions and 12 deletions

View File

@ -8,6 +8,7 @@
#include <tabutil.h> #include <tabutil.h>
#include "../mg/anamag.h" #include "../mg/anamag.h"
#include "../mg/umart.h"
#include "condv.h" #include "condv.h"
#include "rcondv.h" #include "rcondv.h"
@ -35,6 +36,7 @@ protected:
int find_codart(TSheet_field& sf, const TString& codart, const TString& um); //cerca l'articolo nello sheet (on_field) int find_codart(TSheet_field& sf, const TString& codart, const TString& um); //cerca l'articolo nello sheet (on_field)
bool one_checked(); //controlla se nella colonna dei check ce ne è almeno 1 checkato (on_field) bool one_checked(); //controlla se nella colonna dei check ce ne è almeno 1 checkato (on_field)
void check_all(const bool checked); //checka-dechecka la colonna dei check (on_field) void check_all(const bool checked); //checka-dechecka la colonna dei check (on_field)
void add_art(); //aggiunge un articolo ai listini (on_field)
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
@ -208,7 +210,7 @@ int TAggiorna_listini_edit_mask::find_codart(TSheet_field& sf, const TString& co
void TAggiorna_listini_edit_mask::fill_multilistini_sheet() void TAggiorna_listini_edit_mask::fill_multilistini_sheet()
{ {
//popola il double-deck sheet //popola il double-deck sheet
//cerca tutte le righe che appartengono a pedre e figli; se una riga appartiene ad un figlio e non al padre.. //cerca tutte le righe che appartengono a padre e figli; se una riga appartiene ad un figlio e non al padre..
//..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?)
@ -247,7 +249,6 @@ void TAggiorna_listini_edit_mask::fill_multilistini_sheet()
TString query; TString query;
query << "USE RCONDV\n"; query << "USE RCONDV\n";
query << "SELECT ANAMAG.GRMERC=#GRMERC\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 CATVEN=#CATVEN COD=#COD TIPORIGA=A\n"; query << "FROM TIPO=L CATVEN=#CATVEN COD=#COD TIPORIGA=A\n";
query << "TO TIPO=L CATVEN=#CATVEN COD=#COD TIPORIGA=A\n"; query << "TO TIPO=L CATVEN=#CATVEN COD=#COD TIPORIGA=A\n";
@ -327,7 +328,7 @@ bool TAggiorna_listini_edit_mask::one_checked()
return false; return false;
} }
//checka-dechecka la colonna di spunte dello sheet
void TAggiorna_listini_edit_mask::check_all(const bool checked) void TAggiorna_listini_edit_mask::check_all(const bool checked)
{ {
TSheet_field& sf_listini = sfield(F_MULTILISTINI); TSheet_field& sf_listini = sfield(F_MULTILISTINI);
@ -338,11 +339,68 @@ void TAggiorna_listini_edit_mask::check_all(const bool checked)
sf_listini.force_update(); sf_listini.force_update();
} }
//aggiunge un articolo ai listini
void TAggiorna_listini_edit_mask::add_art()
{
//si possono aggiungere solo articoli con lo stesso GRMERC selezionato ma non ancora in listino padre, oppure..
//..articoli orfani di grmerc (che però saranno sconsigliati!)
//(per adesso solo con l'unità di misura principale;per aggiungere gli articoli con più unità di misura..
//..si rimanda al programma principale di gestione listini ve2500!!)
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 UMART INTO CODART=CODART NRIGA=1\n";
TISAM_recordset recset(query);
TString8 grmerc;
grmerc.format("%-3s%-2s", (const char*)get(F_GRMERC),(const char*)get(F_SOTGRMERC));
recset.set_var("#GRMERC", grmerc);
recset.set_var("#CATVEN", get(F_FATHCATVEN));
recset.set_var("#COD", get(F_FATHCODLIS));
const int recset_items = recset.items();
//crea uno sheet volante con gli articoli aggiungibili
TArray_sheet sheet(-1, -1, 78, 20, TR("Articoli aggiungibili"), HR("@1|Codice@20|UM|Descrizione@50"));
TProgind pi(recset_items, TR("Ricerca articoli aggiungibili..."), true, true);
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
{
if (!pi.addstatus(1))
break;
TToken_string row;
//prechecka solo quelli con il corretto grmerc; gli articoli orfani no!
const TString& grmerc = recset.get(ANAMAG_GRMERC).as_string();
if (grmerc.full())
row.add("X");
else
row.add("");
const TString codart = recset.get(ANAMAG_CODART).as_string();
row.add(codart);
const TString& um = recset.get(UMART_UM).as_string();
row.add(um);
const TString& descr = recset.get(ANAMAG_DESCR).as_string();
row.add(descr);
sheet.add(row);
}
sheet.rows_array().sort(false);
sheet.run();
}
bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
switch(o.dlg()) switch(o.dlg())
{ {
case F_LISTINI_FIGLI:
case F_MULTILISTINI:
if (e == se_query_add)
{
return false;
}
break;
case F_GRMERC: case F_GRMERC:
case F_SOTGRMERC: case F_SOTGRMERC:
//una volta selezionati grmerc/sotgrmerc riempie la colonna ricarico dello sheet //una volta selezionati grmerc/sotgrmerc riempie la colonna ricarico dello sheet
@ -372,6 +430,14 @@ bool TAggiorna_listini_edit_mask::on_field_event(TOperable_field& o, TField_even
check_all(!one_checked()); check_all(!one_checked());
} }
break; break;
case DLG_ADDART:
if (e == fe_button)
{
if (field(F_GRMERC).empty())
return error_box(TR("Per aggiungere articoli è necessario selezionare un gruppo merceologico!"));
add_art();
}
break;
default: default:
break; break;
} }
@ -566,6 +632,8 @@ TAggiorna_listini_query_mask::TAggiorna_listini_query_mask() : TAutomask("ve2700
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
class TAggiorna_listini : public TSkeleton_application class TAggiorna_listini : public TSkeleton_application
{ {
protected:
virtual bool create();
public: public:
virtual void main_loop(); virtual void main_loop();
}; };
@ -579,6 +647,17 @@ void TAggiorna_listini::main_loop()
} }
} }
bool TAggiorna_listini::create()
{
//controlla che solo il producer AGA possa usare questo programma
const int oem = ini_get_int(CONFIG_OEM, "MAIN", "OEM", -1);
if (oem != 0)
{
error_box(TR("Programma non autorizzato!"));
return false;
}
return TSkeleton_application::create();
}
int ve2700(int argc, char* argv[]) int ve2700(int argc, char* argv[])
{ {

View File

@ -176,19 +176,13 @@ PAGE "Riga listino figlio" -1 -1 78 22
STRING F_CATVEN 2 STRING F_CATVEN 2
BEGIN BEGIN
PROMPT 1 1 "Cat. ven. " PROMPT 1 1 "Cat. ven. "
FLAGS "U" FLAGS "UD"
KEY 1
USE CVE
INPUT CODTAB F_CATVEN
DISPLAY "Cat." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CATVEN CODTAB
END END
STRING F_CODLIS 3 STRING F_CODLIS 3
BEGIN BEGIN
PROMPT 1 2 "Listino " PROMPT 1 2 "Listino "
FLAGS "U" FLAGS "UD"
END END
NUMBER F_RICARICO 4 NUMBER F_RICARICO 4
@ -199,7 +193,7 @@ END
STRING F_DESLIS 50 STRING F_DESLIS 50
BEGIN BEGIN
PROMPT 18 2 "" PROMPT 18 2 ""
FLAGS "" FLAGS "D"
END END
ENDPAGE ENDPAGE