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:
luca83 2010-10-12 15:56:08 +00:00
parent 4ed4a7208b
commit add91848df
6 changed files with 429 additions and 0 deletions

View File

@ -41,6 +41,9 @@ Importazione di movimenti in Analitica (Habilita)
Ribaltamento ricorsivo movimenti di Analitica (Habilita) Ribaltamento ricorsivo movimenti di Analitica (Habilita)
Quadratore dei movimenti di Analitica (Habilita) Quadratore dei movimenti di Analitica (Habilita)
PD6411
Gestione Listini per Gruppo Merceologico (Haba)
- PG ------------------------------------------------------------------------------------------------------------- - PG -------------------------------------------------------------------------------------------------------------
PG0001 PG0001

14
ps/pd6411.cpp Executable file
View 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
View File

@ -0,0 +1 @@
int pd6411100(int argc, char* argv[]);

241
ps/pd6411100.cpp Executable file
View 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
View 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
View 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