Patch level : 10.0 NO PATCH
Files correlati : pd6411 pd6411a.msk Ricompilazione Demo : [ ] Commento : Gestione listini per gruppo merceologico per Haba (mancano i commenti, al prossimo commit) git-svn-id: svn://10.65.10.50/branches/R_10_00@20998 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4ed4a7208b
commit
add91848df
@ -41,6 +41,9 @@ Importazione di movimenti in Analitica (Habilita)
|
||||
Ribaltamento ricorsivo movimenti di Analitica (Habilita)
|
||||
Quadratore dei movimenti di Analitica (Habilita)
|
||||
|
||||
PD6411
|
||||
Gestione Listini per Gruppo Merceologico (Haba)
|
||||
|
||||
|
||||
- PG -------------------------------------------------------------------------------------------------------------
|
||||
PG0001
|
||||
|
14
ps/pd6411.cpp
Executable file
14
ps/pd6411.cpp
Executable file
@ -0,0 +1,14 @@
|
||||
#include <xvt.h>
|
||||
|
||||
#include "pd6411.h"
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
int n = argc > 1 ? atoi(argv[1]+1) : 0;
|
||||
switch(n)
|
||||
{
|
||||
case 0: pd6411100(argc, argv); break; //gestione listini materiali Haba Piastre
|
||||
default: pd6411100(argc, argv); break; //gestione listini materiali Haba Piastre
|
||||
}
|
||||
return 0;
|
||||
}
|
1
ps/pd6411.h
Executable file
1
ps/pd6411.h
Executable file
@ -0,0 +1 @@
|
||||
int pd6411100(int argc, char* argv[]);
|
241
ps/pd6411100.cpp
Executable file
241
ps/pd6411100.cpp
Executable file
@ -0,0 +1,241 @@
|
||||
#include <defmask.h>
|
||||
|
||||
#include "pd6411100a.h"
|
||||
#include "../ca/calib01.h"
|
||||
#include "../ca/movana.h"
|
||||
#include "../ca/rmovana.h"
|
||||
#include "../ve/velib.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TListini_haba_msk
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TListini_haba_msk: public TAutomask
|
||||
{
|
||||
protected:
|
||||
void riempi_sheet();
|
||||
void cambio(const short primo, const short secondo);
|
||||
void aggiungi_riga();
|
||||
void registra();
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
public:
|
||||
TListini_haba_msk();
|
||||
};
|
||||
|
||||
void TListini_haba_msk::riempi_sheet()
|
||||
{
|
||||
const TString8 gruppo = get(F_GRUPPO);
|
||||
const TString4 mese = get(F_MESE);
|
||||
|
||||
TSheet_field& sheet = sfield(F_SHEET);
|
||||
sheet.destroy();
|
||||
|
||||
if(gruppo.empty() || mese.empty())
|
||||
{
|
||||
sheet.force_update();
|
||||
return;
|
||||
}
|
||||
|
||||
TString16 codtab;
|
||||
codtab << gruppo << mese;
|
||||
codtab.trim();
|
||||
|
||||
TString query;
|
||||
query << "USE LGM\n"
|
||||
<< "FROM CODTAB=\"" << codtab << "\"\n"
|
||||
<< "TO CODTAB=\"" << codtab << "\"";
|
||||
|
||||
TISAM_recordset listini(query);
|
||||
|
||||
for(bool ok = listini.move_first(); ok; ok = listini.move_next())
|
||||
{
|
||||
const TRectype& lis = listini.cursor()->curr();
|
||||
const TString80 codtab = lis.get("CODTAB");
|
||||
const real impeu = lis.get("R0");
|
||||
const real impfr = lis.get("R1");
|
||||
|
||||
TToken_string& row = sheet.row(-1);
|
||||
row.add(codtab.left(3), sheet.cid2index(S_GRUPPO));
|
||||
row.add(codtab.mid(3,2), sheet.cid2index(S_MESE));
|
||||
row.add(codtab.mid(5), sheet.cid2index(S_SPESSORE));
|
||||
row.add(impeu.string(), sheet.cid2index(S_IMPEURO));
|
||||
row.add(impfr.string(), sheet.cid2index(S_IMPFRANCO));
|
||||
}
|
||||
sheet.force_update();
|
||||
}
|
||||
|
||||
void TListini_haba_msk::cambio(const short primo, const short secondo)
|
||||
{
|
||||
TSheet_field& sheet = sfield(F_SHEET);
|
||||
TMask& msk = sheet.mask();
|
||||
const TString& codval = msk.get(F_CODVAL);
|
||||
const real cambio = msk.get_real(F_CAMBIO);
|
||||
|
||||
TMask& rmsk = sheet.sheet_mask();
|
||||
|
||||
if(rmsk.field(secondo).empty() || cambio.is_zero() || codval.empty())
|
||||
return;
|
||||
|
||||
TToken_string& row = sheet.row(sheet.selected());
|
||||
TCurrency impval; rmsk.get_currency(secondo, impval);
|
||||
|
||||
if(secondo == S_IMPEURO)
|
||||
impval.change_value(codval, cambio);
|
||||
else
|
||||
impval.change_to_euro_val();
|
||||
|
||||
rmsk.set(primo, impval);
|
||||
}
|
||||
|
||||
void TListini_haba_msk::aggiungi_riga()
|
||||
{
|
||||
const TString4 gruppo = get(F_GRUPPO);
|
||||
const TString4 mese = get(F_MESE);
|
||||
|
||||
if(gruppo.empty() || mese.empty())
|
||||
return;
|
||||
|
||||
TSheet_field& sheet = sfield(F_SHEET);
|
||||
TToken_string& row = sheet.row(-1);
|
||||
row.add(gruppo, sheet.cid2index(S_GRUPPO));
|
||||
row.add(mese, sheet.cid2index(S_MESE));
|
||||
sheet.force_update();
|
||||
}
|
||||
|
||||
void TListini_haba_msk::registra()
|
||||
{
|
||||
TTable listini("LGM");
|
||||
TSheet_field& sheet = sfield(F_SHEET);
|
||||
|
||||
FOR_EACH_SHEET_ROW(sheet, r, riga)
|
||||
{
|
||||
TToken_string& row = *(TToken_string*)riga;
|
||||
TString80 codtab;
|
||||
codtab << row.get(sheet.cid2index(S_GRUPPO)) << row.get(sheet.cid2index(S_MESE)) << row.get(sheet.cid2index(S_SPESSORE));
|
||||
const real impeuro(row.get(sheet.cid2index(S_IMPEURO)));
|
||||
const real impfranco(row.get(sheet.cid2index(S_IMPFRANCO)));
|
||||
|
||||
listini.put("CODTAB", codtab);
|
||||
listini.put("R0", impeuro);
|
||||
listini.put("R1", impfranco);
|
||||
listini.rewrite_write();
|
||||
}
|
||||
}
|
||||
|
||||
bool TListini_haba_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch(o.dlg())
|
||||
{
|
||||
case DLG_CANCEL:
|
||||
if(e == fe_button && jolly == 0)
|
||||
{
|
||||
reset(F_GRUPPO);
|
||||
reset(F_MESE);
|
||||
sfield(F_SHEET).destroy();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case DLG_SAVEREC:
|
||||
if(e == fe_button)
|
||||
registra();
|
||||
break;
|
||||
case F_GRUPPO:
|
||||
case F_MESE:
|
||||
if(e == fe_modify)
|
||||
riempi_sheet();
|
||||
break;
|
||||
case F_SHEET:
|
||||
if(e == se_query_add)
|
||||
{
|
||||
aggiungi_riga();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case S_SPESSORE:
|
||||
if(e == fe_modify)
|
||||
{
|
||||
TSheet_field& sheet = sfield(F_SHEET);
|
||||
const int rsel = sheet.selected();
|
||||
const int spessore = o.get_long();
|
||||
|
||||
FOR_EACH_SHEET_ROW(sheet, r, riga)
|
||||
{
|
||||
if(r == rsel)
|
||||
continue;
|
||||
|
||||
TToken_string& row = *(TToken_string*)riga;
|
||||
if(row.get_int(sheet.cid2index(S_SPESSORE)) == spessore)
|
||||
{
|
||||
TString msg;
|
||||
msg << "Attenzione: esiste già una riga con spessore " << spessore;
|
||||
warning_box(msg);
|
||||
|
||||
sheet.select(rsel);
|
||||
TMask& rmsk = sheet.sheet_mask();
|
||||
rmsk.set(S_SPESSORE, 0L);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case S_IMPEURO:
|
||||
case S_IMPFRANCO:
|
||||
if(e == fe_modify || e == fe_close)
|
||||
{
|
||||
const short primo = o.dlg();
|
||||
const short secondo = S_IMPEURO + S_IMPFRANCO - o.dlg();
|
||||
|
||||
TMask& rmsk = o.mask();
|
||||
|
||||
if(rmsk.field(primo).empty() && !rmsk.field(secondo).empty())
|
||||
cambio(primo, secondo);
|
||||
|
||||
if(!rmsk.field(primo).empty() && rmsk.field(secondo).empty())
|
||||
cambio(secondo, primo);
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
TListini_haba_msk::TListini_haba_msk() : TAutomask("pd6411100a")
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TListini_haba_app
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TListini_haba_app: public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
virtual bool check_autorization() const {return false;}
|
||||
virtual const char * extra_modules() const {return "cg";}
|
||||
|
||||
virtual void main_loop();
|
||||
|
||||
void elabora();
|
||||
};
|
||||
|
||||
void TListini_haba_app::elabora()
|
||||
{
|
||||
}
|
||||
|
||||
void TListini_haba_app::main_loop()
|
||||
{
|
||||
TListini_haba_msk m;
|
||||
bool running = true;
|
||||
|
||||
while(m.run() == K_ENTER)
|
||||
{
|
||||
elabora();
|
||||
}
|
||||
}
|
||||
|
||||
int pd6411100(int argc, char* argv[])
|
||||
{
|
||||
TListini_haba_app app;
|
||||
app.run(argc, argv, TR("Listini Haba piastre"));
|
||||
return 0;
|
||||
}
|
13
ps/pd6411100a.h
Executable file
13
ps/pd6411100a.h
Executable file
@ -0,0 +1,13 @@
|
||||
//Definizione campi per maschera pd6411 - Gestione Materiali spessore categoria
|
||||
#define F_GRUPPO 201
|
||||
#define F_MESE 202
|
||||
#define F_CODVAL 203
|
||||
#define F_DESVAL 204
|
||||
#define F_CAMBIO 205
|
||||
#define F_SHEET 206
|
||||
|
||||
#define S_GRUPPO 101
|
||||
#define S_MESE 102
|
||||
#define S_SPESSORE 103
|
||||
#define S_IMPEURO 104
|
||||
#define S_IMPFRANCO 105
|
157
ps/pd6411100a.uml
Executable file
157
ps/pd6411100a.uml
Executable file
@ -0,0 +1,157 @@
|
||||
#include "pd6411100a.h"
|
||||
|
||||
TOOLBAR "" 0 0 0 2
|
||||
|
||||
BUTTON DLG_SAVEREC
|
||||
BEGIN
|
||||
PROMPT 1 1 "Salva"
|
||||
PICTURE TOOL_SAVEREC
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL
|
||||
BEGIN
|
||||
PROMPT 1 1 "Annulla"
|
||||
PICTURE TOOL_CANCEL
|
||||
END
|
||||
|
||||
#include <helpbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Gestione Listini" -1 -1 80 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bParametri filtro"
|
||||
END
|
||||
|
||||
STRING F_GRUPPO 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Gruppo "
|
||||
USE GMC
|
||||
INPUT CODTAB F_GRUPPO
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_GRUPPO CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
LIST F_MESE 15
|
||||
BEGIN
|
||||
PROMPT 25 2 "Mese "
|
||||
FLAGS "AM"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 1 4 "@bParametri per il cambio"
|
||||
END
|
||||
|
||||
STRING F_CODVAL 3
|
||||
BEGIN
|
||||
PROMPT 2 5 "Valuta "
|
||||
FIELD CODTAB
|
||||
FLAGS "UZ"
|
||||
KEY 1
|
||||
USE %VAL
|
||||
INPUT CODTAB F_CODVAL
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Valuta@50" S0
|
||||
OUTPUT F_CODVAL CODTAB
|
||||
OUTPUT F_DESVAL S0
|
||||
OUTPUT F_CAMBIO S4
|
||||
HELP "Codice della valuta"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_DESVAL 50
|
||||
BEGIN
|
||||
PROMPT 15 5 ""
|
||||
FIELD S0
|
||||
KEY 2
|
||||
USE %VAL KEY 2
|
||||
INPUT S0 F_DESVAL
|
||||
DISPLAY "Valuta@60" S0
|
||||
DISPLAY "Codice@10" CODTAB
|
||||
COPY OUTPUT F_CODVAL
|
||||
HELP "Descrizione della valuta"
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Manca la descrizione"
|
||||
END
|
||||
|
||||
|
||||
NUMBER F_CAMBIO 15 5
|
||||
BEGIN
|
||||
PROMPT 2 6 "Cambio "
|
||||
FIELD S4
|
||||
FLAGS "U"
|
||||
CHECKTYPE REQUIRED
|
||||
WARINING "E' necessario specificare un cambio di riferimento"
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEET
|
||||
BEGIN
|
||||
PROMPT 2 8 ""
|
||||
ITEM "Gruppo"
|
||||
ITEM "Mese"
|
||||
ITEM "Spessore"
|
||||
ITEM "Importo\nEuro"
|
||||
ITEM "Importo\nFranco"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
PAGE "Riga listino" -1 -1 78 13
|
||||
|
||||
STRING S_GRUPPO 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Gruppo "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST S_MESE 15
|
||||
BEGIN
|
||||
PROMPT 25 2 "Mese "
|
||||
FLAGS "MD"
|
||||
END
|
||||
|
||||
NUMBER S_SPESSORE 6
|
||||
BEGIN
|
||||
PROMPT 55 2 "Spessore "
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
CURRENCY S_IMPEURO
|
||||
BEGIN
|
||||
PROMPT 2 3 "Imp. in Euro "
|
||||
END
|
||||
|
||||
CURRENCY S_IMPFRANCO
|
||||
BEGIN
|
||||
PROMPT 36 3 "Imp. in Franchi "
|
||||
DRIVENBY -F_CODVAL
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 2 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Elimina"
|
||||
PICTURE BMP_DELREC
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 2 2
|
||||
BEGIN
|
||||
PROMPT 3 1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user