Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : mr0100.cpp Gestione tabelle IMP ed LNP mrplib.* Gestione calendari: lettura, scrittura, cancellazione mrtbimp.uml Tabella impianti mrtblnp.uml Tabella linee di produzione mrtblnp.h Simboli comuni alle due tabelle precedenti git-svn-id: svn://10.65.10.50/trunk@7160 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
044adbb207
commit
899baaebcb
177
mr/mr0100.cpp
177
mr/mr0100.cpp
@ -23,45 +23,92 @@ protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
bool init_calendar();
|
||||
bool save_calendar() const;
|
||||
bool remove_calendar() const;
|
||||
|
||||
TMRP_mask(const char* name, int num = 0);
|
||||
virtual ~TMRP_mask();
|
||||
};
|
||||
|
||||
bool TMRP_mask::init_calendar()
|
||||
{
|
||||
bool changed = FALSE;
|
||||
TString16 lin, imp;
|
||||
if (app().get_tabname() == "LNP")
|
||||
{
|
||||
switch (get(F_TYPE)[0])
|
||||
{
|
||||
case 'L': lin = get(F_CODICE); imp = get(F_IMPIANTO); break;
|
||||
case 'I': imp = get(F_IMPIANTO); break;
|
||||
default : break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (get(F_TYPE) == "I")
|
||||
imp = get(F_CODICE);
|
||||
}
|
||||
|
||||
TCalendar_field& cf = (TCalendar_field&)field(F_CALENDAR);
|
||||
|
||||
if (_calendar == NULL)
|
||||
{
|
||||
_calendar = new TMRP_calendar(lin, imp);
|
||||
changed = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_calendar->linea() != lin || _calendar->impianto() != imp)
|
||||
{
|
||||
if (cf.dirty())
|
||||
{
|
||||
TString str(80);
|
||||
str = "Il calendario ";
|
||||
switch (_calendar->tipo())
|
||||
{
|
||||
case 'L': str << "della linea " << _calendar->linea(); break;
|
||||
case 'I': str << "del impianto " << _calendar->impianto(); break;
|
||||
default : str << "standard"; break;
|
||||
}
|
||||
str << " e' stato modificato:\nsi desidera salvare le modifiche effettuate?";
|
||||
if (yesno_box(str))
|
||||
_calendar->rewrite();
|
||||
}
|
||||
|
||||
_calendar->set(lin, imp);
|
||||
cf.set_dirty(FALSE);
|
||||
changed = TRUE;
|
||||
}
|
||||
}
|
||||
cf.set_calendar(_calendar, get_int(F_YEAR));
|
||||
return changed;
|
||||
}
|
||||
|
||||
bool TMRP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
const TString16 tn = app().get_tabname();
|
||||
const TString& tn = app().get_tabname();
|
||||
if (tn == "IMP" || tn == "LNP")
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_CODICE:
|
||||
case F_IMPIANTO:
|
||||
if (e == fe_close && o.empty())
|
||||
{
|
||||
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_TYPE:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TString16 lin, imp;
|
||||
if (tn == "LNP")
|
||||
if (init_calendar())
|
||||
{
|
||||
switch (get(F_TYPE)[0])
|
||||
{
|
||||
case 'L': lin = get(F_CODICE); imp = get(F_IMPIANTO); break;
|
||||
case 'I': imp = get(F_IMPIANTO); break;
|
||||
default : break;
|
||||
}
|
||||
TCalendar_field& cf = (TCalendar_field&)field(F_CALENDAR);
|
||||
cf.win().force_update();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (get(F_TYPE) == "I")
|
||||
imp = get(F_CODICE);
|
||||
}
|
||||
if (_calendar == NULL)
|
||||
_calendar = new TMRP_calendar(lin, imp);
|
||||
else
|
||||
_calendar->set(lin, imp);
|
||||
|
||||
TCalendar_field& cf = (TCalendar_field&)field(F_CALENDAR);
|
||||
cf.set_calendar(_calendar, get_int(F_YEAR));
|
||||
cf.win().force_update();
|
||||
}
|
||||
break;
|
||||
case F_YEAR:
|
||||
@ -80,10 +127,39 @@ bool TMRP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TMRP_mask::save_calendar() const
|
||||
{
|
||||
if (_calendar != NULL)
|
||||
{
|
||||
TCalendar_field& cf = (TCalendar_field&)field(F_CALENDAR);
|
||||
if (cf.dirty())
|
||||
_calendar->rewrite();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TMRP_mask::remove_calendar() const
|
||||
{
|
||||
if (_calendar != NULL)
|
||||
{
|
||||
const TString& tn = app().get_tabname();
|
||||
const char tipo = tn[0];
|
||||
if (_calendar->tipo() != tipo)
|
||||
{
|
||||
if (tipo == 'L')
|
||||
_calendar->set(get(F_CODICE), get(F_IMPIANTO));
|
||||
else
|
||||
_calendar->set(NULL, get(F_CODICE));
|
||||
CHECK(_calendar->tipo() == tipo, "Tipo calendario incongruente");
|
||||
}
|
||||
_calendar->remove();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
TMRP_mask::TMRP_mask(const char* name, int num)
|
||||
: TCalendar_mask(name, num), _calendar(NULL)
|
||||
{
|
||||
set_handlers();
|
||||
}
|
||||
|
||||
TMRP_mask::~TMRP_mask()
|
||||
@ -101,6 +177,14 @@ class TMRPtables : public TTable_application
|
||||
protected:
|
||||
virtual TString& get_mask_name(TString& name) const;
|
||||
virtual TMask* set_mask(TMask* m);
|
||||
|
||||
virtual int write(const TMask& m);
|
||||
virtual int rewrite(const TMask& m);
|
||||
virtual bool remove();
|
||||
|
||||
public:
|
||||
void save_calendar(const TMask& m);
|
||||
void remove_calendar(const TMask& m);
|
||||
};
|
||||
|
||||
TString& TMRPtables::get_mask_name(TString& name) const
|
||||
@ -120,6 +204,51 @@ TMask* TMRPtables::set_mask(TMask* m)
|
||||
return TTable_application::set_mask(m);
|
||||
}
|
||||
|
||||
void TMRPtables::save_calendar(const TMask& m)
|
||||
{
|
||||
const TString& tn = get_tabname();
|
||||
if (tn == "IMP" || tn == "LNP")
|
||||
{
|
||||
const TMRP_mask& cm = (const TMRP_mask&)m;
|
||||
cm.save_calendar();
|
||||
}
|
||||
}
|
||||
|
||||
void TMRPtables::remove_calendar(const TMask& m)
|
||||
{
|
||||
const TString& tn = get_tabname();
|
||||
if (tn == "IMP" || tn == "LNP")
|
||||
{
|
||||
const TMRP_mask& cm = (const TMRP_mask&)m;
|
||||
cm.remove_calendar();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int TMRPtables::write(const TMask& m)
|
||||
{
|
||||
const int err = TTable_application::write(m);
|
||||
if (err == NOERR)
|
||||
save_calendar(m);
|
||||
return err;
|
||||
}
|
||||
|
||||
int TMRPtables::rewrite(const TMask& m)
|
||||
{
|
||||
const int err = TTable_application::rewrite(m);
|
||||
if (err == NOERR)
|
||||
save_calendar(m);
|
||||
return err;
|
||||
}
|
||||
|
||||
bool TMRPtables::remove()
|
||||
{
|
||||
const bool ok = TTable_application::remove();
|
||||
if (ok)
|
||||
remove_calendar(curr_mask());
|
||||
return ok;
|
||||
}
|
||||
|
||||
int mr0100(int argc, char* argv[])
|
||||
{
|
||||
if (argc > 2)
|
||||
|
212
mr/mrplib.cpp
212
mr/mrplib.cpp
@ -38,7 +38,7 @@ bool TMRP_calendar::is_red(const TDate& date) const
|
||||
return is_holiday(date);
|
||||
}
|
||||
|
||||
void TMRP_calendar::add_holiday(int g, int m)
|
||||
void TMRP_calendar::declare_holiday(int g, int m)
|
||||
{
|
||||
if (!is_holiday(g, m))
|
||||
{
|
||||
@ -62,18 +62,87 @@ void TMRP_calendar::suppress_holiday(int g, int m)
|
||||
void TMRP_calendar::read_cal(const TString& key, char tipo)
|
||||
{
|
||||
TTable cal(tipo == 'L' ? "CAL" : "CAI");
|
||||
cal.put("CODTAB", key);
|
||||
TString80 s1;
|
||||
TString16 codtab = tipo == 'L' ? _codlin : _codimp;
|
||||
codtab << key;
|
||||
cal.put("CODTAB", codtab);
|
||||
TString* s1 = new TString(62);
|
||||
if (cal.read() == NOERR)
|
||||
s1 = cal.get("S1");
|
||||
s1.left_just(62);
|
||||
*s1 = cal.get("S1");
|
||||
const int l1 = s1->len();
|
||||
if (l1 < s1->size())
|
||||
{
|
||||
const TString spc(s1->size()-l1, ' ');
|
||||
*s1 << spc;
|
||||
}
|
||||
if (tipo == 'L')
|
||||
_exc_lin.add(key, s1);
|
||||
else
|
||||
_exc_imp.add(key, s1);
|
||||
}
|
||||
|
||||
int TMRP_calendar::turni(const TDate& data, int& mini, int& maxi)
|
||||
int TMRP_calendar::write_cal(char tipo) const
|
||||
{
|
||||
int err = NOERR;
|
||||
TTable cal((tipo == 'L') ? "CAL" : "CAI");
|
||||
TAssoc_array& ass = tipo == 'L' ? ((TMRP_calendar*)this)->_exc_lin
|
||||
: ((TMRP_calendar*)this)->_exc_imp;
|
||||
TString codtab, s0;
|
||||
FOR_EACH_ASSOC_STRING(ass, hash, key, str)
|
||||
{
|
||||
codtab = tipo == 'L' ? _codlin : _codimp;
|
||||
codtab.left_just(5); codtab << key;
|
||||
cal.zero();
|
||||
cal.put("CODTAB", codtab);
|
||||
const TFixed_string s1(str);
|
||||
if (!s1.blank())
|
||||
{
|
||||
const int anno = atoi(codtab.mid(5, 4));
|
||||
const int mese = atoi(codtab.mid(9, 2));
|
||||
if (tipo == 'L')
|
||||
{
|
||||
s0 = "Linea ";
|
||||
s0 << _codlin;
|
||||
}
|
||||
else
|
||||
{
|
||||
s0 = "Impianto ";
|
||||
s0 << _codimp;
|
||||
}
|
||||
s0 << ' ' << anno << ' ' << itom(mese);
|
||||
cal.put("S0", s0);
|
||||
cal.put("S1", s1);
|
||||
err = cal.write();
|
||||
if (err != NOERR)
|
||||
err = cal.rewrite();
|
||||
if (err != NOERR)
|
||||
{
|
||||
error_box("Errore %d nell'aggiornamento del calendario %s",
|
||||
err, (const char*)codtab);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
err = cal.remove();
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int TMRP_calendar::remove_cal(const TString& code, char tipo) const
|
||||
{
|
||||
TTable cal(tipo == 'L' ? "CAL" : "CAI");
|
||||
TString16 codtab = code; codtab.left_just(5);
|
||||
cal.put("CODTAB", codtab);
|
||||
for (int err = cal.read(_isgteq); err == NOERR; err = cal.next())
|
||||
{
|
||||
if (codtab == cal.get("CODTAB").left(5))
|
||||
cal.remove();
|
||||
else
|
||||
break;
|
||||
}
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
int TMRP_calendar::turni(const TDate& data, int& mini, int& maxi, bool as_is)
|
||||
{
|
||||
const int year = data.year();
|
||||
const int month = data.month();
|
||||
@ -83,29 +152,30 @@ int TMRP_calendar::turni(const TDate& data, int& mini, int& maxi)
|
||||
mini = maxi = -1;
|
||||
if (_codlin.not_empty())
|
||||
{
|
||||
str.format("%5s%4d%02d", _codlin, year, month);
|
||||
str.format("%04d%02d", year, month);
|
||||
if (_exc_lin.objptr(str) == NULL)
|
||||
read_cal(str, 'L');
|
||||
|
||||
const TString& turn = (const TString&)_exc_lin[str];
|
||||
mini = turn[day] - '0';
|
||||
maxi = turn[day+31] - '0';
|
||||
mini = turn[day-1] - '0';
|
||||
maxi = turn[day+30] - '0';
|
||||
if (as_is || (mini >= 0 && maxi >= 0))
|
||||
return 3;
|
||||
}
|
||||
if (mini >= 0 && maxi >= 0)
|
||||
return 3;
|
||||
|
||||
if (_codimp.not_empty())
|
||||
{
|
||||
str.format("%5s%4d%02d", _codimp, year, month);
|
||||
str.format("%04d%02d", year, month);
|
||||
if (_exc_imp.objptr(str) == NULL)
|
||||
read_cal(str, 'I');
|
||||
|
||||
const TString& turn = (const TString&)_exc_imp[str];
|
||||
mini = turn[day] - '0';
|
||||
maxi = turn[day+31] - '0';
|
||||
mini = turn[day-1] - '0';
|
||||
maxi = turn[day+30] - '0';
|
||||
|
||||
if (as_is || (mini >= 0 && maxi >= 0))
|
||||
return 2;
|
||||
}
|
||||
if (mini >= 0 && maxi >= 0)
|
||||
return 2;
|
||||
|
||||
if (_days.empty())
|
||||
init_default();
|
||||
@ -121,13 +191,13 @@ int TMRP_calendar::turni(const TDate& data, int& mini, int& maxi)
|
||||
if (data == festa)
|
||||
{
|
||||
if (mini < 0) mini = _days[7] - '0';
|
||||
if (maxi < 0) maxi = _days[7] - '0';
|
||||
if (maxi < 0) maxi = _days[15] - '0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (mini >= 0 && maxi >= 0)
|
||||
return 1;
|
||||
}
|
||||
if (mini >= 0 && maxi >= 0)
|
||||
return 1;
|
||||
|
||||
// Usa giorni default
|
||||
const int giorno = data.wday() - 1;
|
||||
@ -145,36 +215,36 @@ int TMRP_calendar::set_turni(const TDate& data, int mini, int maxi)
|
||||
|
||||
if (_codlin.not_empty())
|
||||
{
|
||||
str.format("%5s%4d%02d", _codlin, year, month);
|
||||
str.format("%04d%02d", year, month);
|
||||
if (_exc_lin.objptr(str) == NULL)
|
||||
read_cal(str, 'L');
|
||||
TString& turn = (TString&)_exc_lin[str];
|
||||
|
||||
if (mini >= 0 && mini <= 9)
|
||||
turn[day] = '0' + mini;
|
||||
turn[day-1] = '0' + mini;
|
||||
else
|
||||
turn[day] = ' ';
|
||||
turn[day-1] = ' ';
|
||||
if (maxi >= 0 && maxi <= 9)
|
||||
turn[day+31] = '0' + maxi;
|
||||
turn[day+30] = '0' + maxi;
|
||||
else
|
||||
turn[day+31] = ' ';
|
||||
turn[day+30] = ' ';
|
||||
return 3;
|
||||
}
|
||||
|
||||
if (_codimp.not_empty())
|
||||
{
|
||||
str.format("%5s%4d%02d", _codimp, year, month);
|
||||
str.format("%04d%02d", year, month);
|
||||
if (_exc_imp.objptr(str) == NULL)
|
||||
read_cal(str, 'I');
|
||||
TString& turn = (TString&)_exc_imp[str];
|
||||
if (mini >= 0 && mini <= 9)
|
||||
turn[day] = '0' + mini;
|
||||
turn[day-1] = '0' + mini;
|
||||
else
|
||||
turn[day] = ' ';
|
||||
turn[day-1] = ' ';
|
||||
if (maxi >= 0 && maxi <= 9)
|
||||
turn[day+31] = '0' + maxi;
|
||||
turn[day+30] = '0' + maxi;
|
||||
else
|
||||
turn[day+31] = ' ';
|
||||
turn[day+30] = ' ';
|
||||
return 2;
|
||||
}
|
||||
|
||||
@ -203,10 +273,12 @@ int TMRP_calendar::set_turni(const TDate& data, int mini, int maxi)
|
||||
}
|
||||
|
||||
const int giorno = data.wday() - 1;
|
||||
|
||||
if (mini >= 0 && mini <= 9)
|
||||
_days[giorno] = '0' + mini;
|
||||
else
|
||||
_days[giorno] = '0';
|
||||
|
||||
if (maxi >= 0 && maxi <= 9)
|
||||
_days[giorno+8] = '0' + maxi;
|
||||
else
|
||||
@ -215,53 +287,27 @@ int TMRP_calendar::set_turni(const TDate& data, int mini, int maxi)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int TMRP_calendar::write()
|
||||
int TMRP_calendar::write() const
|
||||
{
|
||||
int err = NOERR;
|
||||
if (!_codlin.blank())
|
||||
return write_cal('L');
|
||||
|
||||
if (_codlin.not_empty())
|
||||
{
|
||||
TTable cal("CAL");
|
||||
FOR_EACH_ASSOC_STRING(_exc_lin, hash, key, str)
|
||||
{
|
||||
cal.put("CODTAB", key);
|
||||
cal.put("S1", str);
|
||||
err = cal.rewrite();
|
||||
if (err != NOERR)
|
||||
err = cal.write();
|
||||
if (err != NOERR)
|
||||
{
|
||||
error_box("Errore %d nell'aggiornamento del calendario.", err);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
if (_codimp.not_empty())
|
||||
{
|
||||
TTable cal("CAI");
|
||||
FOR_EACH_ASSOC_STRING(_exc_imp, hash, key, str)
|
||||
{
|
||||
cal.put("CODTAB", key);
|
||||
cal.put("S1", (const TString&)_exc_imp[key]);
|
||||
err = cal.rewrite();
|
||||
if (err != NOERR)
|
||||
err = cal.write();
|
||||
if (err != NOERR)
|
||||
{
|
||||
error_box("Errore %d nell'aggiornamento del calendario.", err);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
if (!_codimp.blank())
|
||||
return write_cal('I');
|
||||
|
||||
TConfig cfg(CONFIG_DITTA, "mr");
|
||||
cfg.set("Turni", _days);
|
||||
cfg.set("Feste", _holidays);
|
||||
|
||||
return err;
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
int TMRP_calendar::remove() const
|
||||
{
|
||||
if (_codlin.not_empty())
|
||||
return remove_cal(_codlin, 'L');
|
||||
if (_codimp.not_empty())
|
||||
return remove_cal(_codimp, 'I');
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
void TMRP_calendar::set(const char* linea, const char* impianto)
|
||||
@ -278,7 +324,7 @@ void TMRP_calendar::set(const char* linea, const char* impianto)
|
||||
lnp.put("CODTAB", _codlin);
|
||||
if (lnp.read() == NOERR)
|
||||
{
|
||||
if (_codimp.empty())
|
||||
if (impianto == NULL)
|
||||
_codimp = lnp.get("S6");
|
||||
}
|
||||
else
|
||||
@ -293,6 +339,15 @@ void TMRP_calendar::set(const char* linea, const char* impianto)
|
||||
}
|
||||
}
|
||||
|
||||
char TMRP_calendar::tipo() const
|
||||
{
|
||||
if (!_codlin.blank())
|
||||
return 'L';
|
||||
if (!_codimp.blank())
|
||||
return 'I';
|
||||
return 'S';
|
||||
}
|
||||
|
||||
TMRP_calendar::TMRP_calendar(const char* linea, const char* impianto)
|
||||
{
|
||||
set(linea, impianto);
|
||||
@ -313,6 +368,7 @@ protected:
|
||||
|
||||
public:
|
||||
void set_calendar(TMRP_calendar* cal, int year = 0);
|
||||
TMRP_calendar* get_calendar() { return _calendario; }
|
||||
|
||||
TCalendar_win(int x, int y, int dx, int dy,
|
||||
WINDOW parent, TWindowed_field* owner);
|
||||
@ -341,6 +397,8 @@ void TCalendar_win::handler(WINDOW win, EVENT* ep)
|
||||
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");
|
||||
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");
|
||||
m.add_number(106, 0, "= ", 31, 3, 1, "D");
|
||||
m.add_number(107, 0, "= ", 31, 4, 1, "D");
|
||||
|
||||
m.add_button(DLG_OK, 0, "", -12, -1, 10, 2);
|
||||
m.add_button(DLG_CANCEL, 0, "", -22, -1, 10, 2);
|
||||
@ -349,9 +407,13 @@ void TCalendar_win::handler(WINDOW win, EVENT* ep)
|
||||
m.set(101, d.string());
|
||||
m.set(102, itow(d.wday()));
|
||||
m.set(103, festa ? "X" : "");
|
||||
int mini, maxi; _calendario->turni(d, mini, maxi);
|
||||
int mini, maxi;
|
||||
_calendario->turni(d, mini, maxi, TRUE);
|
||||
m.set(104, mini);
|
||||
m.set(105, maxi);
|
||||
_calendario->turni(d, mini, maxi, FALSE);
|
||||
m.set(106, mini);
|
||||
m.set(107, maxi);
|
||||
if (m.run() == K_ENTER && m.dirty())
|
||||
{
|
||||
const char mi = m.get(104)[0];
|
||||
@ -364,11 +426,11 @@ void TCalendar_win::handler(WINDOW win, EVENT* ep)
|
||||
if (fe != festa)
|
||||
{
|
||||
if (fe)
|
||||
_calendario->add_holiday(d.day(), d.month());
|
||||
_calendario->declare_holiday(d.day(), d.month());
|
||||
else
|
||||
_calendario->suppress_holiday(d.day(), d.month());
|
||||
}
|
||||
|
||||
owner().set_dirty();
|
||||
force_update();
|
||||
}
|
||||
}
|
||||
@ -470,7 +532,6 @@ TField_window* TCalendar_field::create_window(int x, int y, int dx, int dy, WIND
|
||||
return new TCalendar_win(x, y, dx, dy, parent, this);
|
||||
}
|
||||
|
||||
|
||||
void TCalendar_field::set_calendar(TMRP_calendar* cal, int year)
|
||||
{
|
||||
TCalendar_win& cw = (TCalendar_win&)win();
|
||||
@ -492,5 +553,6 @@ TMask_field* TCalendar_mask::parse_field(TScanner& scanner)
|
||||
TCalendar_mask::TCalendar_mask(const char* name, int num)
|
||||
{
|
||||
read_mask(name, num, 0);
|
||||
set_handlers();
|
||||
}
|
||||
|
||||
|
17
mr/mrplib.h
17
mr/mrplib.h
@ -15,9 +15,11 @@ class TMRP_calendar : public TObject
|
||||
protected:
|
||||
void init_default();
|
||||
void read_cal(const TString& key, char tipo);
|
||||
int write_cal(char tipo) const;
|
||||
int remove_cal(const TString& code, char tipo) const;
|
||||
|
||||
public:
|
||||
int turni(const TDate& date, int& mini, int& maxi);
|
||||
int turni(const TDate& date, int& mini, int& maxi, bool as_is = FALSE);
|
||||
|
||||
int turni_min(const TDate& date)
|
||||
{ int mini, maxi; turni(date, mini, maxi); return mini; }
|
||||
@ -27,16 +29,20 @@ public:
|
||||
|
||||
int set_turni(const TDate& date, int mini, int maxi);
|
||||
|
||||
int write();
|
||||
int rewrite() { return write(); }
|
||||
int write() const;
|
||||
int rewrite() const { return write(); }
|
||||
int remove() const;
|
||||
|
||||
void add_holiday(int g, int m);
|
||||
void declare_holiday(int g, int m);
|
||||
void suppress_holiday(int g, int m);
|
||||
bool is_holiday(int g, int m) const;
|
||||
bool is_holiday(const TDate& date) const;
|
||||
bool is_red(const TDate& date) const;
|
||||
|
||||
void set(const char* linea, const char* impianto);
|
||||
void set(const char* linea = NULL, const char* impianto = NULL);
|
||||
const TString& linea() const { return _codlin; }
|
||||
const TString& impianto() const { return _codimp; }
|
||||
char tipo() const;
|
||||
|
||||
TMRP_calendar(const char* linea = NULL, const char* impianto = NULL);
|
||||
virtual ~TMRP_calendar() { }
|
||||
@ -58,6 +64,7 @@ class TCalendar_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual TMask_field* parse_field(TScanner& scanner);
|
||||
|
||||
public:
|
||||
TCalendar_mask(const char* name, int num = 0);
|
||||
virtual ~TCalendar_mask() {};
|
||||
|
@ -1,10 +1,11 @@
|
||||
#include "mrtbimp.h"
|
||||
#include "mrtblnp.h"
|
||||
|
||||
TOOLBAR "" 0 19 80 3
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella IMP" -1 -1 65 15
|
||||
PAGE "Impianti" -1 -1 65 15
|
||||
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
@ -41,4 +42,27 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Calendario" -1 -1 65 15
|
||||
|
||||
NUMBER F_YEAR 4
|
||||
BEGIN
|
||||
PROMPT 1 1 "Anno "
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_TYPE 28
|
||||
BEGIN
|
||||
PROMPT 16 0 ""
|
||||
ITEM "I|Impianto"
|
||||
ITEM "S|Standard"
|
||||
FLAGS "Z"
|
||||
END
|
||||
|
||||
CALENDAR F_CALENDAR -3 -1
|
||||
BEGIN
|
||||
PROMPT 0 2 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
@ -6,9 +6,7 @@
|
||||
|
||||
#define F_IMPIANTO 103
|
||||
#define F_DESCIMPIANTO 104
|
||||
|
||||
#define F_PERSONE 105
|
||||
#define F_TURNI 106
|
||||
|
||||
#define F_YEAR 201
|
||||
#define F_TYPE 202
|
||||
|
@ -52,6 +52,7 @@ BEGIN
|
||||
OUTPUT F_DESCIMPIANTO S0
|
||||
CHECKTYPE NORMAL
|
||||
FIELD S6
|
||||
WARNING "Impianto assente"
|
||||
END
|
||||
|
||||
STRING F_DESCIMPIANTO 50
|
||||
@ -62,7 +63,8 @@ BEGIN
|
||||
DISPLAY "Codice@20" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
COPY OUTPUT F_IMPIANTO
|
||||
CHECKTYPE REQUIRED
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Impianto assente"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
@ -77,13 +79,6 @@ BEGIN
|
||||
FIELD I0
|
||||
END
|
||||
|
||||
NUMBER F_TURNI 1
|
||||
BEGIN
|
||||
PROMPT 2 8 "Turni standard "
|
||||
FLAGS "U"
|
||||
FIELD I1
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Calendario" -1 -1 65 15
|
||||
@ -94,12 +89,13 @@ BEGIN
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
LIST F_TYPE 1 10
|
||||
RADIOBUTTON F_TYPE 42
|
||||
BEGIN
|
||||
PROMPT 21 1 "Tipo "
|
||||
PROMPT 16 0 ""
|
||||
ITEM "L|Linea"
|
||||
ITEM "I|Impianto"
|
||||
ITEM "S|Standard"
|
||||
FLAGS "Z"
|
||||
END
|
||||
|
||||
CALENDAR F_CALENDAR -3 -1
|
||||
@ -107,7 +103,6 @@ BEGIN
|
||||
PROMPT 0 2 ""
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user