Patch level : xx.282
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 01.05 patch 282 git-svn-id: svn://10.65.10.50/trunk@8080 c028cbd2-c16b-5b4b-a496-9718f37d4682
BIN
mr/check.bmp
Executable file
After Width: | Height: | Size: 694 B |
BIN
mr/darrowd.bmp
Executable file
After Width: | Height: | Size: 246 B |
BIN
mr/darrowd2.bmp
Executable file
After Width: | Height: | Size: 246 B |
BIN
mr/darrowdl.bmp
Executable file
After Width: | Height: | Size: 246 B |
BIN
mr/darrowdr.bmp
Executable file
After Width: | Height: | Size: 246 B |
BIN
mr/darrowl.bmp
Executable file
After Width: | Height: | Size: 246 B |
BIN
mr/darrowl2.bmp
Executable file
After Width: | Height: | Size: 246 B |
BIN
mr/darrowr.bmp
Executable file
After Width: | Height: | Size: 246 B |
BIN
mr/darrowr2.bmp
Executable file
After Width: | Height: | Size: 246 B |
BIN
mr/darrowu.bmp
Executable file
After Width: | Height: | Size: 246 B |
BIN
mr/darrowu2.bmp
Executable file
After Width: | Height: | Size: 246 B |
BIN
mr/darrowul.bmp
Executable file
After Width: | Height: | Size: 246 B |
BIN
mr/darrowur.bmp
Executable file
After Width: | Height: | Size: 246 B |
@ -1,3 +1,5 @@
|
|||||||
|
#define APPNAME eurocamp
|
||||||
|
#define QAPPNAME "eurocampo"
|
||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
|
||||||
/* mr0 -0 Gestione tabelle */
|
/* mr0 -0 Gestione tabelle */
|
||||||
|
BIN
mr/mr01.bmp
Executable file
After Width: | Height: | Size: 94 KiB |
140
mr/mr0100.cpp
@ -17,15 +17,13 @@ TTable_application& app() { return (TTable_application&)main_app(); }
|
|||||||
|
|
||||||
class TMRP_mask : public TCalendar_mask
|
class TMRP_mask : public TCalendar_mask
|
||||||
{
|
{
|
||||||
TMRP_calendar* _calendar;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
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);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool init_calendar();
|
bool init_calendar();
|
||||||
bool save_calendar() const;
|
bool save_calendar() const;
|
||||||
bool remove_calendar() const;
|
bool remove_calendar();
|
||||||
|
|
||||||
TMRP_mask(const char* name, int num = 0);
|
TMRP_mask(const char* name, int num = 0);
|
||||||
virtual ~TMRP_mask();
|
virtual ~TMRP_mask();
|
||||||
@ -52,36 +50,28 @@ bool TMRP_mask::init_calendar()
|
|||||||
|
|
||||||
TCalendar_field& cf = (TCalendar_field&)field(F_CALENDAR);
|
TCalendar_field& cf = (TCalendar_field&)field(F_CALENDAR);
|
||||||
|
|
||||||
if (_calendar == NULL)
|
if (calendar().linea() != lin || calendar().impianto() != imp)
|
||||||
{
|
|
||||||
_calendar = new TMRP_calendar(lin, imp);
|
|
||||||
changed = TRUE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (_calendar->linea() != lin || _calendar->impianto() != imp)
|
|
||||||
{
|
{
|
||||||
if (cf.dirty())
|
if (cf.dirty())
|
||||||
{
|
{
|
||||||
TString str(80);
|
TString str(80);
|
||||||
str = "Il calendario ";
|
str = "Il calendario ";
|
||||||
switch (_calendar->tipo())
|
switch (calendar().tipo())
|
||||||
{
|
{
|
||||||
case 'L': str << "della linea " << _calendar->linea(); break;
|
case 'L': str << "della linea " << calendar().linea(); break;
|
||||||
case 'I': str << "del impianto " << _calendar->impianto(); break;
|
case 'I': str << "del impianto " << calendar().impianto(); break;
|
||||||
default : str << "standard"; break;
|
default : str << "standard"; break;
|
||||||
}
|
}
|
||||||
str << " e' stato modificato:\nsi desidera salvare le modifiche effettuate?";
|
str << " e' stato modificato:\nsi desidera salvare le modifiche effettuate?";
|
||||||
if (yesno_box(str))
|
if (yesno_box(str))
|
||||||
_calendar->rewrite();
|
calendar().rewrite();
|
||||||
}
|
}
|
||||||
|
|
||||||
_calendar->set(lin, imp);
|
calendar().set(lin, imp);
|
||||||
cf.set_dirty(FALSE);
|
cf.set_dirty(FALSE);
|
||||||
changed = TRUE;
|
changed = TRUE;
|
||||||
}
|
}
|
||||||
}
|
cf.set_calendar(&calendar(), get_int(F_YEAR));
|
||||||
cf.set_calendar(_calendar, get_int(F_YEAR));
|
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,31 +83,16 @@ bool TMRP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
case F_IMPIANTO:
|
case F_IMPIANTO:
|
||||||
if (e == fe_close && o.empty())
|
break;
|
||||||
{
|
|
||||||
TConfig ini(CONFIG_DITTA, "mr");
|
|
||||||
bool gestione_impianti = ini.get_bool("GESTIMPIANTI");
|
|
||||||
if (gestione_impianti)
|
|
||||||
return error_box("E' necessario specificare un impianto");
|
|
||||||
}
|
|
||||||
case F_CODICE:
|
case F_CODICE:
|
||||||
case F_TYPE:
|
case F_TYPE:
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
{
|
init_calendar();
|
||||||
if (init_calendar())
|
|
||||||
{
|
|
||||||
TCalendar_field& cf = (TCalendar_field&)field(F_CALENDAR);
|
|
||||||
cf.win().force_update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case F_YEAR:
|
case F_YEAR:
|
||||||
if (e == fe_init || e == fe_modify)
|
if (e == fe_init || e == fe_modify)
|
||||||
{
|
{
|
||||||
TCalendar_field& cf = (TCalendar_field&)field(F_CALENDAR);
|
update_calendar(F_CALENDAR, F_YEAR);
|
||||||
cf.set_calendar(_calendar, get_int(F_YEAR));
|
|
||||||
if (is_running())
|
|
||||||
cf.win().force_update();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -129,43 +104,46 @@ bool TMRP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
|
|
||||||
bool TMRP_mask::save_calendar() const
|
bool TMRP_mask::save_calendar() const
|
||||||
{
|
{
|
||||||
if (_calendar != NULL)
|
|
||||||
{
|
|
||||||
TCalendar_field& cf = (TCalendar_field&)field(F_CALENDAR);
|
TCalendar_field& cf = (TCalendar_field&)field(F_CALENDAR);
|
||||||
if (cf.dirty())
|
if (cf.dirty())
|
||||||
_calendar->rewrite();
|
calendar().rewrite();
|
||||||
}
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TMRP_mask::remove_calendar() const
|
bool TMRP_mask::remove_calendar()
|
||||||
{
|
{
|
||||||
if (_calendar != NULL)
|
|
||||||
{
|
|
||||||
const TString& tn = app().get_tabname();
|
const TString& tn = app().get_tabname();
|
||||||
const char tipo = tn[0];
|
const char tipo = tn[0];
|
||||||
if (_calendar->tipo() != tipo)
|
if (calendar().tipo() != tipo)
|
||||||
{
|
{
|
||||||
if (tipo == 'L')
|
if (tipo == 'L')
|
||||||
_calendar->set(get(F_CODICE), get(F_IMPIANTO));
|
calendar().set(get(F_CODICE), get(F_IMPIANTO));
|
||||||
else
|
else
|
||||||
_calendar->set(NULL, get(F_CODICE));
|
calendar().set(NULL, get(F_CODICE));
|
||||||
CHECK(_calendar->tipo() == tipo, "Tipo calendario incongruente");
|
CHECK(calendar().tipo() == tipo, "Tipo calendario incongruente");
|
||||||
}
|
|
||||||
_calendar->remove();
|
|
||||||
}
|
}
|
||||||
|
calendar().remove();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
TMRP_mask::TMRP_mask(const char* name, int num)
|
TMRP_mask::TMRP_mask(const char* name, int num)
|
||||||
: TCalendar_mask(name, num), _calendar(NULL)
|
: TCalendar_mask(name, num)
|
||||||
{
|
{
|
||||||
|
const TString& tn = app().get_tabname();
|
||||||
|
if (tn == "LNP")
|
||||||
|
{
|
||||||
|
TConfig ini(CONFIG_DITTA, "mr");
|
||||||
|
bool gestione_impianti = ini.get_bool("GESTIMPIANTI");
|
||||||
|
if (!gestione_impianti)
|
||||||
|
{
|
||||||
|
disable(F_IMPIANTO);
|
||||||
|
disable(F_DESCIMPIANTO);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TMRP_mask::~TMRP_mask()
|
TMRP_mask::~TMRP_mask()
|
||||||
{
|
{
|
||||||
if (_calendar)
|
|
||||||
delete _calendar;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -174,10 +152,13 @@ TMRP_mask::~TMRP_mask()
|
|||||||
|
|
||||||
class TMRPtables : public TTable_application
|
class TMRPtables : public TTable_application
|
||||||
{
|
{
|
||||||
|
void read_turni(TMask& m);
|
||||||
|
void write_turni(const TMask& m);
|
||||||
protected:
|
protected:
|
||||||
virtual TString& get_mask_name(TString& name) const;
|
virtual TString& get_mask_name(TString& name) const;
|
||||||
virtual TMask* set_mask(TMask* m);
|
virtual TMask* set_mask(TMask* m);
|
||||||
|
|
||||||
|
virtual int read(TMask& m);
|
||||||
virtual int write(const TMask& m);
|
virtual int write(const TMask& m);
|
||||||
virtual int rewrite(const TMask& m);
|
virtual int rewrite(const TMask& m);
|
||||||
virtual bool remove();
|
virtual bool remove();
|
||||||
@ -198,8 +179,12 @@ TMask* TMRPtables::set_mask(TMask* m)
|
|||||||
{
|
{
|
||||||
if (m == NULL)
|
if (m == NULL)
|
||||||
{
|
{
|
||||||
|
const TString& tn = get_tabname();
|
||||||
TString name; get_mask_name(name);
|
TString name; get_mask_name(name);
|
||||||
|
if (tn == "IMP" || tn == "LNP")
|
||||||
m = new TMRP_mask(name);
|
m = new TMRP_mask(name);
|
||||||
|
else
|
||||||
|
m = new TMask(name);
|
||||||
}
|
}
|
||||||
return TTable_application::set_mask(m);
|
return TTable_application::set_mask(m);
|
||||||
}
|
}
|
||||||
@ -219,14 +204,58 @@ void TMRPtables::remove_calendar(const TMask& m)
|
|||||||
const TString& tn = get_tabname();
|
const TString& tn = get_tabname();
|
||||||
if (tn == "IMP" || tn == "LNP")
|
if (tn == "IMP" || tn == "LNP")
|
||||||
{
|
{
|
||||||
const TMRP_mask& cm = (const TMRP_mask&)m;
|
TMRP_mask& cm = (TMRP_mask&)m;
|
||||||
cm.remove_calendar();
|
cm.remove_calendar();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TMRPtables::read_turni(TMask& m)
|
||||||
|
{
|
||||||
|
TUnita_produttiva up(file().curr());
|
||||||
|
for (int t=7; t >=0; t--)
|
||||||
|
{
|
||||||
|
const id= F_T1HINIZIO+t*5;
|
||||||
|
m.set(id,up.ora_inizio_turno(t));
|
||||||
|
m.set(id+1,up.min_inizio_turno(t));
|
||||||
|
m.set(id+2,up.ore_durata_turno(t));
|
||||||
|
m.set(id+3,up.min_durata_turno(t));
|
||||||
|
m.set(id+4,up.raw_numpers_turno(t));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void TMRPtables::write_turni(const TMask& m)
|
||||||
|
{
|
||||||
|
TUnita_produttiva & up=(TUnita_produttiva &)file().curr();
|
||||||
|
for (int t=0; t < 8; t++)
|
||||||
|
{
|
||||||
|
const id= F_T1HINIZIO+t*5;
|
||||||
|
up.set_inizio_turno(t, m.get_int(id), m.get_int(id+1));
|
||||||
|
up.set_durata_turno(t, m.get_int(id+2), m.get_int(id+3));
|
||||||
|
up.set_numpers_turno(t, m.get_int(id+4));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMRPtables::read(TMask& m)
|
||||||
|
{
|
||||||
|
const int err = TTable_application::read(m);
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
const TString& tn = get_tabname();
|
||||||
|
if (tn == "IMP"||tn == "LNP" )
|
||||||
|
{
|
||||||
|
read_turni(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
int TMRPtables::write(const TMask& m)
|
int TMRPtables::write(const TMask& m)
|
||||||
{
|
{
|
||||||
|
const TString& tn = get_tabname();
|
||||||
|
if (tn == "IMP"||tn == "LNP" )
|
||||||
|
{
|
||||||
|
write_turni(m);
|
||||||
|
}
|
||||||
const int err = TTable_application::write(m);
|
const int err = TTable_application::write(m);
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
save_calendar(m);
|
save_calendar(m);
|
||||||
@ -235,6 +264,11 @@ int TMRPtables::write(const TMask& m)
|
|||||||
|
|
||||||
int TMRPtables::rewrite(const TMask& m)
|
int TMRPtables::rewrite(const TMask& m)
|
||||||
{
|
{
|
||||||
|
const TString& tn = get_tabname();
|
||||||
|
if (tn == "IMP"||tn == "LNP" )
|
||||||
|
{
|
||||||
|
write_turni(m);
|
||||||
|
}
|
||||||
const int err = TTable_application::rewrite(m);
|
const int err = TTable_application::rewrite(m);
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
save_calendar(m);
|
save_calendar(m);
|
||||||
|
@ -21,6 +21,15 @@ public:
|
|||||||
|
|
||||||
bool TConf_MRP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TConf_MRP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F_YEAR:
|
||||||
|
if (e == fe_init || e == fe_modify)
|
||||||
|
update_calendar(F_CALENDAR, F_YEAR);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,7 +48,6 @@ TConf_MRP_mask::~TConf_MRP_mask()
|
|||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
class TConf_MRP_application : public TConfig_application
|
class TConf_MRP_application : public TConfig_application
|
||||||
{
|
{
|
||||||
TMRP_calendar* _calendar;
|
|
||||||
TConf_MRP_mask *_mask;
|
TConf_MRP_mask *_mask;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -53,71 +61,62 @@ public:
|
|||||||
virtual bool user_create();
|
virtual bool user_create();
|
||||||
virtual bool user_destroy();
|
virtual bool user_destroy();
|
||||||
|
|
||||||
TConf_MRP_application() : TConfig_application(CONFIG_DITTA) { _mask = NULL; _calendar = NULL;}
|
TConf_MRP_application() : TConfig_application(CONFIG_DITTA) { _mask = NULL;}
|
||||||
virtual ~TConf_MRP_application() {}
|
virtual ~TConf_MRP_application() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
bool TConf_MRP_application::preprocess_config (TMask& mask, TConfig& config)
|
bool TConf_MRP_application::preprocess_config (TMask& mask, TConfig& c)
|
||||||
{
|
{
|
||||||
TToken_string ora_inizio("",':');
|
TMRP_config& config=(TMRP_config&)c;
|
||||||
|
|
||||||
for (int i = 0; i < NTURNI; i++)
|
for (int i = 0; i < NTURNI; i++)
|
||||||
{
|
{
|
||||||
// Traduce le ore ed i minuti
|
|
||||||
const short h = F_T1HINIZIO+(i*4);
|
const short h = F_T1HINIZIO+(i*4);
|
||||||
ora_inizio = config.get("TINIZIO","mr", i);
|
// inizio turno
|
||||||
mask.set(h,ora_inizio.get(0)); // Hour...
|
mask.set(h , config.ora_inizio_turno(i)); // Hour...
|
||||||
mask.set(h+1,ora_inizio.get(1)); // Minutes...
|
mask.set(h+1, config.min_inizio_turno(i)); // Minutes...
|
||||||
const long tdurata = config.get_long("TDURATA", "mr", i);
|
// durata turno
|
||||||
const int hours = (int)tdurata / 60; // numero di ore
|
mask.set(h+2, config.ore_durata_turno(i));
|
||||||
const int minutes = (int)tdurata % 60; // numero di minuti
|
mask.set(h+3, config.min_durata_turno(i));
|
||||||
mask.set(h+2, hours);
|
mask.set(F_T1NUMPERS+i,config.numpers_turno(i));
|
||||||
mask.set(h+3, minutes);
|
|
||||||
}
|
}
|
||||||
// Carica il calendario
|
// Carica il calendario
|
||||||
TCalendar_field& cf = (TCalendar_field&)mask.field(F_CALENDAR);
|
((TCalendar_mask&)mask).update_calendar(F_CALENDAR, F_YEAR);
|
||||||
cf.set_calendar(_calendar, mask.get_int(F_YEAR));
|
|
||||||
cf.win().force_update();
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TConf_MRP_application::postprocess_config (TMask& mask, TConfig& config)
|
bool TConf_MRP_application::postprocess_config (TMask& mask, TConfig& c)
|
||||||
{
|
{
|
||||||
TToken_string ora_inizio("",':');
|
TMRP_config& config=(TMRP_config&)c;
|
||||||
for (int i = 0; i < NTURNI; i++)
|
for (int i = 0; i < NTURNI; i++)
|
||||||
{
|
{
|
||||||
// Traduce le ore ed i minuti
|
// Traduce le ore ed i minuti
|
||||||
const short h = F_T1HINIZIO+(i*4);
|
const short h = F_T1HINIZIO+(i*4);
|
||||||
ora_inizio.add(mask.get(h),0); // Hour...
|
config.set_inizio_turno(i,mask.get_int(h) ,mask.get_int(h+1));
|
||||||
ora_inizio.add(mask.get(h+1),1); // Minutes
|
config.set_durata_turno(i,mask.get_int(h+2),mask.get_int(h+3));
|
||||||
config.set("TINIZIO",ora_inizio,"mr", TRUE, i);
|
// numero di persone
|
||||||
const int durata_h = mask.get_int(h+2);
|
config.set_numpers_turno(i,mask.get_int(F_T1NUMPERS+i));
|
||||||
const int durata_m = mask.get_int(h+3);
|
|
||||||
const long minutes = durata_h * 60 + durata_m;
|
|
||||||
config.set("TDURATA", minutes, "mr", TRUE, i);
|
|
||||||
}
|
}
|
||||||
config.set("GESTIMPIANTI", mask.get_bool(F_GESTIMPIANTI) ? "X" : "", "mr", TRUE);
|
config.set_gestimpianti(mask.get_bool(F_GESTIMPIANTI));
|
||||||
config.set("NTURNI", mask.get(F_NTURNI), "mr", TRUE);
|
config.set_turni(mask.get_int(F_NTURNI));
|
||||||
|
|
||||||
TString paragraph(config.get_paragraph());
|
TString paragraph(config.get_paragraph());
|
||||||
config.set_paragraph(""); // Akkrokkio per salvare il calendario...
|
config.set_paragraph(""); // Akkrokkio per salvare il calendario...
|
||||||
_calendar->write();
|
((const TCalendar_mask&)mask).calendar().write();
|
||||||
config.set_paragraph(paragraph); // re-read
|
config.set_paragraph(paragraph); // re-read
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TConf_MRP_application::user_create()
|
bool TConf_MRP_application::user_create()
|
||||||
{
|
{
|
||||||
TConfig conf(CONFIG_DITTA);
|
TConfig conf(CONFIG_DITTA);
|
||||||
conf.set( "EdMask", "mr0400a", "mr");
|
conf.set( "EdMask", "mr0400a", "mr");
|
||||||
_calendar = new TMRP_calendar(); // Calendario standard
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TConf_MRP_application::user_destroy()
|
bool TConf_MRP_application::user_destroy()
|
||||||
{
|
{
|
||||||
if (_calendar)
|
|
||||||
delete _calendar;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
11
mr/mr0400.h
@ -35,10 +35,19 @@
|
|||||||
#define F_T8MINIZIO 132
|
#define F_T8MINIZIO 132
|
||||||
#define F_T8HDURATA 133
|
#define F_T8HDURATA 133
|
||||||
#define F_T8MDURATA 134
|
#define F_T8MDURATA 134
|
||||||
|
#define F_T1NUMPERS 135
|
||||||
|
#define F_T2NUMPERS 136
|
||||||
|
#define F_T3NUMPERS 137
|
||||||
|
#define F_T4NUMPERS 138
|
||||||
|
#define F_T5NUMPERS 139
|
||||||
|
#define F_T6NUMPERS 140
|
||||||
|
#define F_T7NUMPERS 141
|
||||||
|
#define F_T8NUMPERS 142
|
||||||
|
|
||||||
#define F_YEAR 201
|
#define F_YEAR 201
|
||||||
#define F_CALENDAR 202
|
#define F_CALENDAR 202
|
||||||
|
#define F_DEFAULT_IMP 203
|
||||||
|
#define F_DEFAULT_LNP 204
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
112
mr/mr0400a.uml
@ -18,10 +18,37 @@ PAGE "Parametri ditta" -1 -1 65 15
|
|||||||
|
|
||||||
BOOLEAN F_GESTIMPIANTI
|
BOOLEAN F_GESTIMPIANTI
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Gestione impianti "
|
PROMPT 2 1 "Gestione impianti "
|
||||||
FIELD GESTIMPIANTI
|
FIELD GESTIMPIANTI
|
||||||
|
MESSAGE TRUE SHOW,F_DEFAULT_IMP
|
||||||
|
MESSAGE FALSE HIDE,F_DEFAULT_IMP
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_DEFAULT_LNP 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Linea di default "
|
||||||
|
FIELD DEFAULT_CODLIN
|
||||||
|
USE LNP
|
||||||
|
INPUT CODTAB F_DEFAULT_LNP
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_DEFAULT_LNP CODTAB
|
||||||
|
OUTPUT F_DEFAULT_IMP S6
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DEFAULT_IMP 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 42 2 "Impianto di default "
|
||||||
|
FIELD DEFAULT_CODIMP
|
||||||
|
USE IMP
|
||||||
|
INPUT CODTAB F_DEFAULT_IMP
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_DEFAULT_IMP CODTAB
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LISTBOX F_NTURNI 3
|
LISTBOX F_NTURNI 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Numero turni "
|
PROMPT 2 4 "Numero turni "
|
||||||
@ -50,11 +77,12 @@ BEGIN
|
|||||||
NUM_EXPR {(#THIS_FIELD <= 23)}
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_T1MINIZIO 2
|
NUMBER F_T1MINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 5 ""
|
PROMPT 30 5 ":"
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
@ -66,16 +94,22 @@ BEGIN
|
|||||||
NUM_EXPR {(#THIS_FIELD <= 23)}
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_T1MDURATA 2
|
NUMBER F_T1MDURATA 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 47 5 ""
|
PROMPT 47 5 ":"
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_T1NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 52 5 "Persone impiegate "
|
||||||
|
END
|
||||||
|
|
||||||
NUMBER F_T2HINIZIO 2
|
NUMBER F_T2HINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 "Ora inizio secondo turno "
|
PROMPT 2 6 "Ora inizio secondo turno "
|
||||||
@ -87,7 +121,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_T2MINIZIO 2
|
NUMBER F_T2MINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 6 ""
|
PROMPT 30 6 ":"
|
||||||
GROUP 2 12 13 14 15 16 17 18 28
|
GROUP 2 12 13 14 15 16 17 18 28
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
@ -105,13 +139,19 @@ END
|
|||||||
|
|
||||||
NUMBER F_T2MDURATA 2
|
NUMBER F_T2MDURATA 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 47 6 ""
|
PROMPT 47 6 ":"
|
||||||
GROUP 2 12 13 14 15 16 17 18 28
|
GROUP 2 12 13 14 15 16 17 18 28
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_T2NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 52 6 "Persone impiegate "
|
||||||
|
GROUP 2 12 13 14 15 16 17 18 28
|
||||||
|
END
|
||||||
|
|
||||||
NUMBER F_T3HINIZIO 2
|
NUMBER F_T3HINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "Ora inizio terzo turno "
|
PROMPT 2 7 "Ora inizio terzo turno "
|
||||||
@ -123,7 +163,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_T3MINIZIO 2
|
NUMBER F_T3MINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 7 ""
|
PROMPT 30 7 ":"
|
||||||
GROUP 3 13 14 15 16 17 18 28 38
|
GROUP 3 13 14 15 16 17 18 28 38
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
@ -141,13 +181,19 @@ END
|
|||||||
|
|
||||||
NUMBER F_T3MDURATA 2
|
NUMBER F_T3MDURATA 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 47 7 ""
|
PROMPT 47 7 ":"
|
||||||
GROUP 3 13 14 15 16 17 18 28 38
|
GROUP 3 13 14 15 16 17 18 28 38
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_T3NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 52 7 "Persone impiegate "
|
||||||
|
GROUP 3 13 14 15 16 17 18 28 38
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
NUMBER F_T4HINIZIO 2
|
NUMBER F_T4HINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -160,7 +206,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_T4MINIZIO 2
|
NUMBER F_T4MINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 8 ""
|
PROMPT 30 8 ":"
|
||||||
GROUP 4 14 15 16 17 18 28 38 48
|
GROUP 4 14 15 16 17 18 28 38 48
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
@ -178,13 +224,19 @@ END
|
|||||||
|
|
||||||
NUMBER F_T4MDURATA 2
|
NUMBER F_T4MDURATA 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 47 8 ""
|
PROMPT 47 8 ":"
|
||||||
GROUP 4 14 15 16 17 18 28 38 48
|
GROUP 4 14 15 16 17 18 28 38 48
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_T4NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 52 8 "Persone impiegate "
|
||||||
|
GROUP 4 14 15 16 17 18 28 38 48
|
||||||
|
END
|
||||||
|
|
||||||
NUMBER F_T5HINIZIO 2
|
NUMBER F_T5HINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 9 "Ora inizio quinto turno "
|
PROMPT 2 9 "Ora inizio quinto turno "
|
||||||
@ -196,7 +248,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_T5MINIZIO 2
|
NUMBER F_T5MINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 9 ""
|
PROMPT 30 9 ":"
|
||||||
GROUP 5 15 16 17 18 28 38 48 58
|
GROUP 5 15 16 17 18 28 38 48 58
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
@ -214,13 +266,19 @@ END
|
|||||||
|
|
||||||
NUMBER F_T5MDURATA 2
|
NUMBER F_T5MDURATA 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 47 9 ""
|
PROMPT 47 9 ":"
|
||||||
GROUP 5 15 16 17 18 28 38 48 58
|
GROUP 5 15 16 17 18 28 38 48 58
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_T5NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 52 9 "Persone impiegate "
|
||||||
|
GROUP 5 15 16 17 18 28 38 48 58
|
||||||
|
END
|
||||||
|
|
||||||
NUMBER F_T6HINIZIO 2
|
NUMBER F_T6HINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 "Ora inizio sesto turno "
|
PROMPT 2 10 "Ora inizio sesto turno "
|
||||||
@ -232,7 +290,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_T6MINIZIO 2
|
NUMBER F_T6MINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 10 ""
|
PROMPT 30 10 ":"
|
||||||
GROUP 6 16 17 18 28 38 48 58 68
|
GROUP 6 16 17 18 28 38 48 58 68
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
@ -250,13 +308,19 @@ END
|
|||||||
|
|
||||||
NUMBER F_T6MDURATA 2
|
NUMBER F_T6MDURATA 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 47 10 ""
|
PROMPT 47 10 ":"
|
||||||
GROUP 6 16 17 18 28 38 48 58 68
|
GROUP 6 16 17 18 28 38 48 58 68
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_T6NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 52 10 "Persone impiegate "
|
||||||
|
GROUP 6 16 17 18 28 38 48 58 68
|
||||||
|
END
|
||||||
|
|
||||||
NUMBER F_T7HINIZIO 2
|
NUMBER F_T7HINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 11 "Ora inizio settimo turno "
|
PROMPT 2 11 "Ora inizio settimo turno "
|
||||||
@ -268,7 +332,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_T7MINIZIO 2
|
NUMBER F_T7MINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 11 ""
|
PROMPT 30 11 ":"
|
||||||
GROUP 7 17 18 28 38 48 58 68 78
|
GROUP 7 17 18 28 38 48 58 68 78
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
@ -286,13 +350,18 @@ END
|
|||||||
|
|
||||||
NUMBER F_T7MDURATA 2
|
NUMBER F_T7MDURATA 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 47 11 ""
|
PROMPT 47 11 ":"
|
||||||
GROUP 7 17 18 28 38 48 58 68 78
|
GROUP 7 17 18 28 38 48 58 68 78
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_T7NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 52 11 "Persone impiegate "
|
||||||
|
GROUP 7 17 18 28 38 48 58 68 78
|
||||||
|
END
|
||||||
|
|
||||||
NUMBER F_T8HINIZIO 2
|
NUMBER F_T8HINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -305,7 +374,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_T8MINIZIO 2
|
NUMBER F_T8MINIZIO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 12 ""
|
PROMPT 30 12 ":"
|
||||||
GROUP 8 18 28 38 48 58 68 78
|
GROUP 8 18 28 38 48 58 68 78
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
@ -323,13 +392,20 @@ END
|
|||||||
|
|
||||||
NUMBER F_T8MDURATA 2
|
NUMBER F_T8MDURATA 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 47 12 ""
|
PROMPT 47 12 ":"
|
||||||
GROUP 8 18 28 38 48 58 68 78
|
GROUP 8 18 28 38 48 58 68 78
|
||||||
NUM_EXPR {(#THIS_FIELD <= 59)}
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
WARNING "Ora non valida"
|
WARNING "Ora non valida"
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_T8NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 52 12 "Persone impiegate "
|
||||||
|
GROUP 8 18 28 38 48 58 68 78
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Calendario" -1 -1 65 15
|
PAGE "Calendario" -1 -1 65 15
|
||||||
@ -337,7 +413,7 @@ PAGE "Calendario" -1 -1 65 15
|
|||||||
NUMBER F_YEAR 4
|
NUMBER F_YEAR 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Anno "
|
PROMPT 1 1 "Anno "
|
||||||
FLAGS "AD"
|
FLAGS "A"
|
||||||
END
|
END
|
||||||
|
|
||||||
CALENDAR F_CALENDAR -3 -1
|
CALENDAR F_CALENDAR -3 -1
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#define APPNAME EURO_MR
|
#define APPNAME eurocamp
|
||||||
#define QAPPNAME "EURO_MR"
|
#define QAPPNAME "eurocampo"
|
||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
|
||||||
/* mr1 -0 Generazione MRP Reports */
|
/* mr1 -0 Generazione MRP Reports */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#define APPNAME EURO_MR
|
#define APPNAME eurocamp
|
||||||
#define QAPPNAME "EURO_MR"
|
#define QAPPNAME "eurocamp"
|
||||||
#include <default.url>
|
#include <default.url>
|
||||||
#include "mr2url.h"
|
#include "mr2url.h"
|
||||||
|
|
||||||
|
673
mr/mr2200.cpp
@ -94,6 +94,7 @@
|
|||||||
// sheet articoli
|
// sheet articoli
|
||||||
#define LAST_BUCKET 13
|
#define LAST_BUCKET 13
|
||||||
|
|
||||||
|
#define F_CHECKLINE 100
|
||||||
#define F_TIPOCF_SHEET 101
|
#define F_TIPOCF_SHEET 101
|
||||||
#define F_CLIENTE 102
|
#define F_CLIENTE 102
|
||||||
#define F_ARTICOLO 103
|
#define F_ARTICOLO 103
|
||||||
|
@ -364,7 +364,7 @@ END
|
|||||||
|
|
||||||
BOOL F_MSP_SORT_ORDER
|
BOOL F_MSP_SORT_ORDER
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Inverti l'ordine"
|
PROMPT 2 3 "Ordine inverso"
|
||||||
MESSAGE TRUE PUSH, F_MSP_SORT
|
MESSAGE TRUE PUSH, F_MSP_SORT
|
||||||
MESSAGE FALSE PUSH, F_MSP_SORT
|
MESSAGE FALSE PUSH, F_MSP_SORT
|
||||||
END
|
END
|
||||||
@ -395,13 +395,13 @@ BEGIN
|
|||||||
PROMPT 42 1 "Logica di proposta:"
|
PROMPT 42 1 "Logica di proposta:"
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_RECALC_TYPE2 35
|
LIST F_RECALC_TYPE2 34
|
||||||
BEGIN
|
BEGIN
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
PROMPT 42 2 ""
|
PROMPT 42 2 ""
|
||||||
ITEM "1|FirstFit "
|
ITEM "1|FirstFit "
|
||||||
ITEM "1_INF|FirstFit (capacita' infinite) "
|
ITEM "1_INF|FirstFit (capacita' infinite) "
|
||||||
ITEM "1_INFH|FirstFit (capacita' umane infinite)"
|
ITEM "1_INFH|FirstFit (capacita' umane infin.) "
|
||||||
ITEM "JIT|JustInTime "
|
ITEM "JIT|JustInTime "
|
||||||
ITEM "JIT_INF|JustInTime (capacita' infinite)"
|
ITEM "JIT_INF|JustInTime (capacita' infinite)"
|
||||||
ITEM "JIT_INFH|JustInTime (capacita umane infin.)"
|
ITEM "JIT_INFH|JustInTime (capacita umane infin.)"
|
||||||
@ -990,6 +990,7 @@ ENDMASK
|
|||||||
|
|
||||||
PAGE "Articoli" -1 -1 80 18
|
PAGE "Articoli" -1 -1 80 18
|
||||||
|
|
||||||
|
|
||||||
LIST F_TIPOCF_SHEET 9
|
LIST F_TIPOCF_SHEET 9
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 ""
|
PROMPT 1 0 ""
|
||||||
@ -1405,7 +1406,7 @@ END
|
|||||||
|
|
||||||
STRING F_MASTERCODE 1
|
STRING F_MASTERCODE 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 22 15 ""
|
PROMPT 42 15 "MasterCode"
|
||||||
FLAGS "H"
|
FLAGS "H"
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -1424,12 +1425,19 @@ END*/
|
|||||||
|
|
||||||
BUTTON DLG_OK 10 2
|
BUTTON DLG_OK 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -12 -1 ""
|
PROMPT -13 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON F_CHECKLINE 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -23 -1 ""
|
||||||
|
PICTURE USER_BMP_CHECK
|
||||||
|
PICTURE BMP_LENTE
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 10 2
|
BUTTON DLG_CANCEL 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -22 -1 ""
|
PROMPT -33 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
#define G_ARTICOLI 10
|
||||||
|
#define G_VINCOLI 20
|
||||||
|
#define G_MOVIMENTO 30
|
||||||
|
|
||||||
#define FC_RIGA 101
|
#define FC_RIGA 101
|
||||||
#define FC_BUCKET 102
|
#define FC_BUCKET 102
|
||||||
#define FC_CODART 103
|
#define FC_CODART 103
|
||||||
@ -17,6 +21,7 @@
|
|||||||
#define FC_MOVEFILTER 116
|
#define FC_MOVEFILTER 116
|
||||||
#define FC_FINDFILTER 117
|
#define FC_FINDFILTER 117
|
||||||
#define FC_MAXBUCK2CHECK 118
|
#define FC_MAXBUCK2CHECK 118
|
||||||
|
#define FC_ARTICLE2FIND 119
|
||||||
|
|
||||||
// MSP check mask
|
// MSP check mask
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
#include "mr2200b.h"
|
#include "mr2200b.h"
|
||||||
#include "mr2url.h"
|
#include "mr2url.h"
|
||||||
#define G_ARTICOLI 10
|
|
||||||
#define G_VINCOLI 20
|
|
||||||
PAGE "Controllo planning" -1 -1 76 20
|
PAGE "Controllo planning" -1 -1 76 20
|
||||||
|
|
||||||
|
|
||||||
@ -214,14 +212,25 @@ LIST FC_FINDFILTER 28
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 13 ""
|
PROMPT 30 13 ""
|
||||||
ITEM "8|Sotto stock"
|
ITEM "8|Sotto stock"
|
||||||
|
MESSAGE HIDE,FC_ARTICLE2FIND|SHOW,FC_MAXBUCK2CHECK
|
||||||
ITEM "12|Anomalie"
|
ITEM "12|Anomalie"
|
||||||
|
MESSAGE HIDE,FC_ARTICLE2FIND|SHOW,FC_MAXBUCK2CHECK
|
||||||
ITEM "4|Eccessiva permanenza"
|
ITEM "4|Eccessiva permanenza"
|
||||||
|
MESSAGE HIDE,FC_ARTICLE2FIND|SHOW,FC_MAXBUCK2CHECK
|
||||||
ITEM "14|Anomalie e nuove proposte"
|
ITEM "14|Anomalie e nuove proposte"
|
||||||
|
MESSAGE HIDE,FC_ARTICLE2FIND|SHOW,FC_MAXBUCK2CHECK
|
||||||
ITEM "15|Anomalie e modifiche"
|
ITEM "15|Anomalie e modifiche"
|
||||||
|
MESSAGE HIDE,FC_ARTICLE2FIND|SHOW,FC_MAXBUCK2CHECK
|
||||||
ITEM "13|Anomalie e modifiche manuali"
|
ITEM "13|Anomalie e modifiche manuali"
|
||||||
|
MESSAGE HIDE,FC_ARTICLE2FIND|SHOW,FC_MAXBUCK2CHECK
|
||||||
ITEM "2|Nuove proposte"
|
ITEM "2|Nuove proposte"
|
||||||
|
MESSAGE HIDE,FC_ARTICLE2FIND|SHOW,FC_MAXBUCK2CHECK
|
||||||
ITEM "3|Modifiche"
|
ITEM "3|Modifiche"
|
||||||
|
MESSAGE HIDE,FC_ARTICLE2FIND|SHOW,FC_MAXBUCK2CHECK
|
||||||
ITEM "1|Modifiche manuali"
|
ITEM "1|Modifiche manuali"
|
||||||
|
MESSAGE HIDE,FC_ARTICLE2FIND|SHOW,FC_MAXBUCK2CHECK
|
||||||
|
ITEM "-1|Codice articolo"
|
||||||
|
MESSAGE SHOW,FC_ARTICLE2FIND|HIDE,FC_MAXBUCK2CHECK
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER FC_MAXBUCK2CHECK 2
|
NUMBER FC_MAXBUCK2CHECK 2
|
||||||
@ -229,44 +238,62 @@ BEGIN
|
|||||||
PROMPT 62 13 "fino a "
|
PROMPT 62 13 "fino a "
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING FC_ARTICLE2FIND 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 14 "Codice "
|
||||||
|
FLAGS "U"
|
||||||
|
USE LF_ANAMAG
|
||||||
|
INPUT CODART FC_ARTICLE2FIND
|
||||||
|
DISPLAY "Codice@20" CODART
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT FC_ARTICLE2FIND CODART
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
BUTTON FC_RIGHT_BAD 4 2
|
BUTTON FC_RIGHT_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 46 16 ""
|
PROMPT 46 17 ""
|
||||||
PICTURE USER_BMP_ARROWRIGHT_RED
|
PICTURE USER_BMP_ARROWRIGHT_RED
|
||||||
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
BUTTON FC_DOWN_BAD 4 2
|
BUTTON FC_DOWN_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 18 ""
|
PROMPT 40 18 ""
|
||||||
PICTURE USER_BMP_ARROWDOWN_RED
|
PICTURE USER_BMP_ARROWDOWN_RED
|
||||||
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
BUTTON FC_LEFT_BAD 4 2
|
BUTTON FC_LEFT_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 34 16 ""
|
PROMPT 34 17 ""
|
||||||
PICTURE USER_BMP_ARROWLEFT_RED
|
PICTURE USER_BMP_ARROWLEFT_RED
|
||||||
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
BUTTON FC_UP_BAD 4 2
|
BUTTON FC_UP_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 14 ""
|
PROMPT 40 16 ""
|
||||||
PICTURE USER_BMP_ARROWUP_RED
|
PICTURE USER_BMP_ARROWUP_RED
|
||||||
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_UPLEFT 4 2
|
BUTTON FC_UPLEFT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 14 "<"
|
PROMPT 4 14 "<"
|
||||||
PICTURE USER_BMP_ARROWUPLEFT
|
PICTURE USER_BMP_ARROWUPLEFT
|
||||||
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_UP 4 2
|
BUTTON FC_UP 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 10 14 "Su'"
|
PROMPT 10 14 "Su'"
|
||||||
PICTURE USER_BMP_ARROWUP
|
PICTURE USER_BMP_ARROWUP
|
||||||
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_UPRIGHT 4 2
|
BUTTON FC_UPRIGHT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 16 14 ">"
|
PROMPT 16 14 ">"
|
||||||
PICTURE USER_BMP_ARROWUPRIGHT
|
PICTURE USER_BMP_ARROWUPRIGHT
|
||||||
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_RIGHT 4 2
|
BUTTON FC_RIGHT 4 2
|
||||||
@ -279,18 +306,21 @@ BUTTON FC_DOWNRIGHT 4 2
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 16 18 ">"
|
PROMPT 16 18 ">"
|
||||||
PICTURE USER_BMP_ARROWDOWNRIGHT
|
PICTURE USER_BMP_ARROWDOWNRIGHT
|
||||||
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_DOWN 4 2
|
BUTTON FC_DOWN 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 10 18 "Giu'"
|
PROMPT 10 18 "Giu'"
|
||||||
PICTURE USER_BMP_ARROWDOWN
|
PICTURE USER_BMP_ARROWDOWN
|
||||||
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_DOWNLEFT 4 2
|
BUTTON FC_DOWNLEFT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 18 "<"
|
PROMPT 4 18 "<"
|
||||||
PICTURE USER_BMP_ARROWDOWNLEFT
|
PICTURE USER_BMP_ARROWDOWNLEFT
|
||||||
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_LEFT 4 2
|
BUTTON FC_LEFT 4 2
|
||||||
|
861
mr/mrplib.cpp
@ -1,14 +1,207 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
#include <prefix.h>
|
||||||
|
#include <progind.h>
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
|
#include <xvtility.h>
|
||||||
|
#include <defmask.h>
|
||||||
|
#include <utility.h> // file functions
|
||||||
|
|
||||||
#include "mrplib.h"
|
#include "mrplib.h"
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TMRP_time
|
||||||
|
//////////////////////////////////////////////////////////
|
||||||
|
TAssoc_array TMRP_time::_frate_indovino;
|
||||||
|
|
||||||
|
TMRP_calendar& TMRP_time::get_calendar(const char* codimp,const char* codlin)
|
||||||
|
{
|
||||||
|
TToken_string k;
|
||||||
|
k.add(codimp);
|
||||||
|
k.add(codlin);
|
||||||
|
TMRP_calendar* cal = (TMRP_calendar*)_frate_indovino.objptr(k);
|
||||||
|
if (cal == NULL)
|
||||||
|
{
|
||||||
|
if (_frate_indovino.items() > 16)
|
||||||
|
_frate_indovino.destroy(); // troppi calendari fanno male alla salute...
|
||||||
|
|
||||||
|
cal = new TMRP_calendar(codlin, codimp);
|
||||||
|
_frate_indovino.add(k, cal);
|
||||||
|
}
|
||||||
|
return *cal;
|
||||||
|
}
|
||||||
|
|
||||||
|
TMRP_calendar& TMRP_time::calendario()
|
||||||
|
{
|
||||||
|
return TMRP_time::get_calendar(_imp, _lin);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMRP_time::compare(const TSortable& s) const
|
||||||
|
{
|
||||||
|
const TMRP_time& t = (const TMRP_time&)s;
|
||||||
|
int res;
|
||||||
|
if (_date == t._date)
|
||||||
|
res = _hour - t._hour;
|
||||||
|
else
|
||||||
|
res = _date > t._date ? +1 : -1;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
TMRP_time& TMRP_time::add_time(int days, long hours,bool macchina)
|
||||||
|
{
|
||||||
|
TMRP_calendar& cal = calendario();
|
||||||
|
if (days != 0)
|
||||||
|
{
|
||||||
|
cal.next_working_day(_date, days);
|
||||||
|
_hour = 0;
|
||||||
|
}
|
||||||
|
while (hours != 0)
|
||||||
|
{
|
||||||
|
real junk;
|
||||||
|
const int ore = macchina ? cal.add_oremacchina(junk, _date):cal.add_oreuomo(junk, _date);
|
||||||
|
const long tot = _hour + hours;
|
||||||
|
if (tot < 0 || tot > ore)
|
||||||
|
{
|
||||||
|
if (hours >= 0)
|
||||||
|
{
|
||||||
|
cal.next_working_day(_date);
|
||||||
|
hours -= ore - _hour;
|
||||||
|
_hour = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cal.prev_working_day(_date);
|
||||||
|
hours += _hour;
|
||||||
|
_hour = (macchina ? cal.add_oremacchina(junk, _date) : cal.add_oreuomo(junk,_date));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_hour = int(tot);
|
||||||
|
hours = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TMRP_time::set(const TDate& d, int h, const char* imp, const char* lin)
|
||||||
|
{
|
||||||
|
_date = d;
|
||||||
|
_hour = h;
|
||||||
|
_imp = imp;
|
||||||
|
_lin = lin;
|
||||||
|
}
|
||||||
|
|
||||||
|
TMRP_time::TMRP_time() : _hour(0)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
TMRP_time::TMRP_time(const TDate& d, int h, const char* imp, const char* lin)
|
||||||
|
: _date(d), _hour(h), _imp(imp), _lin(lin)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TMRP_array
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
TSortable* TMRP_array::add_obj(const TToken_string& key)
|
||||||
|
{
|
||||||
|
TSortable* obj = (TSortable*)_by_key.objptr(key);
|
||||||
|
if (obj == NULL)
|
||||||
|
{
|
||||||
|
obj = new_obj(key);
|
||||||
|
_by_key.add(key, obj);
|
||||||
|
_by_idx.add(obj);
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TMRP_array::add(TMRP_array &a, bool force)
|
||||||
|
{
|
||||||
|
TString_array keys;
|
||||||
|
a._by_key.get_keys(keys);
|
||||||
|
for (int o=keys.items()-1; o >= 0; o--)
|
||||||
|
{
|
||||||
|
TString & key = keys.row(o);
|
||||||
|
TSortable* obj = (TSortable*)a._by_key.objptr(key)->dup();
|
||||||
|
TSortable* oldobj = (TSortable*)_by_key.objptr(key);
|
||||||
|
if (oldobj == NULL || force)
|
||||||
|
{
|
||||||
|
_by_key.add(key, obj);
|
||||||
|
_by_idx.add(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TMRP_array & TMRP_array::operator=(const TMRP_array& a)
|
||||||
|
{
|
||||||
|
_by_key=a._by_key;
|
||||||
|
_by_idx=a._by_idx;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
TMRP_array::TMRP_array(const TMRP_array& a)
|
||||||
|
{
|
||||||
|
*this = TMRP_array::operator=(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ordina gli articoli secondo il noto algoritmo Fantini-Truffelli
|
||||||
|
// per array di oggetti su cui non e' definito un ordinamento completo
|
||||||
|
long TMRP_array::sort()
|
||||||
|
{
|
||||||
|
const long last = items()-1;
|
||||||
|
|
||||||
|
TProgind* pi = NULL;
|
||||||
|
if (last >= 16)
|
||||||
|
pi = new TProgind(last, "Ordinamento", FALSE, TRUE);
|
||||||
|
else
|
||||||
|
begin_wait();
|
||||||
|
|
||||||
|
for (long i = 0; i < last; i++)
|
||||||
|
{
|
||||||
|
if (pi) pi->addstatus(1);
|
||||||
|
TSortable* best = &find_obj(i);
|
||||||
|
bool swapped = TRUE;
|
||||||
|
while (swapped)
|
||||||
|
{
|
||||||
|
swapped = FALSE;
|
||||||
|
for (long j = i+1; j <= last; j++)
|
||||||
|
{
|
||||||
|
TSortable& other = find_obj(j);
|
||||||
|
if (other.compare(*best) > 0)
|
||||||
|
{
|
||||||
|
// swap(i, j);
|
||||||
|
// best = &other;
|
||||||
|
best = (TSortable*)_by_idx.remove(int(j), TRUE);
|
||||||
|
_by_idx.TArray::insert(best, int(i));
|
||||||
|
swapped = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pi)
|
||||||
|
delete pi;
|
||||||
|
else
|
||||||
|
end_wait();
|
||||||
|
|
||||||
|
return last+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TMRP_array::destroy()
|
||||||
|
{
|
||||||
|
_by_key.destroy();
|
||||||
|
_by_idx.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TMRP_calendar
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
TString16 TMRP_calendar::_days;
|
TString16 TMRP_calendar::_days;
|
||||||
TToken_string TMRP_calendar::_holidays;
|
TToken_string TMRP_calendar::_holidays;
|
||||||
|
|
||||||
void TMRP_calendar::init_default()
|
void TMRP_calendar::init_default()
|
||||||
{
|
{
|
||||||
TConfig cfg(CONFIG_DITTA, "mr");
|
TMRP_config cfg;
|
||||||
// Inizializza i turni dei 5 giorni feriali a 1
|
// Inizializza i turni dei 5 giorni feriali a 1
|
||||||
// Inizializza i turni di sabato e domenica a 0
|
// Inizializza i turni di sabato e domenica a 0
|
||||||
// Inizializza i turni dei giorni festivi a 0
|
// Inizializza i turni dei giorni festivi a 0
|
||||||
@ -16,6 +209,29 @@ void TMRP_calendar::init_default()
|
|||||||
// Inizializza la lista delle feste comandate tranne la Pasqua
|
// Inizializza la lista delle feste comandate tranne la Pasqua
|
||||||
_holidays = cfg.get("Feste", NULL, -1,
|
_holidays = cfg.get("Feste", NULL, -1,
|
||||||
"01-01|06-01|25-04|01-05|15-08|01-11|08-12|25-12|26-12");
|
"01-01|06-01|25-04|01-05|15-08|01-11|08-12|25-12|26-12");
|
||||||
|
TUnita_produttiva * up=NULL;
|
||||||
|
if (_codlin.not_empty())
|
||||||
|
up=new TLinea_prod(_codlin);
|
||||||
|
else if (_codimp.not_empty())
|
||||||
|
up=new TImpianto(_codimp);
|
||||||
|
|
||||||
|
for (int t = 0; t < 8; t++)
|
||||||
|
{
|
||||||
|
if (up)
|
||||||
|
{
|
||||||
|
// turni di linea
|
||||||
|
_lungturno[t] = up->durata_turno(t);
|
||||||
|
_inizturno[t] = up->inizio_turno(t);
|
||||||
|
_persturno[t] = up->numpers_turno(t);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// turni di ditta
|
||||||
|
_lungturno[t] = cfg.durata_turno(t);
|
||||||
|
_inizturno[t] = cfg.inizio_turno(t);
|
||||||
|
_persturno[t] = cfg.numpers_turno(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TMRP_calendar::is_holiday(int g, int m) const
|
bool TMRP_calendar::is_holiday(int g, int m) const
|
||||||
@ -287,6 +503,61 @@ int TMRP_calendar::set_turni(const TDate& data, int mini, int maxi)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TMRP_calendar::add_oreuomo(real & var,const TDate& date, bool max)
|
||||||
|
{
|
||||||
|
int minuti = 0L;
|
||||||
|
const int tm = max ? turni_max(date) : turni_min(date);
|
||||||
|
for (int t = tm-1; t >= 0; t--)
|
||||||
|
minuti += _lungturno[t] * _persturno[t] ;
|
||||||
|
var +=(minuti / 60 );
|
||||||
|
return minuti / 60 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMRP_calendar::add_oreuomo_max(real & var,const TDate& date)
|
||||||
|
{
|
||||||
|
return add_oreuomo(var, date,TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMRP_calendar::add_oremacchina(real & var,const TDate& date, bool max)
|
||||||
|
{
|
||||||
|
const int tm = max ? turni_max(date) : turni_min(date);
|
||||||
|
int minuti = 0L;
|
||||||
|
for (int t = tm-1; t >= 0; t--)
|
||||||
|
{
|
||||||
|
minuti += _lungturno[t];
|
||||||
|
const int start=_inizturno[t];
|
||||||
|
const int end=_inizturno[t]+_lungturno[t]-1;
|
||||||
|
for (int pt = t-1; pt >= 0; pt--)
|
||||||
|
{
|
||||||
|
int overlap ;
|
||||||
|
if (_inizturno[pt]<start)
|
||||||
|
{
|
||||||
|
// OK 100%
|
||||||
|
if (_inizturno[pt] + _lungturno[pt] > end)
|
||||||
|
overlap = end + 1 - start ;
|
||||||
|
else
|
||||||
|
overlap = _inizturno[pt] + _lungturno[pt] -1 - start;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (end > _inizturno[pt]+_lungturno[pt])
|
||||||
|
overlap = _lungturno[pt];
|
||||||
|
else
|
||||||
|
overlap = end + 1 - _inizturno[pt] ;
|
||||||
|
}
|
||||||
|
if (overlap >= 0)
|
||||||
|
minuti -= overlap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var +=(minuti / 60 );
|
||||||
|
return (minuti / 60 );
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMRP_calendar::add_oremacchina_max(real & var,const TDate& date)
|
||||||
|
{
|
||||||
|
return add_oremacchina(var, date,TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
int TMRP_calendar::write() const
|
int TMRP_calendar::write() const
|
||||||
{
|
{
|
||||||
if (!_codlin.blank())
|
if (!_codlin.blank())
|
||||||
@ -295,9 +566,13 @@ int TMRP_calendar::write() const
|
|||||||
if (!_codimp.blank())
|
if (!_codimp.blank())
|
||||||
return write_cal('I');
|
return write_cal('I');
|
||||||
|
|
||||||
|
if (_days.not_empty())
|
||||||
|
{
|
||||||
TConfig cfg(CONFIG_DITTA, "mr");
|
TConfig cfg(CONFIG_DITTA, "mr");
|
||||||
cfg.set("Turni", _days);
|
cfg.set("Turni", _days);
|
||||||
cfg.set("Feste", _holidays);
|
cfg.set("Feste", _holidays);
|
||||||
|
}
|
||||||
|
|
||||||
return NOERR;
|
return NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,8 +590,8 @@ void TMRP_calendar::set(const char* linea, const char* impianto)
|
|||||||
_exc_lin.destroy();
|
_exc_lin.destroy();
|
||||||
_exc_imp.destroy();
|
_exc_imp.destroy();
|
||||||
|
|
||||||
_codlin = linea;
|
_codlin = linea; _codlin.rpad(5);
|
||||||
_codimp = impianto;
|
_codimp = impianto; _codimp.rpad(5);
|
||||||
|
|
||||||
if (_codlin.not_empty())
|
if (_codlin.not_empty())
|
||||||
{
|
{
|
||||||
@ -348,9 +623,22 @@ char TMRP_calendar::tipo() const
|
|||||||
return 'S';
|
return 'S';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TDate& TMRP_calendar::next_working_day(TDate& work, int gap)
|
||||||
|
{
|
||||||
|
const int delta = gap >= 0 ? +1 : -1;
|
||||||
|
const int steps = gap >= 0 ? gap : -gap;
|
||||||
|
for (int i = 0; i < steps; i++)
|
||||||
|
{
|
||||||
|
do work += delta;
|
||||||
|
while (turni_min(work) <= 0);
|
||||||
|
}
|
||||||
|
return work;
|
||||||
|
}
|
||||||
|
|
||||||
TMRP_calendar::TMRP_calendar(const char* linea, const char* impianto)
|
TMRP_calendar::TMRP_calendar(const char* linea, const char* impianto)
|
||||||
{
|
{
|
||||||
set(linea, impianto);
|
set(linea, impianto);
|
||||||
|
init_default();
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -391,17 +679,40 @@ void TCalendar_win::handler(WINDOW win, EVENT* ep)
|
|||||||
const int last = TDate::last_day(month, _anno);
|
const int last = TDate::last_day(month, _anno);
|
||||||
if (day >= 1 && day <= last)
|
if (day >= 1 && day <= last)
|
||||||
{
|
{
|
||||||
TMask m("Turni del giorno", 1, 40, 7);
|
const bool is_std=_calendario->tipo()=='S' ;
|
||||||
m.add_date(101, 0, "Data ", 1, 1, "D");
|
TString calname;
|
||||||
m.add_string(102, 0, "", 19, 1, 9, "D");
|
switch (_calendario->tipo())
|
||||||
m.add_boolean(103, 0, "Festa", 31, 1);
|
{
|
||||||
m.add_list(104, 0, "Turni minimi ", 1, 3, 8, "", " |0|1|2|3|4|5|6", "Standard|Nessuno|1 turno|2 turni|3 turni|4 turni|5 turni|6 turni");
|
case 'S':
|
||||||
m.add_list(105, 0, "Turni massimi ", 1, 4, 8, "", " |0|1|2|3|4|5|6", "Standard|Nessuno|1 turno|2 turni|3 turni|4 turni|5 turni|6 turni");
|
calname="Calendario standard";
|
||||||
m.add_number(106, 0, "= ", 31, 3, 1, "D");
|
break;
|
||||||
m.add_number(107, 0, "= ", 31, 4, 1, "D");
|
case 'I':
|
||||||
|
calname="Calendario impianto ";
|
||||||
|
calname << '"'<< _calendario->impianto() << '"';
|
||||||
|
break;
|
||||||
|
case 'L':
|
||||||
|
calname="Calendario linea ";
|
||||||
|
calname << '"'<< _calendario->linea() << '"';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
TMask m(calname, 1, 40, 8);
|
||||||
|
m.add_static(DLG_NULL, 0, "Turni del giorno ", 1, 1);
|
||||||
|
m.add_date(101, 0, "", 1, 2, "D");
|
||||||
|
m.add_string(102, 0, "", 19, 2, 9, "D");
|
||||||
|
m.add_boolean(103, 0, "Festa", 31, 2, is_std ? "":"D");
|
||||||
|
if (is_std)
|
||||||
|
{
|
||||||
|
m.add_list(104, 0, "Turni minimi ", 1, 4, 8, "", "0|1|2|3|4|5|6|7|8", "Nessuno|1 turno|2 turni|3 turni|4 turni|5 turni|6 turni|7 turni|8 turni");
|
||||||
|
m.add_list(105, 0, "Turni massimi ", 1, 5, 8, "", "0|1|2|3|4|5|6|7|8", "Nessuno|1 turno|2 turni|3 turni|4 turni|5 turni|6 turni|7 turni|8 turni");
|
||||||
|
} else {
|
||||||
|
m.add_list(104, 0, "Turni minimi ", 1, 4, 8, "", " |0|1|2|3|4|5|6|7|8", "Standard|Nessuno|1 turno|2 turni|3 turni|4 turni|5 turni|6 turni|7 turni|8 turni");
|
||||||
|
m.add_list(105, 0, "Turni massimi ", 1, 5, 8, "", " |0|1|2|3|4|5|6|7|8", "Standard|Nessuno|1 turno|2 turni|3 turni|4 turni|5 turni|6 turni|7 turni|8 turni");
|
||||||
|
}
|
||||||
|
m.add_number(106, 0, "= ", 31, 4, 1, "D");
|
||||||
|
m.add_number(107, 0, "= ", 31, 5, 1, "D");
|
||||||
m.add_button(DLG_OK, 0, "", -12, -1, 10, 2);
|
m.add_button(DLG_OK, 0, "", -12, -1, 10, 2);
|
||||||
m.add_button(DLG_CANCEL, 0, "", -22, -1, 10, 2);
|
m.add_button(DLG_CANCEL, 0, "", -22, -1, 10, 2);
|
||||||
|
|
||||||
const TDate d(day, month, _anno);
|
const TDate d(day, month, _anno);
|
||||||
const bool festa = _calendario->is_holiday(d);
|
const bool festa = _calendario->is_holiday(d);
|
||||||
m.set(101, d.string());
|
m.set(101, d.string());
|
||||||
@ -448,12 +759,22 @@ void TCalendar_win::update()
|
|||||||
{
|
{
|
||||||
TField_window::update();
|
TField_window::update();
|
||||||
|
|
||||||
|
const TDate today(TODAY);
|
||||||
|
const int this_year = today.year();
|
||||||
|
const int this_month = today.month();
|
||||||
|
const int this_day = today.day();
|
||||||
|
|
||||||
_pixmap = TRUE;
|
_pixmap = TRUE;
|
||||||
|
|
||||||
TString16 str;
|
TString16 str;
|
||||||
str << _anno;
|
str << _anno;
|
||||||
set_color(COLOR_BLACK, COLOR_WHITE);
|
set_color(COLOR_BLACK, COLOR_WHITE);
|
||||||
printat(1, 1, str);
|
|
||||||
|
if (_anno == this_year)
|
||||||
|
set_font(XVT_FFN_FIXED, XVT_FS_BOLD);
|
||||||
|
stringat(1, 1, str);
|
||||||
|
if (_anno == this_year)
|
||||||
|
set_font();
|
||||||
|
|
||||||
RCT rct; xvt_vobj_get_client_rect(win(), &rct);
|
RCT rct; xvt_vobj_get_client_rect(win(), &rct);
|
||||||
|
|
||||||
@ -463,14 +784,24 @@ void TCalendar_win::update()
|
|||||||
const int x = rct.right * (i+1) / 33;
|
const int x = rct.right * (i+1) / 33;
|
||||||
line(x, 0, x, rct.bottom);
|
line(x, 0, x, rct.bottom);
|
||||||
str.format("%2d", i);
|
str.format("%2d", i);
|
||||||
printat(x+2, 0, str);
|
|
||||||
|
if (i == this_day)
|
||||||
|
set_font(XVT_FFN_FIXED, XVT_FS_BOLD);
|
||||||
|
stringat(x+2, 0, str);
|
||||||
|
if (i == this_day)
|
||||||
|
set_font();
|
||||||
}
|
}
|
||||||
for (j = 1; j <= 12; j++)
|
for (j = 1; j <= 12; j++)
|
||||||
{
|
{
|
||||||
const int y = rct.bottom * j / 13;
|
const int y = rct.bottom * j / 13;
|
||||||
line(0, y, rct.right, y);
|
line(0, y, rct.right, y);
|
||||||
str = itom(j); str.cut(3);
|
str = itom(j); str.cut(3);
|
||||||
printat(1, y, str);
|
|
||||||
|
if (j == this_month)
|
||||||
|
set_font(XVT_FFN_FIXED, XVT_FS_BOLD);
|
||||||
|
stringat(1, y, str);
|
||||||
|
if (j == this_month)
|
||||||
|
set_font();
|
||||||
}
|
}
|
||||||
|
|
||||||
TMRP_calendar* defcal = NULL;
|
TMRP_calendar* defcal = NULL;
|
||||||
@ -489,13 +820,39 @@ void TCalendar_win::update()
|
|||||||
{
|
{
|
||||||
const int x = rct.right * (i+1) / 33;
|
const int x = rct.right * (i+1) / 33;
|
||||||
const TDate data(i, j, _anno);
|
const TDate data(i, j, _anno);
|
||||||
set_color(cal->is_red(data) ? COLOR_RED : COLOR_BLACK, COLOR_WHITE);
|
|
||||||
int tmin, tmax;
|
int tmin, tmax;
|
||||||
cal->turni(data, tmin, tmax);
|
cal->turni(data, tmin, tmax);
|
||||||
|
|
||||||
|
COLOR colore = COLOR_BLACK;
|
||||||
|
if (cal->is_red(data))
|
||||||
|
colore = COLOR_RED;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (tmin != 0)
|
||||||
|
{
|
||||||
|
const TDate ieri = data-1L;
|
||||||
|
if (cal->turni_min(ieri) == 0)
|
||||||
|
{
|
||||||
|
const TDate domani = data+1L;
|
||||||
|
if (cal->turni_min(domani) == 0)
|
||||||
|
colore = COLOR_MAGENTA;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
colore = COLOR_BLUE;
|
||||||
|
}
|
||||||
|
set_color(colore, COLOR_WHITE);
|
||||||
|
|
||||||
|
if (j == this_month && i == this_day)
|
||||||
|
set_font(XVT_FFN_FIXED, XVT_FS_BOLD);
|
||||||
|
|
||||||
str.format("%d", tmin);
|
str.format("%d", tmin);
|
||||||
printat(x+2, y, str);
|
stringat(x+2, y, str);
|
||||||
str.format("%2d", tmax);
|
str.format("%2d", tmax);
|
||||||
printat(x+2, y+CHARY-3, str);
|
stringat(x+2, y+BASEY/2, str);
|
||||||
|
|
||||||
|
if (j == this_month && i == this_day)
|
||||||
|
set_font();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -536,12 +893,84 @@ void TCalendar_field::set_calendar(TMRP_calendar* cal, int year)
|
|||||||
{
|
{
|
||||||
TCalendar_win& cw = (TCalendar_win&)win();
|
TCalendar_win& cw = (TCalendar_win&)win();
|
||||||
cw.set_calendar(cal, year);
|
cw.set_calendar(cal, year);
|
||||||
|
cw.force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TCalendar_mask
|
// TCalendar_mask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/*
|
||||||
|
void TCalendar_mask::make_profile_name(TFilename& f) const
|
||||||
|
{
|
||||||
|
f =::firm2dir(-1); // Directory dati
|
||||||
|
f.add("config"); // Directory config
|
||||||
|
f.add(user()); // Directory config
|
||||||
|
if (!f.exist())
|
||||||
|
make_dir(f);
|
||||||
|
f.add(source_file()); // Nome Maschera
|
||||||
|
f.ext("ini"); // Estensione
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCalendar_mask::save_profile()
|
||||||
|
{
|
||||||
|
TFilename prof;
|
||||||
|
make_profile_name(prof);
|
||||||
|
|
||||||
|
ofstream ini(prof);
|
||||||
|
for (int i = 0; i < fields(); i++)
|
||||||
|
{
|
||||||
|
TMask_field& f = fld(i);
|
||||||
|
if (f.is_loadable())
|
||||||
|
{
|
||||||
|
if (f.is_sheet())
|
||||||
|
{
|
||||||
|
TSheet_field& s = (TSheet_field&)f;
|
||||||
|
FOR_EACH_SHEET_ROW(s, r, row)
|
||||||
|
ini << f.dlg() << '[' << r << "] = " << *row << endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ini << f.dlg() << " = " << f.get() << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCalendar_mask::load_profile()
|
||||||
|
{
|
||||||
|
TFilename prof;
|
||||||
|
make_profile_name(prof);
|
||||||
|
if (prof.exist())
|
||||||
|
{
|
||||||
|
TScanner ini(prof);
|
||||||
|
while (ini.good())
|
||||||
|
{
|
||||||
|
TString& line = ini.line();
|
||||||
|
int id, idx;
|
||||||
|
const int num = sscanf(line, "%d[%d] = ", &id, &idx);
|
||||||
|
if (num > 0 && id2pos(id) >= 0) // Riga valida
|
||||||
|
{
|
||||||
|
TMask_field& f = field(id);
|
||||||
|
if (f.is_loadable())
|
||||||
|
{
|
||||||
|
const int eq = line.find('=');
|
||||||
|
line.ltrim(eq+2); // Considera solo il valore del campo
|
||||||
|
if (num == 1)
|
||||||
|
f.set(line); else
|
||||||
|
if (num == 2 && f.is_sheet())
|
||||||
|
{
|
||||||
|
TSheet_field& sf = (TSheet_field&)f;
|
||||||
|
if (idx == 0) sf.destroy(); // Cancella tutto se inserisci la prima riga
|
||||||
|
sf.row(idx) = line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
TMask_field* TCalendar_mask::parse_field(TScanner& scanner)
|
TMask_field* TCalendar_mask::parse_field(TScanner& scanner)
|
||||||
{
|
{
|
||||||
const TString& k = scanner.key();
|
const TString& k = scanner.key();
|
||||||
@ -550,9 +979,405 @@ TMask_field* TCalendar_mask::parse_field(TScanner& scanner)
|
|||||||
return TAutomask::parse_field(scanner);
|
return TAutomask::parse_field(scanner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TCalendar_mask::update_calendar(short calendar, short year, short plant, short line)
|
||||||
|
{
|
||||||
|
TCalendar_field& cf = (TCalendar_field&)field(calendar);
|
||||||
|
TString16 linea = line > 0 ? get(line) : EMPTY_STRING;
|
||||||
|
TString16 impianto = plant > 0 ? get(plant) : EMPTY_STRING;
|
||||||
|
int anno = year >= 0 ? get_int(year) : 0;
|
||||||
|
_calendar.set(linea, impianto);
|
||||||
|
cf.set_calendar(&_calendar, anno);
|
||||||
|
}
|
||||||
|
|
||||||
TCalendar_mask::TCalendar_mask(const char* name, int num)
|
TCalendar_mask::TCalendar_mask(const char* name, int num)
|
||||||
{
|
{
|
||||||
read_mask(name, num, 0);
|
read_mask(name, num, 0);
|
||||||
set_handlers();
|
set_handlers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//***********************************
|
||||||
|
//
|
||||||
|
//***********************************
|
||||||
|
static TMRP_config *_confditta=NULL;
|
||||||
|
|
||||||
|
TMRP_config & mrp_config()
|
||||||
|
{
|
||||||
|
if (_confditta==NULL)
|
||||||
|
_confditta= new TMRP_config();
|
||||||
|
return *_confditta;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//***********************************
|
||||||
|
int TMRP_config::ora_inizio_turno(int i)
|
||||||
|
{
|
||||||
|
return (int)inizio_turno(i) / 60; // numero di minuti
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMRP_config::min_inizio_turno(int i)
|
||||||
|
{
|
||||||
|
return (int)inizio_turno(i) % 60; // numero di minuti
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMRP_config::inizio_turno(int i)
|
||||||
|
{
|
||||||
|
return get_int("TINIZIO","mr", i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMRP_config::ore_durata_turno(int i)
|
||||||
|
{
|
||||||
|
return (int)durata_turno(i) / 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMRP_config::min_durata_turno(int i)
|
||||||
|
{
|
||||||
|
return (int)durata_turno(i) % 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMRP_config::durata_turno(int i)
|
||||||
|
{
|
||||||
|
return get_int("TDURATA", "mr", i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMRP_config::numpers_turno(int t)
|
||||||
|
{
|
||||||
|
return get_int("NUMPERS", "mr", t);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TMRP_config::set_inizio_turno(int i,int ore, int minuti)
|
||||||
|
{
|
||||||
|
const int time = ore * 60 + minuti;
|
||||||
|
set_inizio_turno(i,time);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TMRP_config::set_durata_turno(int i,int ore, int minuti)
|
||||||
|
{
|
||||||
|
const int time = ore * 60 + minuti;
|
||||||
|
set_durata_turno(i,time);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TMRP_config::set_inizio_turno(int i,int time)
|
||||||
|
{
|
||||||
|
set("TINIZIO", time, "mr", TRUE, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TMRP_config::set_durata_turno(int i,int time)
|
||||||
|
{
|
||||||
|
set("TDURATA", time, "mr", TRUE, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
//********
|
||||||
|
TImpianto * get_impianto(const char * codice)
|
||||||
|
{
|
||||||
|
static TImpianto *buffer=NULL;
|
||||||
|
if (!buffer)
|
||||||
|
buffer= new TImpianto();
|
||||||
|
*buffer=cache().get("IMP",codice);
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
TLinea_prod* get_linea(const char * codice)
|
||||||
|
{
|
||||||
|
static TLinea_prod *buffer=NULL;
|
||||||
|
if (!buffer)
|
||||||
|
buffer= new TLinea_prod();
|
||||||
|
*buffer=cache().get("LNP",codice);
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const char *TUnita_produttiva::erre1(int t)
|
||||||
|
{
|
||||||
|
static char _erre[4] = "R0";
|
||||||
|
_erre[1]='0'+char(t);
|
||||||
|
CHECK(t>=0 && t<8, "Errore nel numero di turno");
|
||||||
|
return _erre;
|
||||||
|
}
|
||||||
|
const char *TUnita_produttiva::erre2(int t)
|
||||||
|
{
|
||||||
|
static char _erre[4] = "R10";
|
||||||
|
_erre[2]='0'+char(t);
|
||||||
|
CHECK(t>=0 && t<8, "Errore nel numero di turno");
|
||||||
|
return _erre;
|
||||||
|
}
|
||||||
|
#define M_INIZIO 10000L
|
||||||
|
#define M_DURATA 1L
|
||||||
|
//#define M_PERSON 0.05
|
||||||
|
// inizio turno
|
||||||
|
int TUnita_produttiva::inizio_turno(int t)
|
||||||
|
{
|
||||||
|
real r=get_real(erre1(t));
|
||||||
|
r=r/M_INIZIO;
|
||||||
|
const int i=(int)r.round().integer();
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
void TUnita_produttiva::set_inizio_turno(int t,int time)
|
||||||
|
{
|
||||||
|
real r(time);
|
||||||
|
r = r * M_INIZIO;
|
||||||
|
r = r + long(TUnita_produttiva::durata_turno(t))*M_DURATA;
|
||||||
|
put(erre1(t), r);
|
||||||
|
}
|
||||||
|
// durata turno
|
||||||
|
int TUnita_produttiva::durata_turno(int t)
|
||||||
|
{
|
||||||
|
real r=get_real(erre1(t));
|
||||||
|
r=r-real(long(TUnita_produttiva::inizio_turno(t))*M_INIZIO);
|
||||||
|
r=r/M_DURATA;
|
||||||
|
const int i=(int)r.round().integer();
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
void TUnita_produttiva::set_durata_turno(int t,int time)
|
||||||
|
{
|
||||||
|
real r(TUnita_produttiva::inizio_turno(t));
|
||||||
|
r = r * M_INIZIO;
|
||||||
|
r = r + long(time)*M_DURATA;
|
||||||
|
put(erre1(t), r);
|
||||||
|
}
|
||||||
|
// persone per turno
|
||||||
|
int TUnita_produttiva::raw_numpers_turno(int t)
|
||||||
|
{
|
||||||
|
real r(get_real(erre2(t)));
|
||||||
|
return (int)r.round().integer();
|
||||||
|
}
|
||||||
|
|
||||||
|
int TUnita_produttiva::numpers_turno(int t)
|
||||||
|
{
|
||||||
|
int val;
|
||||||
|
if (!TUnita_produttiva::personale_dedicato())
|
||||||
|
val=raw_numpers_turno(t);
|
||||||
|
if (val==0)
|
||||||
|
val=get_int("I1");
|
||||||
|
else
|
||||||
|
val= mrp_config().numpers_turno(t);
|
||||||
|
return val;
|
||||||
|
/*int r=raw_numpers_turno(t);
|
||||||
|
if (r==0)
|
||||||
|
return numpers_turno();
|
||||||
|
else
|
||||||
|
return r;*/
|
||||||
|
}
|
||||||
|
void TUnita_produttiva::set_numpers_turno(int t, int pers)
|
||||||
|
{
|
||||||
|
real r(pers);
|
||||||
|
put(erre2(t), r);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TUnita_produttiva::set_inizio_turno(int t,int ore, int minuti)
|
||||||
|
{
|
||||||
|
const int time=ore*60+minuti;
|
||||||
|
set_inizio_turno(t,time);
|
||||||
|
}
|
||||||
|
void TUnita_produttiva::set_durata_turno(int t,int ore, int minuti)
|
||||||
|
{
|
||||||
|
const int time=ore*60+minuti;
|
||||||
|
set_durata_turno(t,time);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TUnita_produttiva::ora_inizio_turno(int t)
|
||||||
|
{
|
||||||
|
return inizio_turno(t)/60;
|
||||||
|
}
|
||||||
|
int TUnita_produttiva::min_inizio_turno(int t)
|
||||||
|
{
|
||||||
|
return inizio_turno(t)%60;
|
||||||
|
}
|
||||||
|
int TUnita_produttiva::ore_durata_turno(int t)
|
||||||
|
{
|
||||||
|
return durata_turno(t)/60;
|
||||||
|
}
|
||||||
|
int TUnita_produttiva::min_durata_turno(int t)
|
||||||
|
{
|
||||||
|
return durata_turno(t)%60;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * TUnita_produttiva::codmag() const
|
||||||
|
{
|
||||||
|
TString16 s(codmagdep());
|
||||||
|
return s.sub(0,3);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * TUnita_produttiva::coddep() const
|
||||||
|
{
|
||||||
|
TString16 s(codmagdep());
|
||||||
|
return s.sub(3,5);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************
|
||||||
|
// ****** TImpianto
|
||||||
|
TImpianto::TImpianto(const char* cod)
|
||||||
|
: TUnita_produttiva()
|
||||||
|
{
|
||||||
|
settab("IMP");
|
||||||
|
if (cod && *cod)
|
||||||
|
{
|
||||||
|
TTable t("IMP");
|
||||||
|
t.put("CODTAB",cod);
|
||||||
|
t.read();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ***************************
|
||||||
|
// ****** TLinea_prod
|
||||||
|
TRectype & TUnita_produttiva::operator=(const TRectype & rec)
|
||||||
|
{
|
||||||
|
TRectype ::operator=(rec);
|
||||||
|
return *this ;
|
||||||
|
}
|
||||||
|
TRectype & TImpianto::operator=(const TRectype & rec)
|
||||||
|
{
|
||||||
|
TUnita_produttiva::operator=(rec);
|
||||||
|
return *this ;
|
||||||
|
}
|
||||||
|
TRectype & TLinea_prod::operator=(const TRectype & rec)
|
||||||
|
{
|
||||||
|
TUnita_produttiva::operator=(rec);
|
||||||
|
return *this ;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * TLinea_prod::codimp() const
|
||||||
|
{
|
||||||
|
static char _codimp[5];
|
||||||
|
return strcpy(_codimp, get("S6"));
|
||||||
|
}
|
||||||
|
|
||||||
|
TLinea_prod::TLinea_prod(const char* cod )
|
||||||
|
: TUnita_produttiva()
|
||||||
|
{
|
||||||
|
settab("LNP");
|
||||||
|
if (cod && *cod)
|
||||||
|
{
|
||||||
|
TTable t("LNP");
|
||||||
|
put("CODTAB",cod);
|
||||||
|
read(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * TLinea_prod::codmagdep() const
|
||||||
|
{
|
||||||
|
const char * cod=TUnita_produttiva::codmagdep() ;
|
||||||
|
if (*cod==0)
|
||||||
|
{
|
||||||
|
TImpianto* imp=((TLinea_prod *)this)->get_impianto();
|
||||||
|
if (imp)
|
||||||
|
return imp->codmagdep();
|
||||||
|
}
|
||||||
|
return cod;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int TLinea_prod::inizio_turno(int t)
|
||||||
|
{
|
||||||
|
int val;
|
||||||
|
if (TUnita_produttiva::num_turni()!=0)
|
||||||
|
val=TUnita_produttiva::inizio_turno(t);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TImpianto* imp=get_impianto();
|
||||||
|
if (imp && imp->num_turni()!=0)
|
||||||
|
val=imp->inizio_turno(t);
|
||||||
|
else
|
||||||
|
val=mrp_config().inizio_turno(t);
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
int TLinea_prod::durata_turno(int t)
|
||||||
|
{
|
||||||
|
int val;
|
||||||
|
if (TUnita_produttiva::num_turni()!=0)
|
||||||
|
val=TUnita_produttiva::durata_turno(t);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TImpianto* imp=get_impianto();
|
||||||
|
if (imp && imp->num_turni()!=0)
|
||||||
|
val=imp->durata_turno(t);
|
||||||
|
else
|
||||||
|
val=mrp_config().durata_turno(t);
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
int TLinea_prod::numpers_turno(int t)
|
||||||
|
{
|
||||||
|
int val;
|
||||||
|
if (TUnita_produttiva::num_turni()!=0)
|
||||||
|
val=TUnita_produttiva::numpers_turno(t);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TImpianto* imp=get_impianto();
|
||||||
|
if (imp)
|
||||||
|
val=imp->numpers_turno(t);
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TLinea_prod::num_turni()
|
||||||
|
{
|
||||||
|
int val=TUnita_produttiva::num_turni();
|
||||||
|
if (val==0)
|
||||||
|
{
|
||||||
|
TImpianto* imp=get_impianto();
|
||||||
|
if (imp)
|
||||||
|
val=imp->num_turni();
|
||||||
|
if (val==0)
|
||||||
|
val=mrp_config().num_turni();
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TImpianto * TLinea_prod::get_impianto() const
|
||||||
|
{
|
||||||
|
const char * imp = codimp();
|
||||||
|
if (imp && *imp)
|
||||||
|
return ::get_impianto(imp);
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static TCodgiac_livelli *_livelli=NULL;
|
||||||
|
|
||||||
|
TCodgiac_livelli &livelli_giac()
|
||||||
|
{
|
||||||
|
if (_livelli==NULL)
|
||||||
|
_livelli=new TCodgiac_livelli();
|
||||||
|
return *_livelli;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void find_price(const TString &tipocv, const TString &codcv, const TString &codcatven,
|
||||||
|
const char *tipocf, long codcf,
|
||||||
|
const char * codice, const real & qta, real & price)
|
||||||
|
{
|
||||||
|
static TCondizione_vendita *_condv =NULL;
|
||||||
|
|
||||||
|
bool retry=TRUE;
|
||||||
|
if (_condv == NULL)
|
||||||
|
_condv = new TCondizione_vendita(new TConfig (CONFIG_DITTA));
|
||||||
|
|
||||||
|
switch (tipocv[0])
|
||||||
|
{
|
||||||
|
case 'C':
|
||||||
|
if (codcf == 0L && _condv->config_ditta().get_bool("GESCONCC", "ve"))
|
||||||
|
break; // necessario il codice del cli/for
|
||||||
|
case 'O':
|
||||||
|
case 'L':
|
||||||
|
_condv -> put_condv(tipocv,codcv,codcatven,
|
||||||
|
tipocf, codcf ? format("%ld",codcf) : "");
|
||||||
|
if (_condv->ricerca(codice, qta))
|
||||||
|
{
|
||||||
|
price = _condv->get_prezzo();
|
||||||
|
retry=FALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (retry)
|
||||||
|
{
|
||||||
|
TToken_string key(codice);
|
||||||
|
key.add(1);
|
||||||
|
price = cache().get(LF_UMART,key).get_real(UMART_PREZZO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
226
mr/mrplib.h
@ -5,10 +5,64 @@
|
|||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __ASSOC_H
|
||||||
|
#include <assoc.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __DBLIB_H
|
||||||
|
#include "../db/dblib.h"
|
||||||
|
#endif
|
||||||
|
#ifndef __MGLIB_H
|
||||||
|
#include "../mg/mglib.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
class TMRP_array : public TObject
|
||||||
|
{
|
||||||
|
TAssoc_array _by_key;
|
||||||
|
TPointer_array _by_idx;
|
||||||
|
|
||||||
|
void swap(long i, long j) { _by_idx.swap(int(i), int(j)); }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
TToken_string _key; // Token string di lavoro
|
||||||
|
|
||||||
|
virtual TSortable* new_obj(const TToken_string& key) const pure;
|
||||||
|
TSortable* add_obj(const TToken_string& key);
|
||||||
|
TSortable* find_obj(const TToken_string& key) const
|
||||||
|
{ return (TSortable*)_by_key.objptr(key); }
|
||||||
|
TSortable& find_obj(long n) const
|
||||||
|
{ return (TSortable&)_by_idx[int(n)]; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
long items() const { return _by_key.items(); }
|
||||||
|
void destroy();
|
||||||
|
long sort();
|
||||||
|
void add(TMRP_array &a, bool force=FALSE);
|
||||||
|
|
||||||
|
// I metodi add(), find() e operator[] devono essere dichiarati
|
||||||
|
// dalle classi derivate e ritornare i tipi giusti tramite cast
|
||||||
|
// TSortable* add(const char* key, bool create)
|
||||||
|
// { return (TSortable*)add_obj(key); }
|
||||||
|
// TSortable* find(const char* key) const
|
||||||
|
// { return (TSortable*)find_obj(key); }
|
||||||
|
// TSortable& operator[](long index) const
|
||||||
|
// { return (TSortable&)*find_obj(index); }
|
||||||
|
TMRP_array & operator=(const TMRP_array& a);
|
||||||
|
|
||||||
|
TMRP_array() { }
|
||||||
|
TMRP_array(const TMRP_array& a);
|
||||||
|
virtual ~TMRP_array() { }
|
||||||
|
};
|
||||||
|
|
||||||
class TMRP_calendar : public TObject
|
class TMRP_calendar : public TObject
|
||||||
{
|
{
|
||||||
static TString16 _days;
|
static TString16 _days;
|
||||||
static TToken_string _holidays;
|
static TToken_string _holidays;
|
||||||
|
int _inizturno[8];
|
||||||
|
int _lungturno[8];
|
||||||
|
int _persturno[8];
|
||||||
|
|
||||||
TAssoc_array _exc_imp, _exc_lin;
|
TAssoc_array _exc_imp, _exc_lin;
|
||||||
TString16 _codimp, _codlin;
|
TString16 _codimp, _codlin;
|
||||||
|
|
||||||
@ -27,6 +81,17 @@ public:
|
|||||||
int turni_max(const TDate& date)
|
int turni_max(const TDate& date)
|
||||||
{ int mini, maxi; turni(date, mini, maxi); return maxi; }
|
{ int mini, maxi; turni(date, mini, maxi); return maxi; }
|
||||||
|
|
||||||
|
// ore minime e massime ad una certa data
|
||||||
|
int add_oremacchina(real & var,const TDate& date, bool max=FALSE);
|
||||||
|
int add_oremacchina_max(real & var,const TDate& date);
|
||||||
|
|
||||||
|
int add_oreuomo(real & var,const TDate& date, bool max=FALSE);
|
||||||
|
int add_oreuomo_max(real & var,const TDate& date);
|
||||||
|
|
||||||
|
TDate& next_working_day(TDate& from, int gap = 1);
|
||||||
|
TDate& prev_working_day(TDate& from, int gap = 1)
|
||||||
|
{ return next_working_day(from, -gap); }
|
||||||
|
|
||||||
int set_turni(const TDate& date, int mini, int maxi);
|
int set_turni(const TDate& date, int mini, int maxi);
|
||||||
|
|
||||||
int write() const;
|
int write() const;
|
||||||
@ -62,12 +127,173 @@ public:
|
|||||||
|
|
||||||
class TCalendar_mask : public TAutomask
|
class TCalendar_mask : public TAutomask
|
||||||
{
|
{
|
||||||
|
TMRP_calendar _calendar;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual TMask_field* parse_field(TScanner& scanner);
|
virtual TMask_field* parse_field(TScanner& scanner);
|
||||||
|
// void make_profile_name(TFilename& f) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
TMRP_calendar& calendar() { return _calendar; }
|
||||||
|
// void save_profile();
|
||||||
|
// void load_profile();
|
||||||
|
|
||||||
|
const TMRP_calendar& calendar() const { return _calendar; }
|
||||||
|
void update_calendar(short calendar, short year, short plant = 0, short line = 0);
|
||||||
|
|
||||||
TCalendar_mask(const char* name, int num = 0);
|
TCalendar_mask(const char* name, int num = 0);
|
||||||
virtual ~TCalendar_mask() {};
|
virtual ~TCalendar_mask() {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class TMRP_time : public TSortable
|
||||||
|
{
|
||||||
|
static TAssoc_array _frate_indovino;
|
||||||
|
|
||||||
|
TString16 _imp, _lin;
|
||||||
|
TDate _date;
|
||||||
|
int _hour;
|
||||||
|
|
||||||
|
TMRP_calendar& calendario();
|
||||||
|
void copy(const TMRP_time& t) { set(t._date, t._hour, t._imp, t._lin); }
|
||||||
|
|
||||||
|
public:
|
||||||
|
static TMRP_calendar& get_calendar(const char* codimp=NULL,const char* ccodlin=NULL);
|
||||||
|
|
||||||
|
virtual int compare(const TSortable& s) const;
|
||||||
|
|
||||||
|
TMRP_time& add_time(int days, long hours = 0, bool macchina=TRUE);
|
||||||
|
TMRP_time& sub_time(int days, long hours = 0, bool macchina=TRUE) { return add_time(-days, -hours,macchina); }
|
||||||
|
|
||||||
|
void set(const TDate& d, int h, const char* imp, const char* lin);
|
||||||
|
TMRP_time& operator=(const TMRP_time& t) { copy(t); return *this; }
|
||||||
|
|
||||||
|
const TDate& date() const { return _date; }
|
||||||
|
|
||||||
|
TMRP_time();
|
||||||
|
TMRP_time(const TDate& d, int h, const char* imp, const char* lin);
|
||||||
|
TMRP_time(const TMRP_time& t) { copy(t); }
|
||||||
|
virtual ~TMRP_time() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
class TMRP_config : public TConfig
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
void set_inizio_turno(int t,int time);
|
||||||
|
void set_durata_turno(int t,int time);
|
||||||
|
|
||||||
|
public:
|
||||||
|
// **
|
||||||
|
void set_inizio_turno(int t,int ore, int minuti);
|
||||||
|
void set_durata_turno(int t,int ore, int minuti);
|
||||||
|
void set_numpers_turno(int t, int pers) {set("NUMPERS", pers, "mr", TRUE, t);}
|
||||||
|
void set_turni(int n) {set("NTURNI", n, "mr", TRUE);}
|
||||||
|
void set_gestimpianti(bool gi) {set("GESTIMPIANTI", gi ? "X" : "", "mr", TRUE); }
|
||||||
|
|
||||||
|
// **
|
||||||
|
int inizio_turno(int t);
|
||||||
|
int durata_turno(int t);
|
||||||
|
// **
|
||||||
|
int ora_inizio_turno(int t);
|
||||||
|
int min_inizio_turno(int t);
|
||||||
|
int ore_durata_turno(int t);
|
||||||
|
int min_durata_turno(int t);
|
||||||
|
int num_turni() {return get_int("NTURNI", "mr");}
|
||||||
|
int numpers_turno(int t);
|
||||||
|
bool gestimpianti() {return get_bool("GESTIMPIANTI","mr"); }
|
||||||
|
|
||||||
|
TMRP_config() : TConfig(CONFIG_DITTA,"mr") {}
|
||||||
|
virtual ~TMRP_config() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
class TUnita_produttiva : public TRectype
|
||||||
|
{
|
||||||
|
const char *erre1(int t); // campo durata e inizio turno
|
||||||
|
const char *erre2(int t); // numero persone
|
||||||
|
protected:
|
||||||
|
void set_inizio_turno(int t,int time);
|
||||||
|
void set_durata_turno(int t,int time);
|
||||||
|
|
||||||
|
public:
|
||||||
|
const char * codice() const {return get("CODTAB");}
|
||||||
|
const char * descr() const {return get("S0");}
|
||||||
|
|
||||||
|
int raw_numpers_turno(int t) ;
|
||||||
|
// **
|
||||||
|
void set_inizio_turno(int t,int ore, int minuti);
|
||||||
|
void set_durata_turno(int t,int ore, int minuti);
|
||||||
|
void set_numpers_turno(int t, int pers);
|
||||||
|
|
||||||
|
virtual int num_turni() {return get_int("I0");}
|
||||||
|
virtual int inizio_turno(int t);
|
||||||
|
virtual int durata_turno(int t);
|
||||||
|
// **
|
||||||
|
int ora_inizio_turno(int t);
|
||||||
|
int min_inizio_turno(int t);
|
||||||
|
int ore_durata_turno(int t);
|
||||||
|
int min_durata_turno(int t);
|
||||||
|
// numero di persone sul turno
|
||||||
|
virtual int numpers_turno(int t) ;
|
||||||
|
// flag di personale dedicato
|
||||||
|
virtual bool personale_dedicato() const { return get_bool("B0"); }
|
||||||
|
|
||||||
|
virtual const char * codmagdep() const { return get("S7"); }
|
||||||
|
const char * codmag() const ;
|
||||||
|
const char * coddep() const ;
|
||||||
|
|
||||||
|
virtual TRectype & operator=(const TRectype& rec);
|
||||||
|
|
||||||
|
TUnita_produttiva(const TUnita_produttiva& rec) : TRectype (rec){}
|
||||||
|
TUnita_produttiva(const TRectype& rec) : TRectype (rec){}
|
||||||
|
TUnita_produttiva() : TRectype (LF_TAB){}
|
||||||
|
virtual ~TUnita_produttiva() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
class TImpianto : public TUnita_produttiva
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
TObject* dup() const { return new TImpianto(*this); }
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual TRectype & operator=(const TRectype& rec);
|
||||||
|
// **
|
||||||
|
TImpianto(const char* cod = "") ;
|
||||||
|
TImpianto(const TRectype& rec) : TUnita_produttiva (rec) {}
|
||||||
|
TImpianto(const TImpianto& rec) : TUnita_produttiva (rec){}
|
||||||
|
virtual ~TImpianto() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
class TLinea_prod : public TUnita_produttiva
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
TObject* dup() const { return new TLinea_prod(*this); }
|
||||||
|
public:
|
||||||
|
TImpianto * get_impianto() const;
|
||||||
|
// **
|
||||||
|
const char * codimp() const;
|
||||||
|
virtual const char * codmagdep() const ;
|
||||||
|
bool to_check() const {return !get_bool("B9");} //
|
||||||
|
int check_level() const {return !get_bool("I2");} //
|
||||||
|
|
||||||
|
// **
|
||||||
|
virtual int num_turni() ;
|
||||||
|
virtual int inizio_turno(int t);
|
||||||
|
virtual int durata_turno(int t);
|
||||||
|
virtual int numpers_turno(int t) ;
|
||||||
|
|
||||||
|
virtual TRectype & operator=(const TRectype& rec);
|
||||||
|
|
||||||
|
TLinea_prod(const char* cod = "") ;
|
||||||
|
TLinea_prod(const TRectype& rec) : TUnita_produttiva (rec) {}
|
||||||
|
TLinea_prod(const TLinea_prod& rec) : TUnita_produttiva (rec){}
|
||||||
|
virtual ~TLinea_prod() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
TImpianto * get_impianto(const char * codice);
|
||||||
|
TLinea_prod* get_linea(const char * codice);
|
||||||
|
TCodgiac_livelli &livelli_giac();
|
||||||
|
|
||||||
|
void find_price(const TString &tipocv, const TString &codcv, const TString &codcatven,
|
||||||
|
const char * tipocf, long codcf, const char * codice, const real & qta, real & price);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
57
mr/mrtbimp.h
@ -4,4 +4,61 @@
|
|||||||
#define F_CODICE 101
|
#define F_CODICE 101
|
||||||
#define F_DESC 102
|
#define F_DESC 102
|
||||||
|
|
||||||
|
#define F_TURNI 103
|
||||||
|
#define F_PERSONE 104
|
||||||
|
#define F_PERSONESPEC 105
|
||||||
|
#define H_PERSONESPEC 106
|
||||||
|
|
||||||
|
#define F_T1HINIZIO 110
|
||||||
|
#define F_T1MINIZIO 111
|
||||||
|
#define F_T1HDURATA 112
|
||||||
|
#define F_T1MDURATA 113
|
||||||
|
#define F_T1NUMPERS 114
|
||||||
|
#define F_T2HINIZIO 115
|
||||||
|
#define F_T2MINIZIO 116
|
||||||
|
#define F_T2HDURATA 117
|
||||||
|
#define F_T2MDURATA 118
|
||||||
|
#define F_T2NUMPERS 119
|
||||||
|
#define F_T3HINIZIO 120
|
||||||
|
#define F_T3MINIZIO 121
|
||||||
|
#define F_T3HDURATA 122
|
||||||
|
#define F_T3MDURATA 123
|
||||||
|
#define F_T3NUMPERS 124
|
||||||
|
#define F_T4HINIZIO 125
|
||||||
|
#define F_T4MINIZIO 126
|
||||||
|
#define F_T4HDURATA 127
|
||||||
|
#define F_T4MDURATA 128
|
||||||
|
#define F_T4NUMPERS 129
|
||||||
|
#define F_T5HINIZIO 130
|
||||||
|
#define F_T5MINIZIO 131
|
||||||
|
#define F_T5HDURATA 132
|
||||||
|
#define F_T5MDURATA 133
|
||||||
|
#define F_T5NUMPERS 134
|
||||||
|
#define F_T6HINIZIO 135
|
||||||
|
#define F_T6MINIZIO 136
|
||||||
|
#define F_T6HDURATA 137
|
||||||
|
#define F_T6MDURATA 138
|
||||||
|
#define F_T6NUMPERS 139
|
||||||
|
#define F_T7HINIZIO 140
|
||||||
|
#define F_T7MINIZIO 141
|
||||||
|
#define F_T7HDURATA 142
|
||||||
|
#define F_T7MDURATA 143
|
||||||
|
#define F_T7NUMPERS 144
|
||||||
|
#define F_T8HINIZIO 145
|
||||||
|
#define F_T8MINIZIO 146
|
||||||
|
#define F_T8HDURATA 147
|
||||||
|
#define F_T8MDURATA 148
|
||||||
|
#define F_T8NUMPERS 149
|
||||||
|
#define F_CODMAG 160
|
||||||
|
#define F_DESMAG 161
|
||||||
|
#define F_CODDEP 162
|
||||||
|
#define F_DESDEP 163
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define F_YEAR 201
|
||||||
|
#define F_TYPE 202
|
||||||
|
#define F_CALENDAR 203
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
475
mr/mrtbimp.uml
@ -1,6 +1,26 @@
|
|||||||
#include "mrtblnp.h"
|
#include "mrtbimp.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 19 80 3
|
// gruppi turni "Minori o uguali a X"
|
||||||
|
#define GL1 10
|
||||||
|
#define GL2 11
|
||||||
|
#define GL3 12
|
||||||
|
#define GL4 13
|
||||||
|
#define GL5 14
|
||||||
|
#define GL6 15
|
||||||
|
#define GL7 16
|
||||||
|
#define GL8 17
|
||||||
|
// gruppi turni "Maggiori di X"
|
||||||
|
#define GM1 20
|
||||||
|
#define GM2 21
|
||||||
|
#define GM3 22
|
||||||
|
#define GM4 23
|
||||||
|
#define GM5 24
|
||||||
|
#define GM6 25
|
||||||
|
#define GM7 26
|
||||||
|
#define GM8 27
|
||||||
|
#define GPERS 30
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -2 -1 -1
|
||||||
#include <toolbar.h>
|
#include <toolbar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
@ -40,6 +60,457 @@ BEGIN
|
|||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
|
LISTBOX F_TURNI 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Numero turni "
|
||||||
|
ITEM "0|"
|
||||||
|
MESSAGE CLEAR,GL1@|CLEAR,GM1@
|
||||||
|
ITEM "1|1"
|
||||||
|
MESSAGE CLEAR,GM1@|ENABLE,GL1@
|
||||||
|
ITEM "2|2"
|
||||||
|
MESSAGE CLEAR,GM2@|ENABLE,GL2@
|
||||||
|
ITEM "3|3"
|
||||||
|
MESSAGE CLEAR,GM3@|ENABLE,GL3@
|
||||||
|
ITEM "4|4"
|
||||||
|
MESSAGE CLEAR,GM4@|ENABLE,GL4@
|
||||||
|
ITEM "5|5"
|
||||||
|
MESSAGE CLEAR,GM5@|ENABLE,GL5@
|
||||||
|
ITEM "6|6"
|
||||||
|
MESSAGE CLEAR,GM6@|ENABLE,GL6@
|
||||||
|
ITEM "7|7"
|
||||||
|
MESSAGE CLEAR,GM7@|ENABLE,GL7@
|
||||||
|
ITEM "8|8"
|
||||||
|
MESSAGE CLEAR,GM8@|ENABLE,GL8@
|
||||||
|
FIELD I0
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOL F_PERSONESPEC
|
||||||
|
BEGIN
|
||||||
|
PROMPT 40 7 "Utilizza personale proprio"
|
||||||
|
FIELD B0
|
||||||
|
MESSAGE TRUE SHOW,GPERS@|ENABLE,F_PERSONE
|
||||||
|
MESSAGE FALSE HIDE,GPERS@
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_PERSONE 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 26 8 "Persone su un turno "
|
||||||
|
FIELD I1
|
||||||
|
GROUP GPERS
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Ora inizio"
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 16 8 "Durata "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T1HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GL1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 9 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T1MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GL1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 9 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T1HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GL1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 9 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T1MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GL1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 9 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T1NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GL1 GL2 GL3 GL4 GL5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 9 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T2HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 10 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T2MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 10 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T2HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 10 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T2MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 10 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T2NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GL2 GL3 GL4 GL5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 10 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T3HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 11 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T3MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 11 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T3HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 11 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T3MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 11 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T3NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GL3 GL4 GL5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T4HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 12 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T4MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 12 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T4HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 12 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T4MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 12 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T4NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GL4 GL5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 12 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T5HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 13 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T5MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 13 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T5HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 13 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T5MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 13 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T5NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GL5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 13 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T6HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 14 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T6MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 14 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T6HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 14 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T6MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 14 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T6NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 14 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T7HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GL7 GL8
|
||||||
|
PROMPT 3 15 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T7MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GL7 GL8
|
||||||
|
PROMPT 6 15 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T7HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 16 15 ""
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GL7 GL8
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T7MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 19 15 ":"
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GL7 GL8
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T7NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 15 ""
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GL7 GL8 GPERS
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T8HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GM7 GL8
|
||||||
|
PROMPT 3 16 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T8MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GM7 GL8
|
||||||
|
PROMPT 6 16 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T8HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GM7 GL8
|
||||||
|
PROMPT 16 16 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T8MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GM7 GL8
|
||||||
|
PROMPT 19 16 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T8NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GM7 GL8 GPERS
|
||||||
|
PROMPT 46 16 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
STRING F_CODMAG 3
|
||||||
|
BEGIN
|
||||||
|
FLAGS "U"
|
||||||
|
PROMPT 2 18 "Magazzino "
|
||||||
|
FIELD S7[1,3]
|
||||||
|
USE MAG SELECT CODTAB[4,5]=""
|
||||||
|
INPUT CODTAB F_CODMAG
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_CODMAG CODTAB[1,3]
|
||||||
|
OUTPUT F_CODDEP CODTAB[4,5]
|
||||||
|
OUTPUT F_DESMAG S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
MESSAGE EMPTY RESET,F_CODDEP|RESET,F_DESDEP
|
||||||
|
MESSAGE ENABLE,F_CODDEP|ENABLE,F_DESDEP
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESMAG 50
|
||||||
|
BEGIN
|
||||||
|
FLAGS "U"
|
||||||
|
PROMPT 20 18 ""
|
||||||
|
USE MAG KEY 2
|
||||||
|
INPUT S0 F_DESMAG
|
||||||
|
COPY DISPLAY F_CODMAG
|
||||||
|
COPY OUTPUT F_CODMAG
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
STRING F_CODDEP 2
|
||||||
|
BEGIN
|
||||||
|
FLAGS "U"
|
||||||
|
PROMPT 2 19 "Deposito "
|
||||||
|
FIELD S7[4,5]
|
||||||
|
USE MAG // SELECT CODTAB[4,5]!=""
|
||||||
|
INPUT CODTAB[1,3] F_CODMAG
|
||||||
|
INPUT CODTAB[4,5] F_CODDEP
|
||||||
|
DISPLAY "Cod.Mag." CODTAB[1,3]
|
||||||
|
DISPLAY "Cod.Dep" CODTAB[4,5]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_CODMAG CODTAB[1,3]
|
||||||
|
OUTPUT F_CODDEP CODTAB[4,5]
|
||||||
|
OUTPUT F_DESDEP S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
MESSAGE EMPTY RESET,F_DESDEP
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESDEP 50
|
||||||
|
BEGIN
|
||||||
|
FLAGS "U"
|
||||||
|
PROMPT 20 19 ""
|
||||||
|
USE MAG KEY 2
|
||||||
|
INPUT S0 F_DESDEP
|
||||||
|
COPY DISPLAY F_CODDEP
|
||||||
|
COPY OUTPUT F_CODDEP
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Calendario" -1 -1 65 15
|
PAGE "Calendario" -1 -1 65 15
|
||||||
|
53
mr/mrtblnp.h
@ -6,7 +6,58 @@
|
|||||||
|
|
||||||
#define F_IMPIANTO 103
|
#define F_IMPIANTO 103
|
||||||
#define F_DESCIMPIANTO 104
|
#define F_DESCIMPIANTO 104
|
||||||
#define F_PERSONE 105
|
#define F_PERSONESPEC 105
|
||||||
|
#define F_PERSONE 106
|
||||||
|
|
||||||
|
#define F_NO_CRP 107
|
||||||
|
#define F_CRP_LEVEL 108
|
||||||
|
|
||||||
|
#define F_TURNI 109
|
||||||
|
#define F_T1HINIZIO 110
|
||||||
|
#define F_T1MINIZIO 111
|
||||||
|
#define F_T1HDURATA 112
|
||||||
|
#define F_T1MDURATA 113
|
||||||
|
#define F_T1NUMPERS 114
|
||||||
|
#define F_T2HINIZIO 115
|
||||||
|
#define F_T2MINIZIO 116
|
||||||
|
#define F_T2HDURATA 117
|
||||||
|
#define F_T2MDURATA 118
|
||||||
|
#define F_T2NUMPERS 119
|
||||||
|
#define F_T3HINIZIO 120
|
||||||
|
#define F_T3MINIZIO 121
|
||||||
|
#define F_T3HDURATA 122
|
||||||
|
#define F_T3MDURATA 123
|
||||||
|
#define F_T3NUMPERS 124
|
||||||
|
#define F_T4HINIZIO 125
|
||||||
|
#define F_T4MINIZIO 126
|
||||||
|
#define F_T4HDURATA 127
|
||||||
|
#define F_T4MDURATA 128
|
||||||
|
#define F_T4NUMPERS 129
|
||||||
|
#define F_T5HINIZIO 130
|
||||||
|
#define F_T5MINIZIO 131
|
||||||
|
#define F_T5HDURATA 132
|
||||||
|
#define F_T5MDURATA 133
|
||||||
|
#define F_T5NUMPERS 134
|
||||||
|
#define F_T6HINIZIO 135
|
||||||
|
#define F_T6MINIZIO 136
|
||||||
|
#define F_T6HDURATA 137
|
||||||
|
#define F_T6MDURATA 138
|
||||||
|
#define F_T6NUMPERS 139
|
||||||
|
#define F_T7HINIZIO 140
|
||||||
|
#define F_T7MINIZIO 141
|
||||||
|
#define F_T7HDURATA 142
|
||||||
|
#define F_T7MDURATA 143
|
||||||
|
#define F_T7NUMPERS 144
|
||||||
|
#define F_T8HINIZIO 145
|
||||||
|
#define F_T8MINIZIO 146
|
||||||
|
#define F_T8HDURATA 147
|
||||||
|
#define F_T8MDURATA 148
|
||||||
|
#define F_T8NUMPERS 149
|
||||||
|
|
||||||
|
#define F_CODMAG 160
|
||||||
|
#define F_DESMAG 161
|
||||||
|
#define F_CODDEP 162
|
||||||
|
#define F_DESDEP 163
|
||||||
|
|
||||||
#define F_YEAR 201
|
#define F_YEAR 201
|
||||||
#define F_TYPE 202
|
#define F_TYPE 202
|
||||||
|
493
mr/mrtblnp.uml
@ -1,10 +1,30 @@
|
|||||||
#include "mrtblnp.h"
|
#include "mrtblnp.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 19 80 3
|
// gruppi turni "Minori o uguali a X"
|
||||||
|
#define GL1 10
|
||||||
|
#define GL2 11
|
||||||
|
#define GL3 12
|
||||||
|
#define GL4 13
|
||||||
|
#define GL5 14
|
||||||
|
#define GL6 15
|
||||||
|
#define GL7 16
|
||||||
|
#define GL8 17
|
||||||
|
// gruppi turni "Maggiori di X"
|
||||||
|
#define GM1 20
|
||||||
|
#define GM2 21
|
||||||
|
#define GM3 22
|
||||||
|
#define GM4 23
|
||||||
|
#define GM5 24
|
||||||
|
#define GM6 25
|
||||||
|
#define GM7 26
|
||||||
|
#define GM8 27
|
||||||
|
#define GPERS 30
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -2 -1 -1
|
||||||
#include <toolbar.h>
|
#include <toolbar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Linee di produzione" -1 -1 65 15
|
PAGE "Linee di produzione" -1 -1 80 20
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 5
|
GROUPBOX DLG_NULL 78 5
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -50,9 +70,9 @@ BEGIN
|
|||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_IMPIANTO CODTAB
|
OUTPUT F_IMPIANTO CODTAB
|
||||||
OUTPUT F_DESCIMPIANTO S0
|
OUTPUT F_DESCIMPIANTO S0
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE REQUIRED
|
||||||
FIELD S6
|
FIELD S6
|
||||||
WARNING "Impianto assente"
|
WARNING "E' necessario specificare un impianto"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCIMPIANTO 50
|
STRING F_DESCIMPIANTO 50
|
||||||
@ -67,18 +87,473 @@ BEGIN
|
|||||||
WARNING "Impianto assente"
|
WARNING "Impianto assente"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 4
|
BOOL F_NO_CRP
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 6 ""
|
PROMPT 2 6 "Escludi dal Capacity Review "
|
||||||
|
FIELD B9
|
||||||
|
MESSAGE FALSE HIDE,F_CRP_LEVEL
|
||||||
|
MESSAGE TRUE SHOW,F_CRP_LEVEL
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_CRP_LEVEL 25
|
||||||
|
BEGIN
|
||||||
|
PROMPT 40 6 "Livello "
|
||||||
|
ITEM "0|Master Schedule"
|
||||||
|
FIELD I2
|
||||||
|
END
|
||||||
|
|
||||||
|
LISTBOX F_TURNI 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Numero turni "
|
||||||
|
ITEM "0|"
|
||||||
|
MESSAGE CLEAR,GL1@|CLEAR,GM1@
|
||||||
|
ITEM "1|1"
|
||||||
|
MESSAGE CLEAR,GM1@|ENABLE,GL1@
|
||||||
|
ITEM "2|2"
|
||||||
|
MESSAGE CLEAR,GM2@|ENABLE,GL2@
|
||||||
|
ITEM "3|3"
|
||||||
|
MESSAGE CLEAR,GM3@|ENABLE,GL3@
|
||||||
|
ITEM "4|4"
|
||||||
|
MESSAGE CLEAR,GM4@|ENABLE,GL4@
|
||||||
|
ITEM "5|5"
|
||||||
|
MESSAGE CLEAR,GM5@|ENABLE,GL5@
|
||||||
|
ITEM "6|6"
|
||||||
|
MESSAGE CLEAR,GM6@|ENABLE,GL6@
|
||||||
|
ITEM "7|7"
|
||||||
|
MESSAGE CLEAR,GM7@|ENABLE,GL7@
|
||||||
|
ITEM "8|8"
|
||||||
|
MESSAGE CLEAR,GM8@|ENABLE,GL8@
|
||||||
|
FIELD I0
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOL F_PERSONESPEC
|
||||||
|
BEGIN
|
||||||
|
PROMPT 40 7 "Utilizza personale specializzato"
|
||||||
|
FIELD B0
|
||||||
|
MESSAGE TRUE SHOW,GPERS@|ENABLE,F_PERSONE
|
||||||
|
MESSAGE FALSE HIDE,GPERS@
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_PERSONE 3
|
NUMBER F_PERSONE 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "Persone "
|
PROMPT 26 8 "Persone su un turno "
|
||||||
FLAGS "U"
|
FIELD I1
|
||||||
FIELD I0
|
GROUP GPERS
|
||||||
END
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Ora inizio"
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 16 8 "Durata "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T1HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GL1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 9 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T1MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GL1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 9 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T1HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GL1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 9 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T1MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GL1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 9 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T1NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GL1 GL2 GL3 GL4 GL5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 9 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T2HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 10 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T2MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 10 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T2HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 10 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T2MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GL2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 10 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T2NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GL2 GL3 GL4 GL5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 10 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T3HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 11 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T3MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 11 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T3HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 11 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T3MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GL3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 11 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T3NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GL3 GL4 GL5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T4HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 12 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T4MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 12 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T4HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 12 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T4MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GL4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 12 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T4NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GL4 GL5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 12 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T5HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 13 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T5MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 13 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T5HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 13 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T5MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GL5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 13 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T5NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GL5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 13 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T6HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GL6 GL7 GL8
|
||||||
|
PROMPT 3 14 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T6MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GL6 GL7 GL8
|
||||||
|
PROMPT 6 14 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T6HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GL6 GL7 GL8
|
||||||
|
PROMPT 16 14 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T6MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GL6 GL7 GL8
|
||||||
|
PROMPT 19 14 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T6NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GL6 GL7 GL8 GPERS
|
||||||
|
PROMPT 46 14 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T7HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GL7 GL8
|
||||||
|
PROMPT 3 15 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T7MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GL7 GL8
|
||||||
|
PROMPT 6 15 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T7HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 16 15 ""
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GL7 GL8
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T7MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 19 15 ":"
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GL7 GL8
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T7NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 15 ""
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GL7 GL8 GPERS
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T8HINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GM7 GL8
|
||||||
|
PROMPT 3 16 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T8MINIZIO 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GM7 GL8
|
||||||
|
PROMPT 6 16 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T8HDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GM7 GL8
|
||||||
|
PROMPT 16 16 ""
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 23)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T8MDURATA 2
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GM7 GL8
|
||||||
|
PROMPT 19 16 ":"
|
||||||
|
NUM_EXPR {(#THIS_FIELD <= 59)}
|
||||||
|
WARNING "Ora non valida"
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_T8NUMPERS 3
|
||||||
|
BEGIN
|
||||||
|
GROUP GM1 GM2 GM3 GM4 GM5 GM6 GM7 GL8 GPERS
|
||||||
|
PROMPT 46 16 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
STRING F_CODMAG 3
|
||||||
|
BEGIN
|
||||||
|
FLAGS "U"
|
||||||
|
PROMPT 2 18 "Magazzino "
|
||||||
|
FIELD S7[1,3]
|
||||||
|
USE MAG SELECT CODTAB[4,5]=""
|
||||||
|
INPUT CODTAB F_CODMAG
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_CODMAG CODTAB[1,3]
|
||||||
|
OUTPUT F_CODDEP CODTAB[4,5]
|
||||||
|
OUTPUT F_DESMAG S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
MESSAGE EMPTY RESET,F_CODDEP|RESET,F_DESDEP
|
||||||
|
MESSAGE ENABLE,F_CODDEP|ENABLE,F_DESDEP
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESMAG 50
|
||||||
|
BEGIN
|
||||||
|
FLAGS "U"
|
||||||
|
PROMPT 20 18 ""
|
||||||
|
USE MAG KEY 2
|
||||||
|
INPUT S0 F_DESMAG
|
||||||
|
COPY DISPLAY F_CODMAG
|
||||||
|
COPY OUTPUT F_CODMAG
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
STRING F_CODDEP 2
|
||||||
|
BEGIN
|
||||||
|
FLAGS "U"
|
||||||
|
PROMPT 2 19 "Deposito "
|
||||||
|
FIELD S7[4,5]
|
||||||
|
USE MAG // SELECT CODTAB[4,5]!=""
|
||||||
|
INPUT CODTAB[1,3] F_CODMAG
|
||||||
|
INPUT CODTAB[4,5] F_CODDEP
|
||||||
|
DISPLAY "Cod.Mag." CODTAB[1,3]
|
||||||
|
DISPLAY "Cod.Dep" CODTAB[4,5]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_CODMAG CODTAB[1,3]
|
||||||
|
OUTPUT F_CODDEP CODTAB[4,5]
|
||||||
|
OUTPUT F_DESDEP S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
MESSAGE EMPTY RESET,F_DESDEP
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESDEP 50
|
||||||
|
BEGIN
|
||||||
|
FLAGS "U"
|
||||||
|
PROMPT 20 19 ""
|
||||||
|
USE MAG KEY 2
|
||||||
|
INPUT S0 F_DESDEP
|
||||||
|
COPY DISPLAY F_CODDEP
|
||||||
|
COPY OUTPUT F_CODDEP
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Calendario" -1 -1 65 15
|
PAGE "Calendario" -1 -1 65 15
|
||||||
|
BIN
mr/selordf.bmp
Executable file
After Width: | Height: | Size: 958 B |
BIN
mr/selordp.bmp
Executable file
After Width: | Height: | Size: 958 B |