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);
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
bool init_calendar();
|
||||||
|
bool save_calendar() const;
|
||||||
|
bool remove_calendar() const;
|
||||||
|
|
||||||
TMRP_mask(const char* name, int num = 0);
|
TMRP_mask(const char* name, int num = 0);
|
||||||
virtual ~TMRP_mask();
|
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)
|
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")
|
if (tn == "IMP" || tn == "LNP")
|
||||||
{
|
{
|
||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
case F_CODICE:
|
|
||||||
case F_IMPIANTO:
|
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:
|
case F_TYPE:
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
{
|
{
|
||||||
TString16 lin, imp;
|
if (init_calendar())
|
||||||
if (tn == "LNP")
|
|
||||||
{
|
{
|
||||||
switch (get(F_TYPE)[0])
|
TCalendar_field& cf = (TCalendar_field&)field(F_CALENDAR);
|
||||||
{
|
cf.win().force_update();
|
||||||
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);
|
|
||||||
}
|
|
||||||
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;
|
break;
|
||||||
case F_YEAR:
|
case F_YEAR:
|
||||||
@ -80,10 +127,39 @@ bool TMRP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
return TRUE;
|
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)
|
TMRP_mask::TMRP_mask(const char* name, int num)
|
||||||
: TCalendar_mask(name, num), _calendar(NULL)
|
: TCalendar_mask(name, num), _calendar(NULL)
|
||||||
{
|
{
|
||||||
set_handlers();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TMRP_mask::~TMRP_mask()
|
TMRP_mask::~TMRP_mask()
|
||||||
@ -101,6 +177,14 @@ class TMRPtables : public TTable_application
|
|||||||
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 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
|
TString& TMRPtables::get_mask_name(TString& name) const
|
||||||
@ -120,6 +204,51 @@ TMask* TMRPtables::set_mask(TMask* m)
|
|||||||
return TTable_application::set_mask(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[])
|
int mr0100(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
if (argc > 2)
|
if (argc > 2)
|
||||||
|
210
mr/mrplib.cpp
210
mr/mrplib.cpp
@ -38,7 +38,7 @@ bool TMRP_calendar::is_red(const TDate& date) const
|
|||||||
return is_holiday(date);
|
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))
|
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)
|
void TMRP_calendar::read_cal(const TString& key, char tipo)
|
||||||
{
|
{
|
||||||
TTable cal(tipo == 'L' ? "CAL" : "CAI");
|
TTable cal(tipo == 'L' ? "CAL" : "CAI");
|
||||||
cal.put("CODTAB", key);
|
TString16 codtab = tipo == 'L' ? _codlin : _codimp;
|
||||||
TString80 s1;
|
codtab << key;
|
||||||
|
cal.put("CODTAB", codtab);
|
||||||
|
TString* s1 = new TString(62);
|
||||||
if (cal.read() == NOERR)
|
if (cal.read() == NOERR)
|
||||||
s1 = cal.get("S1");
|
*s1 = cal.get("S1");
|
||||||
s1.left_just(62);
|
const int l1 = s1->len();
|
||||||
|
if (l1 < s1->size())
|
||||||
|
{
|
||||||
|
const TString spc(s1->size()-l1, ' ');
|
||||||
|
*s1 << spc;
|
||||||
|
}
|
||||||
if (tipo == 'L')
|
if (tipo == 'L')
|
||||||
_exc_lin.add(key, s1);
|
_exc_lin.add(key, s1);
|
||||||
else
|
else
|
||||||
_exc_imp.add(key, s1);
|
_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 year = data.year();
|
||||||
const int month = data.month();
|
const int month = data.month();
|
||||||
@ -83,29 +152,30 @@ int TMRP_calendar::turni(const TDate& data, int& mini, int& maxi)
|
|||||||
mini = maxi = -1;
|
mini = maxi = -1;
|
||||||
if (_codlin.not_empty())
|
if (_codlin.not_empty())
|
||||||
{
|
{
|
||||||
str.format("%5s%4d%02d", _codlin, year, month);
|
str.format("%04d%02d", year, month);
|
||||||
if (_exc_lin.objptr(str) == NULL)
|
if (_exc_lin.objptr(str) == NULL)
|
||||||
read_cal(str, 'L');
|
read_cal(str, 'L');
|
||||||
|
|
||||||
const TString& turn = (const TString&)_exc_lin[str];
|
const TString& turn = (const TString&)_exc_lin[str];
|
||||||
mini = turn[day] - '0';
|
mini = turn[day-1] - '0';
|
||||||
maxi = turn[day+31] - '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())
|
if (_codimp.not_empty())
|
||||||
{
|
{
|
||||||
str.format("%5s%4d%02d", _codimp, year, month);
|
str.format("%04d%02d", year, month);
|
||||||
if (_exc_imp.objptr(str) == NULL)
|
if (_exc_imp.objptr(str) == NULL)
|
||||||
read_cal(str, 'I');
|
read_cal(str, 'I');
|
||||||
|
|
||||||
const TString& turn = (const TString&)_exc_imp[str];
|
const TString& turn = (const TString&)_exc_imp[str];
|
||||||
mini = turn[day] - '0';
|
mini = turn[day-1] - '0';
|
||||||
maxi = turn[day+31] - '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())
|
if (_days.empty())
|
||||||
init_default();
|
init_default();
|
||||||
@ -121,13 +191,13 @@ int TMRP_calendar::turni(const TDate& data, int& mini, int& maxi)
|
|||||||
if (data == festa)
|
if (data == festa)
|
||||||
{
|
{
|
||||||
if (mini < 0) mini = _days[7] - '0';
|
if (mini < 0) mini = _days[7] - '0';
|
||||||
if (maxi < 0) maxi = _days[7] - '0';
|
if (maxi < 0) maxi = _days[15] - '0';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (mini >= 0 && maxi >= 0)
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
if (mini >= 0 && maxi >= 0)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
// Usa giorni default
|
// Usa giorni default
|
||||||
const int giorno = data.wday() - 1;
|
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())
|
if (_codlin.not_empty())
|
||||||
{
|
{
|
||||||
str.format("%5s%4d%02d", _codlin, year, month);
|
str.format("%04d%02d", year, month);
|
||||||
if (_exc_lin.objptr(str) == NULL)
|
if (_exc_lin.objptr(str) == NULL)
|
||||||
read_cal(str, 'L');
|
read_cal(str, 'L');
|
||||||
TString& turn = (TString&)_exc_lin[str];
|
TString& turn = (TString&)_exc_lin[str];
|
||||||
|
|
||||||
if (mini >= 0 && mini <= 9)
|
if (mini >= 0 && mini <= 9)
|
||||||
turn[day] = '0' + mini;
|
turn[day-1] = '0' + mini;
|
||||||
else
|
else
|
||||||
turn[day] = ' ';
|
turn[day-1] = ' ';
|
||||||
if (maxi >= 0 && maxi <= 9)
|
if (maxi >= 0 && maxi <= 9)
|
||||||
turn[day+31] = '0' + maxi;
|
turn[day+30] = '0' + maxi;
|
||||||
else
|
else
|
||||||
turn[day+31] = ' ';
|
turn[day+30] = ' ';
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_codimp.not_empty())
|
if (_codimp.not_empty())
|
||||||
{
|
{
|
||||||
str.format("%5s%4d%02d", _codimp, year, month);
|
str.format("%04d%02d", year, month);
|
||||||
if (_exc_imp.objptr(str) == NULL)
|
if (_exc_imp.objptr(str) == NULL)
|
||||||
read_cal(str, 'I');
|
read_cal(str, 'I');
|
||||||
TString& turn = (TString&)_exc_imp[str];
|
TString& turn = (TString&)_exc_imp[str];
|
||||||
if (mini >= 0 && mini <= 9)
|
if (mini >= 0 && mini <= 9)
|
||||||
turn[day] = '0' + mini;
|
turn[day-1] = '0' + mini;
|
||||||
else
|
else
|
||||||
turn[day] = ' ';
|
turn[day-1] = ' ';
|
||||||
if (maxi >= 0 && maxi <= 9)
|
if (maxi >= 0 && maxi <= 9)
|
||||||
turn[day+31] = '0' + maxi;
|
turn[day+30] = '0' + maxi;
|
||||||
else
|
else
|
||||||
turn[day+31] = ' ';
|
turn[day+30] = ' ';
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,10 +273,12 @@ int TMRP_calendar::set_turni(const TDate& data, int mini, int maxi)
|
|||||||
}
|
}
|
||||||
|
|
||||||
const int giorno = data.wday() - 1;
|
const int giorno = data.wday() - 1;
|
||||||
|
|
||||||
if (mini >= 0 && mini <= 9)
|
if (mini >= 0 && mini <= 9)
|
||||||
_days[giorno] = '0' + mini;
|
_days[giorno] = '0' + mini;
|
||||||
else
|
else
|
||||||
_days[giorno] = '0';
|
_days[giorno] = '0';
|
||||||
|
|
||||||
if (maxi >= 0 && maxi <= 9)
|
if (maxi >= 0 && maxi <= 9)
|
||||||
_days[giorno+8] = '0' + maxi;
|
_days[giorno+8] = '0' + maxi;
|
||||||
else
|
else
|
||||||
@ -215,53 +287,27 @@ int TMRP_calendar::set_turni(const TDate& data, int mini, int maxi)
|
|||||||
return 0;
|
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())
|
if (!_codimp.blank())
|
||||||
{
|
return write_cal('I');
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
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 err;
|
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)
|
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);
|
lnp.put("CODTAB", _codlin);
|
||||||
if (lnp.read() == NOERR)
|
if (lnp.read() == NOERR)
|
||||||
{
|
{
|
||||||
if (_codimp.empty())
|
if (impianto == NULL)
|
||||||
_codimp = lnp.get("S6");
|
_codimp = lnp.get("S6");
|
||||||
}
|
}
|
||||||
else
|
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)
|
TMRP_calendar::TMRP_calendar(const char* linea, const char* impianto)
|
||||||
{
|
{
|
||||||
set(linea, impianto);
|
set(linea, impianto);
|
||||||
@ -313,6 +368,7 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
void set_calendar(TMRP_calendar* cal, int year = 0);
|
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,
|
TCalendar_win(int x, int y, int dx, int dy,
|
||||||
WINDOW parent, TWindowed_field* owner);
|
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_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(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_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_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);
|
||||||
@ -349,9 +407,13 @@ void TCalendar_win::handler(WINDOW win, EVENT* ep)
|
|||||||
m.set(101, d.string());
|
m.set(101, d.string());
|
||||||
m.set(102, itow(d.wday()));
|
m.set(102, itow(d.wday()));
|
||||||
m.set(103, festa ? "X" : "");
|
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(104, mini);
|
||||||
m.set(105, maxi);
|
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())
|
if (m.run() == K_ENTER && m.dirty())
|
||||||
{
|
{
|
||||||
const char mi = m.get(104)[0];
|
const char mi = m.get(104)[0];
|
||||||
@ -364,11 +426,11 @@ void TCalendar_win::handler(WINDOW win, EVENT* ep)
|
|||||||
if (fe != festa)
|
if (fe != festa)
|
||||||
{
|
{
|
||||||
if (fe)
|
if (fe)
|
||||||
_calendario->add_holiday(d.day(), d.month());
|
_calendario->declare_holiday(d.day(), d.month());
|
||||||
else
|
else
|
||||||
_calendario->suppress_holiday(d.day(), d.month());
|
_calendario->suppress_holiday(d.day(), d.month());
|
||||||
}
|
}
|
||||||
|
owner().set_dirty();
|
||||||
force_update();
|
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);
|
return new TCalendar_win(x, y, dx, dy, parent, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TCalendar_field::set_calendar(TMRP_calendar* cal, int year)
|
void TCalendar_field::set_calendar(TMRP_calendar* cal, int year)
|
||||||
{
|
{
|
||||||
TCalendar_win& cw = (TCalendar_win&)win();
|
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)
|
TCalendar_mask::TCalendar_mask(const char* name, int num)
|
||||||
{
|
{
|
||||||
read_mask(name, num, 0);
|
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:
|
protected:
|
||||||
void init_default();
|
void init_default();
|
||||||
void read_cal(const TString& key, char tipo);
|
void read_cal(const TString& key, char tipo);
|
||||||
|
int write_cal(char tipo) const;
|
||||||
|
int remove_cal(const TString& code, char tipo) const;
|
||||||
|
|
||||||
public:
|
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 turni_min(const TDate& date)
|
||||||
{ int mini, maxi; turni(date, mini, maxi); return mini; }
|
{ 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 set_turni(const TDate& date, int mini, int maxi);
|
||||||
|
|
||||||
int write();
|
int write() const;
|
||||||
int rewrite() { return write(); }
|
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);
|
void suppress_holiday(int g, int m);
|
||||||
bool is_holiday(int g, int m) const;
|
bool is_holiday(int g, int m) const;
|
||||||
bool is_holiday(const TDate& date) const;
|
bool is_holiday(const TDate& date) const;
|
||||||
bool is_red(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);
|
TMRP_calendar(const char* linea = NULL, const char* impianto = NULL);
|
||||||
virtual ~TMRP_calendar() { }
|
virtual ~TMRP_calendar() { }
|
||||||
@ -58,6 +64,7 @@ class TCalendar_mask : public TAutomask
|
|||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
virtual TMask_field* parse_field(TScanner& scanner);
|
virtual TMask_field* parse_field(TScanner& scanner);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TCalendar_mask(const char* name, int num = 0);
|
TCalendar_mask(const char* name, int num = 0);
|
||||||
virtual ~TCalendar_mask() {};
|
virtual ~TCalendar_mask() {};
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
#include "mrtbimp.h"
|
#include "mrtblnp.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 19 80 3
|
TOOLBAR "" 0 19 80 3
|
||||||
#include <toolbar.h>
|
#include <toolbar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Tabella IMP" -1 -1 65 15
|
PAGE "Impianti" -1 -1 65 15
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 5
|
GROUPBOX DLG_NULL 78 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 ""
|
PROMPT 1 1 ""
|
||||||
@ -41,4 +42,27 @@ END
|
|||||||
|
|
||||||
ENDPAGE
|
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
|
ENDMASK
|
||||||
|
@ -6,9 +6,7 @@
|
|||||||
|
|
||||||
#define F_IMPIANTO 103
|
#define F_IMPIANTO 103
|
||||||
#define F_DESCIMPIANTO 104
|
#define F_DESCIMPIANTO 104
|
||||||
|
|
||||||
#define F_PERSONE 105
|
#define F_PERSONE 105
|
||||||
#define F_TURNI 106
|
|
||||||
|
|
||||||
#define F_YEAR 201
|
#define F_YEAR 201
|
||||||
#define F_TYPE 202
|
#define F_TYPE 202
|
||||||
|
@ -52,6 +52,7 @@ BEGIN
|
|||||||
OUTPUT F_DESCIMPIANTO S0
|
OUTPUT F_DESCIMPIANTO S0
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
FIELD S6
|
FIELD S6
|
||||||
|
WARNING "Impianto assente"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCIMPIANTO 50
|
STRING F_DESCIMPIANTO 50
|
||||||
@ -62,7 +63,8 @@ BEGIN
|
|||||||
DISPLAY "Codice@20" CODTAB
|
DISPLAY "Codice@20" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
COPY OUTPUT F_IMPIANTO
|
COPY OUTPUT F_IMPIANTO
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Impianto assente"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 4
|
GROUPBOX DLG_NULL 78 4
|
||||||
@ -77,13 +79,6 @@ BEGIN
|
|||||||
FIELD I0
|
FIELD I0
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_TURNI 1
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 8 "Turni standard "
|
|
||||||
FLAGS "U"
|
|
||||||
FIELD I1
|
|
||||||
END
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Calendario" -1 -1 65 15
|
PAGE "Calendario" -1 -1 65 15
|
||||||
@ -94,12 +89,13 @@ BEGIN
|
|||||||
FLAGS "A"
|
FLAGS "A"
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_TYPE 1 10
|
RADIOBUTTON F_TYPE 42
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 21 1 "Tipo "
|
PROMPT 16 0 ""
|
||||||
ITEM "L|Linea"
|
ITEM "L|Linea"
|
||||||
ITEM "I|Impianto"
|
ITEM "I|Impianto"
|
||||||
ITEM "S|Standard"
|
ITEM "S|Standard"
|
||||||
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
CALENDAR F_CALENDAR -3 -1
|
CALENDAR F_CALENDAR -3 -1
|
||||||
@ -107,7 +103,6 @@ BEGIN
|
|||||||
PROMPT 0 2 ""
|
PROMPT 0 2 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user