Patch level : 10.0 152
Files correlati : lv0.exe Ricompilazione Demo : [ ] Commento : Aggiunto il calendario giorni lavorativi e festività nella configurazione lavanderie Aggiunto menu per i documenti git-svn-id: svn://10.65.10.50/trunk@17527 c028cbd2-c16b-5b4b-a496-9718f37d4682
149
lv/lv0300.cpp
@ -2,20 +2,103 @@
|
|||||||
#include <msksheet.h>
|
#include <msksheet.h>
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
|
|
||||||
|
#include "../ci/cilib.h"
|
||||||
|
#include "lvlib.h"
|
||||||
#include "lv0300a.h"
|
#include "lv0300a.h"
|
||||||
|
|
||||||
|
class TConf_lavanderie_mask : public TAlmanac_mask
|
||||||
|
{
|
||||||
|
TLavanderie_calendar _cal; // array di TBit_array. Ognuno di essi č lungo 366 e rappresenta i flag di presenza documenti per ogni giorno dell'anno. Ogni page della maschera ha bisogno di un bitarray diverso
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
public:
|
||||||
|
// ereditato da TAlmanac_mask
|
||||||
|
virtual bool is_date_void(int currpage, TDate& cdate);
|
||||||
|
virtual void change_year(int newyear);
|
||||||
|
|
||||||
|
// metodi di accesso
|
||||||
|
void update_current_calendar(int year);
|
||||||
|
|
||||||
|
// apertura del foglio interno di gestione dei documenti
|
||||||
|
virtual void open_day_mask(const TDate & date);
|
||||||
|
|
||||||
|
// Costruttore
|
||||||
|
TConf_lavanderie_mask(const TFilename & f) : TAlmanac_mask(f), _cal(TDate(TODAY).year()) { }
|
||||||
|
// Distruttore
|
||||||
|
~TConf_lavanderie_mask() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TConf_lavanderie_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case DLG_OK:
|
||||||
|
if (e == fe_button)
|
||||||
|
_cal.write();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
TAlmanac_mask::on_field_event(o, e, jolly);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TConf_lavanderie_mask::is_date_void(int currpage, TDate& cdate)
|
||||||
|
{
|
||||||
|
return _cal.is_holiday(cdate);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TConf_lavanderie_mask::change_year(int newyear)
|
||||||
|
{
|
||||||
|
_cal.write();
|
||||||
|
_cal.read(newyear);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TConf_lavanderie_mask::open_day_mask(const TDate & date)
|
||||||
|
{
|
||||||
|
TDate d(date);
|
||||||
|
|
||||||
|
if (!d.ok())
|
||||||
|
d = curr_almanac().selected_date();
|
||||||
|
const bool holiday = _cal.is_holiday(d) ? false : true;
|
||||||
|
|
||||||
|
_cal.set_holiday(d, holiday);
|
||||||
|
almanac().force_update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TConf_lavanderie_mask::update_current_calendar(int year)
|
||||||
|
{
|
||||||
|
change_year(year);
|
||||||
|
}
|
||||||
|
|
||||||
class TConf_Lavanderie : public TConfig_application
|
class TConf_Lavanderie : public TConfig_application
|
||||||
{
|
{
|
||||||
|
TConf_lavanderie_mask * _mask;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void load_mask();
|
virtual void load_mask();
|
||||||
virtual void save_mask(bool tosave) ;
|
virtual TMask* get_mask() {return _mask;}
|
||||||
|
virtual TMask* create_mask(const TFilename & f);
|
||||||
|
virtual void save_mask(bool tosave) ;
|
||||||
virtual bool user_create( );
|
virtual bool user_create( );
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TConf_Lavanderie() : TConfig_application( CONFIG_DITTA ){ }
|
TConf_Lavanderie() : TConfig_application( CONFIG_DITTA ), _mask(NULL) {}
|
||||||
virtual ~TConf_Lavanderie( ){ }
|
virtual ~TConf_Lavanderie( ){ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TMask* TConf_Lavanderie::create_mask(const TFilename & f)
|
||||||
|
{
|
||||||
|
if (_mask == NULL)
|
||||||
|
{
|
||||||
|
_mask = new TConf_lavanderie_mask(f);
|
||||||
|
_mask->activate_almanac(F_ALMANAC, 0, TDate(TODAY));
|
||||||
|
}
|
||||||
|
return _mask;
|
||||||
|
}
|
||||||
|
|
||||||
bool TConf_Lavanderie::user_create( )
|
bool TConf_Lavanderie::user_create( )
|
||||||
{
|
{
|
||||||
TConfig conf(CONFIG_DITTA );
|
TConfig conf(CONFIG_DITTA );
|
||||||
@ -25,38 +108,38 @@ bool TConf_Lavanderie::user_create( )
|
|||||||
|
|
||||||
void TConf_Lavanderie::load_mask()
|
void TConf_Lavanderie::load_mask()
|
||||||
{
|
{
|
||||||
TMask* m=get_mask();
|
TMask* m = get_mask();
|
||||||
if (m==NULL)
|
if (m != NULL)
|
||||||
return;
|
{
|
||||||
|
TConfig_application::load_mask();
|
||||||
|
FOR_EACH_MASK_SHEET((*m), i, s)
|
||||||
|
{
|
||||||
|
s->destroy();
|
||||||
|
TMask& sm=s->sheet_mask();
|
||||||
|
|
||||||
TConfig_application::load_mask();
|
bool found=true;
|
||||||
FOR_EACH_MASK_SHEET((*m), i, s)
|
for (int r=0; found ;r++)
|
||||||
{
|
{
|
||||||
s->destroy();
|
FOR_EACH_MASK_FIELD(sm,j,f)
|
||||||
TMask& sm=s->sheet_mask();
|
{
|
||||||
|
const TFieldref* fr=f->field();
|
||||||
bool found=true;
|
if(fr!=NULL)
|
||||||
for (int r=0; found ;r++)
|
{
|
||||||
{
|
const TString& value=get_config()->get(fr->name(),NULL,r);
|
||||||
FOR_EACH_MASK_FIELD(sm,j,f)
|
if (value.empty() && f->dlg()==101 )
|
||||||
{
|
{
|
||||||
const TFieldref* fr=f->field();
|
found=false;
|
||||||
if(fr!=NULL)
|
break;
|
||||||
{
|
}
|
||||||
const TString& value=get_config()->get(fr->name(),NULL,r);
|
s->row(r).add(value,s->cid2index(f->dlg()));
|
||||||
if (value.empty() && f->dlg()==101 )
|
}
|
||||||
{
|
}
|
||||||
found=false;
|
if (found)
|
||||||
break;
|
s->check_row(r, 1);
|
||||||
}
|
}
|
||||||
s->row(r).add(value,s->cid2index(f->dlg()));
|
s->force_update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (found)
|
|
||||||
s->check_row(r, 1);
|
|
||||||
}
|
|
||||||
s->force_update();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TConf_Lavanderie::save_mask(bool tosave)
|
void TConf_Lavanderie::save_mask(bool tosave)
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
#include "../ci/cimsk.h"
|
||||||
|
|
||||||
#define GEN 1
|
#define GEN 1
|
||||||
#define FAT 2
|
#define FAT 2
|
||||||
#define ORF 3
|
#define ORF 3
|
||||||
@ -33,6 +35,7 @@
|
|||||||
#define F_DOCDOT 221
|
#define F_DOCDOT 221
|
||||||
|
|
||||||
#define F_UNICONT 222
|
#define F_UNICONT 222
|
||||||
|
#define F_ALMANAC 223
|
||||||
|
|
||||||
#define S_CODNUM_RIT 101
|
#define S_CODNUM_RIT 101
|
||||||
#define S_TIPODOC_RIT 102
|
#define S_TIPODOC_RIT 102
|
||||||
|
@ -334,6 +334,39 @@ END
|
|||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Calendario" 0 2 0 0
|
||||||
|
|
||||||
|
ALMANAC F_ALMANAC 60 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT -3 1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON F_PREVMONTH 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -26 -1 "~Precedente"
|
||||||
|
PICTURE BMP_PREVREC
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_CHANGEMONTH 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT -36 -1 ""
|
||||||
|
FLAGS "M"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CHANGEYEAR 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT -46 -1 ""
|
||||||
|
FLAGS "A"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON F_NEXTMONTH 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -56 -1 "S~uccessivo"
|
||||||
|
PICTURE BMP_NEXTREC
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
PAGE "Buoni di ritiro" -1 -1 80 5
|
PAGE "Buoni di ritiro" -1 -1 80 5
|
||||||
|
104
lv/lvlib.cpp
@ -1,6 +1,8 @@
|
|||||||
#include "lvlib.h"
|
#include "lvlib.h"
|
||||||
#include "..\mg\clifogiac.h"
|
#include "..\mg\clifogiac.h"
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include <date.h>
|
||||||
#include <recset.h>
|
#include <recset.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include "../cg/cglib01.h"
|
#include "../cg/cglib01.h"
|
||||||
@ -352,3 +354,105 @@ TArticolo_lavanderie & cached_article_laundry(const char * codart, const char ti
|
|||||||
return art;
|
return art;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TLavanderie_calendar
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Serve per aggiungere le feste dei Patroni
|
||||||
|
void TLavanderie_calendar::set_holiday(const TDate & date, bool holiday)
|
||||||
|
{
|
||||||
|
if (_year == date.year())
|
||||||
|
{
|
||||||
|
const TDate inizio(1, 1, _year);
|
||||||
|
long ndays = date - inizio;
|
||||||
|
|
||||||
|
_days.set(ndays, holiday);
|
||||||
|
_dirty = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TLavanderie_calendar::is_holiday(const TDate& date) const
|
||||||
|
{
|
||||||
|
if (_year == date.year())
|
||||||
|
{
|
||||||
|
const TDate inizio(1, 1, _year);
|
||||||
|
long ndays = date - inizio;
|
||||||
|
|
||||||
|
return _days[ndays];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TLavanderie_calendar::read(int year)
|
||||||
|
{
|
||||||
|
if (year != 0)
|
||||||
|
_year = year;
|
||||||
|
TConfig cfg(CONFIG_DITTA, "lv");
|
||||||
|
TString8 varname("CAL");
|
||||||
|
|
||||||
|
varname << _year;
|
||||||
|
_days.reset();
|
||||||
|
const TString val = cfg.get(varname);
|
||||||
|
|
||||||
|
if (val.full())
|
||||||
|
{
|
||||||
|
const int len = val.len();
|
||||||
|
for (int i = 0; i < len; i++)
|
||||||
|
_days.set(i, val[i] != ' ');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const TDate inizio(1, 1, _year);
|
||||||
|
const TDate fine(31, 12, _year);
|
||||||
|
TDate data(inizio);
|
||||||
|
|
||||||
|
for (int i = 0; data <= fine; ++data, i++)
|
||||||
|
_days.set(i, data.is_holiday() || data.wday() == 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NOERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TLavanderie_calendar::write() const
|
||||||
|
{
|
||||||
|
if (_dirty)
|
||||||
|
{
|
||||||
|
TConfig cfg(CONFIG_DITTA, "lv");
|
||||||
|
TString8 varname("CAL");
|
||||||
|
|
||||||
|
varname << _year;
|
||||||
|
TString val(255);
|
||||||
|
const TDate inizio(1, 1, _year);
|
||||||
|
const TDate fine(31, 12, _year);
|
||||||
|
TDate data(inizio);
|
||||||
|
|
||||||
|
for (int i = 0; data <= fine; ++data, i++)
|
||||||
|
val << (_days[i] ? 'X' : ' ');
|
||||||
|
cfg.set(varname, val);
|
||||||
|
}
|
||||||
|
((TLavanderie_calendar *)this)->_dirty = false;
|
||||||
|
return NOERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TLavanderie_calendar::remove() const
|
||||||
|
{
|
||||||
|
TConfig cfg(CONFIG_DITTA, "lv");
|
||||||
|
TString8 varname("CAL");
|
||||||
|
|
||||||
|
varname << _year;
|
||||||
|
TString val(255);
|
||||||
|
const TDate inizio(1, 1, _year);
|
||||||
|
const TDate fine(31, 12, _year);
|
||||||
|
TDate data(inizio);
|
||||||
|
|
||||||
|
for (int i = 0; data <= fine; ++data, i++)
|
||||||
|
val << data.is_holiday() ? "X" : " ";
|
||||||
|
cfg.set(varname, val);
|
||||||
|
return NOERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
TLavanderie_calendar::TLavanderie_calendar(const int year) : _year(year), _dirty(false)
|
||||||
|
{
|
||||||
|
read();
|
||||||
|
}
|
||||||
|
|
||||||
|
21
lv/lvlib.h
@ -90,4 +90,25 @@ public:
|
|||||||
|
|
||||||
TArticolo_lavanderie & cached_article_laundry(const char * codart, const char tipocf, const long codcf, const int indsped);
|
TArticolo_lavanderie & cached_article_laundry(const char * codart, const char tipocf, const long codcf, const int indsped);
|
||||||
|
|
||||||
|
class TLavanderie_calendar : public TObject
|
||||||
|
{
|
||||||
|
int _year;
|
||||||
|
TBit_array _days;
|
||||||
|
bool _dirty;
|
||||||
|
|
||||||
|
public:
|
||||||
|
int read(int year = 0);
|
||||||
|
int write() const;
|
||||||
|
int rewrite() const { return write(); }
|
||||||
|
int remove() const;
|
||||||
|
|
||||||
|
void set_holiday(const TDate& date, bool holiday = true);
|
||||||
|
void reset_holiday(const TDate& date) { set_holiday(date, false);}
|
||||||
|
bool is_holiday(const TDate& date) const;
|
||||||
|
|
||||||
|
|
||||||
|
TLavanderie_calendar(int year);
|
||||||
|
virtual ~TLavanderie_calendar() { }
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,10 +7,6 @@ Item_01 = "Archivi e Tabelle di Base", [LVMENU_001]
|
|||||||
Item_02 = "Gestione Giri", [LVMENU_040]
|
Item_02 = "Gestione Giri", [LVMENU_040]
|
||||||
Item_03 = "Configurazione", [LVMENU_090]
|
Item_03 = "Configurazione", [LVMENU_090]
|
||||||
Item_04 = "Contratti", "lv0 -3", "F"
|
Item_04 = "Contratti", "lv0 -3", "F"
|
||||||
Item_05 = "Documenti di Trasporto", "ve0 -1 -filtI1=1 -defNUM_GEN,TIPODOC_GEN,lv", "F"
|
|
||||||
Item_05 = "Fatture", "ve0 -1 -filtI1=2 -defNUM_FAT,TIPODOC_FAT,lv", "F"
|
|
||||||
Item_05 = "Ordini Fornitori", "ve0 -1 -filtI1=3 -defNUM_ORF,TIPODOC_ORF,lv", "F"
|
|
||||||
Item_05 = "Ordini Clienti", "ve0 -1 -filtI1=3 -defNUM_ORC,TIPODOC_ORC,lv", "F"
|
|
||||||
|
|
||||||
[LVMENU_001]
|
[LVMENU_001]
|
||||||
Caption = "Archivi e Tabelle di Base"
|
Caption = "Archivi e Tabelle di Base"
|
||||||
@ -87,10 +83,19 @@ Module = 41
|
|||||||
Flags = ""
|
Flags = ""
|
||||||
Item_01 = "Stampa Giri", "lv0 -1 lv2300a", "F"
|
Item_01 = "Stampa Giri", "lv0 -1 lv2300a", "F"
|
||||||
|
|
||||||
|
[LVMENU_055]
|
||||||
|
Caption = "Documenti"
|
||||||
|
Picture = <ba00>
|
||||||
|
Module = 41
|
||||||
|
Flags = ""
|
||||||
|
Item_01 = "Documenti di Trasporto", "ve0 -1 -filtI1=1 -defNUM_GEN,TIPODOC_GEN,lv", "F"
|
||||||
|
Item_02 = "Fatture", "ve0 -1 -filtI1=2 -defNUM_FAT,TIPODOC_FAT,lv", "F"
|
||||||
|
Item_03 = "Ordini Fornitori", "ve0 -1 -filtI1=3 -defNUM_ORF,TIPODOC_ORF,lv", "F"
|
||||||
|
Item_04 = "Ordini Clienti", "ve0 -1 -filtI1=3 -defNUM_ORC,TIPODOC_ORC,lv", "F"
|
||||||
|
|
||||||
[LVMENU_090]
|
[LVMENU_090]
|
||||||
Caption = "Configurazione"
|
Caption = "Configurazione"
|
||||||
Picture = <ba00>
|
Picture = <ba00>
|
||||||
Module = 41
|
Module = 41
|
||||||
Flags = ""
|
Flags = ""
|
||||||
Item_01 = "Parametri gestione lavanderie", "lv0 -2", "F"
|
Item_01 = "Parametri gestione lavanderie", "lv0 -2", "F"
|
||||||
|
|
||||||
|
BIN
lv/lvmn01.jpg
Executable file
After Width: | Height: | Size: 71 KiB |
BIN
lv/lvmn02.jpg
Executable file
After Width: | Height: | Size: 62 KiB |
BIN
lv/lvmn03.jpg
Executable file
After Width: | Height: | Size: 59 KiB |
BIN
lv/lvmn04.jpg
Executable file
After Width: | Height: | Size: 49 KiB |
BIN
lv/lvmn05.jpg
Executable file
After Width: | Height: | Size: 62 KiB |
BIN
lv/lvmn06.jpg
Executable file
After Width: | Height: | Size: 54 KiB |
BIN
lv/lvmn07.jpg
Executable file
After Width: | Height: | Size: 58 KiB |
BIN
lv/lvmn08.jpg
Executable file
After Width: | Height: | Size: 54 KiB |
BIN
lv/lvmn09.jpg
Executable file
After Width: | Height: | Size: 52 KiB |
BIN
lv/lvmn10.jpg
Executable file
After Width: | Height: | Size: 47 KiB |
BIN
lv/lvmn11.jpg
Executable file
After Width: | Height: | Size: 51 KiB |
BIN
lv/lvmn12.jpg
Executable file
After Width: | Height: | Size: 42 KiB |