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 "../mg/anamag.h"
#include "../mg/umart.h"
#include "condv.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)
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 add_art(); //aggiunge un articolo ai listini (on_field)
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()
{
//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?)
//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?)
@ -247,7 +249,6 @@ void TAggiorna_listini_edit_mask::fill_multilistini_sheet()
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";
@ -327,7 +328,7 @@ bool TAggiorna_listini_edit_mask::one_checked()
return false;
}
//checka-dechecka la colonna di spunte dello sheet
void TAggiorna_listini_edit_mask::check_all(const bool checked)
{
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();
}
//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)
{
switch(o.dlg())
{
case F_LISTINI_FIGLI:
case F_MULTILISTINI:
if (e == se_query_add)
{
return false;
}
break;
case F_GRMERC:
case F_SOTGRMERC:
//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());
}
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:
break;
}
@ -566,6 +632,8 @@ TAggiorna_listini_query_mask::TAggiorna_listini_query_mask() : TAutomask("ve2700
////////////////////////////////////////////////////////
class TAggiorna_listini : public TSkeleton_application
{
protected:
virtual bool create();
public:
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[])
{

View File

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