e016b044b0
Files correlati : Ricompilazione Demo : [ ] Commento :corretta chiamata dei BAR_ITEM con BAR_ITEM_ID git-svn-id: svn://10.65.10.50/trunk@18337 c028cbd2-c16b-5b4b-a496-9718f37d4682
791 lines
21 KiB
C++
Executable File
791 lines
21 KiB
C++
Executable File
// generic - relapp generica adattata per il 770
|
||
//
|
||
// - Applicazioni -
|
||
//
|
||
// Anagrafica dipendenti,
|
||
// Prospetto quadro E1,
|
||
// Societa' trasformate
|
||
//
|
||
// Riempie automaticamente i campi della maschera con id uguali a CODDITTA77 e ANNODIC77
|
||
// con la ditta e l'anno dichiarazione correnti del 770
|
||
//
|
||
// Lista modifiche
|
||
//
|
||
// 10.5.96 Via il flag erede si fa il controllo su CODDIPDEC
|
||
//
|
||
#include <relapp.h>
|
||
#include <urldefid.h>
|
||
#include <tabutil.h>
|
||
#include <progind.h>
|
||
|
||
#include "dipend.h"
|
||
#include <nditte.h>
|
||
#include "77lib.h"
|
||
#include "pe1.h"
|
||
#include "anadip.h"
|
||
#include "771100.h"
|
||
#include "771200.h"
|
||
#include "774200.h"
|
||
|
||
#define CODDITTA77 181
|
||
#define ANNODIC77 182
|
||
|
||
HIDDEN const char* QUALIFICA_EREDE = "11";
|
||
|
||
void socbbis_setta_ditta(TMask& m);
|
||
long ADCalcolaItems(const int lffile, const long codditta, const long coddip);
|
||
|
||
class TGenericRel_application : public TRelation_application
|
||
{
|
||
private:
|
||
static bool codditta77_handler (TMask_field& m, KEY k);
|
||
static bool check_handler (TMask_field& m, KEY k);
|
||
static bool PE1calcrit_handler (TMask_field& m, KEY k);
|
||
static bool ADabilita_coddipdec (TMask_field& m, KEY k);
|
||
static bool ADCodDipDec (TMask_field& m, KEY k);
|
||
void ADCancellaQuadri(const long codditta,const long coddip);
|
||
// static bool eredi_handler (TMask_field& m, KEY k);
|
||
static bool date_handler (TMask_field& m, KEY k);
|
||
long _codditta;
|
||
long _lCodDipDec;
|
||
long _lCodDip;
|
||
TString16 _sQualificaPrec; // qualifica prima di andare in edit
|
||
const char* _maskname;
|
||
int _num;
|
||
TString16 _quadro;
|
||
TRiporti _rip;
|
||
TRelation* _rel;
|
||
TMask* _msk;
|
||
bool _alterna_field,_registra;
|
||
int _anno_dic;
|
||
bool _MaskConAnnoDic, _MaskConCodditta;
|
||
bool MaskConAnnoDic() const;
|
||
bool MaskConCodditta() const { return _MaskConCodditta; }
|
||
void LeggiMask();
|
||
bool Dipendenti() const { return _num == LF_DIPEND; }
|
||
protected:
|
||
virtual bool user_create();
|
||
virtual bool user_destroy();
|
||
virtual int rewrite(const TMask& m);
|
||
virtual int write (const TMask& m);
|
||
virtual bool remove();
|
||
virtual void on_config_change();
|
||
virtual TMask* get_mask(int) { return _msk; }
|
||
virtual bool changing_mask(int) { return FALSE;}
|
||
virtual TRelation* get_relation() const { return _rel; }
|
||
virtual void init_insert_mode(TMask&);
|
||
virtual void init_modify_mode(TMask&);
|
||
virtual void init_query_mode(TMask&);
|
||
virtual void init_query_insert_mode(TMask&);
|
||
void init_mask(TMask&);
|
||
|
||
public:
|
||
bool _ADCheckFallito;
|
||
virtual bool firm_change_enabled() const;
|
||
TGenericRel_application(const char* name, const int num, const char* quadro);
|
||
};
|
||
|
||
TGenericRel_application& app() { return (TGenericRel_application&)main_app(); }
|
||
|
||
TGenericRel_application::TGenericRel_application(const char* name, const int num, const char* quadro)
|
||
: _maskname(name), _num(num),
|
||
_MaskConCodditta(FALSE), _MaskConAnnoDic(FALSE),
|
||
_msk(NULL), _rel(NULL), _quadro(quadro), _ADCheckFallito(FALSE)
|
||
{
|
||
}
|
||
|
||
void TGenericRel_application::LeggiMask()
|
||
{
|
||
_MaskConAnnoDic = _msk->id2pos(ANNODIC77) > 0;
|
||
_MaskConCodditta = _msk->id2pos(CODDITTA77) > 0;
|
||
}
|
||
|
||
bool TGenericRel_application::MaskConAnnoDic() const
|
||
{
|
||
return _MaskConAnnoDic;
|
||
}
|
||
|
||
void TGenericRel_application::on_config_change()
|
||
{
|
||
if (MaskConAnnoDic())
|
||
{
|
||
TConfig conf(CONFIG_STUDIO);
|
||
_anno_dic = (int)conf.get_long(ANNO_SEL, NULL, -1, TDate(TODAY).year());
|
||
}
|
||
}
|
||
|
||
bool TGenericRel_application::firm_change_enabled() const
|
||
{
|
||
return FALSE;
|
||
}
|
||
|
||
bool TGenericRel_application::user_create()
|
||
{
|
||
_alterna_field = FALSE;
|
||
_msk = new TMask(_maskname);
|
||
_rel = new TRelation(_num);
|
||
|
||
// Determina se la maschera contiene i campi CODDITTA e ANNODIC
|
||
LeggiMask();
|
||
|
||
if (MaskConCodditta())
|
||
_msk->set_handler(CODDITTA77, codditta77_handler);
|
||
|
||
if (_num == LF_PROSPE1)
|
||
{
|
||
_msk->set_handler(PE1F_CODCAUS, check_handler);
|
||
_msk->set_handler(PE1F_CODCAUS2, check_handler);
|
||
_msk->set_handler(PE1F_IMPONIBILE, PE1calcrit_handler);
|
||
}
|
||
|
||
if (Dipendenti())
|
||
{
|
||
_msk->set_handler(F_DIP_QUALIFICA, ADabilita_coddipdec);
|
||
_msk->set_handler(ADF_CODDIPDEC, ADCodDipDec);
|
||
set_search_field(ADF_DIP_CODDIP);
|
||
}
|
||
|
||
if (_num == LF_SOCTRASF)
|
||
{
|
||
char tipo;
|
||
|
||
_msk->set_handler(F_SOC_DATAFINPI, date_handler);
|
||
|
||
long codditta = get_firm_770();
|
||
|
||
TLocalisamfile ditta (LF_NDITTE);
|
||
|
||
ditta.setkey(1);
|
||
ditta.zero();
|
||
ditta.put(NDT_CODDITTA, codditta);
|
||
if (ditta.read() == NOERR)
|
||
tipo = ditta.get_char(NDT_TIPOA);
|
||
|
||
if (tipo == 'F')
|
||
{
|
||
_msk->show(-1);
|
||
_msk->hide(-2);
|
||
}
|
||
else
|
||
if (tipo == 'G')
|
||
{
|
||
_msk->show(-2);
|
||
_msk->hide(-1);
|
||
}
|
||
}
|
||
|
||
if (_num == LF_BASEBIS)
|
||
_msk->set_handler(F_BSE_DATAFINPI, date_handler);
|
||
|
||
for (int i = 0; i < _msk->fields(); i++)
|
||
{
|
||
TMask_field& campo = _msk->fld(i);
|
||
|
||
if (campo.in_group(8) || campo.in_group(9))
|
||
{
|
||
_alterna_field = TRUE;
|
||
break;
|
||
}
|
||
}
|
||
_registra = FALSE;
|
||
return TRUE;
|
||
}
|
||
|
||
bool TGenericRel_application::user_destroy()
|
||
{
|
||
if (_quadro != "" && _quadro != "0")
|
||
if (_registra)
|
||
_rip.set(_quadro);
|
||
delete _msk;
|
||
delete _rel;
|
||
return TRUE;
|
||
}
|
||
|
||
int TGenericRel_application::rewrite(const TMask& m)
|
||
{
|
||
m.autosave(*_rel);
|
||
const int err = _rel->rewrite();
|
||
_registra = TRUE;
|
||
return err;
|
||
}
|
||
|
||
int TGenericRel_application::write(const TMask& m)
|
||
{
|
||
m.autosave(*_rel);
|
||
const int err = _rel->write();
|
||
_registra = TRUE;
|
||
return err;
|
||
}
|
||
|
||
// Costruisce un cursore solo per sapere gli items per la progind
|
||
long ADCalcolaItems(const int lffile, const long codditta, const long coddip)
|
||
{
|
||
long items=0L;
|
||
TRelation* rel = new TRelation(lffile);
|
||
TString filtro;
|
||
filtro.format("CODDITTA=%ld && CODDIP=%ld", codditta,coddip);
|
||
TCursor* cur = new TCursor(rel,filtro,1);
|
||
(*cur) = 0L;
|
||
items = cur->items();
|
||
delete cur;
|
||
delete rel;
|
||
return items;
|
||
}
|
||
|
||
void TGenericRel_application::ADCancellaQuadri(const long codditta,const long coddip)
|
||
{
|
||
bool bRimossoA,bRimossoA1,bRimossoA2,bRimossoA3,bRimossoB,bRimossoB1;
|
||
bRimossoA=bRimossoA1=bRimossoA2=bRimossoA3=bRimossoB=bRimossoB1=FALSE;
|
||
|
||
long items = ADCalcolaItems(LF_QUAA, codditta, coddip);
|
||
TProgind progA(items,"Cancellazione quadro A", FALSE,TRUE);
|
||
// Cancella quadro A
|
||
TLocalisamfile qa(LF_QUAA);
|
||
qa.zero();
|
||
qa.put("CODDITTA", (long) codditta);
|
||
qa.put("CODDIP", (long) coddip);
|
||
TRectype dep(qa.curr());
|
||
for (qa.read(_isgteq, _lock); !qa.eof(); qa.next(_lock))
|
||
{
|
||
progA.addstatus(1);
|
||
if (qa.curr() > dep)
|
||
{
|
||
qa.reread(_unlock);
|
||
break;
|
||
}
|
||
const long lDit = qa.get_long("CODDITTA");
|
||
const long lDip = qa.get_long("CODDIP");
|
||
if (lDit == codditta && lDip == coddip)
|
||
{
|
||
bRimossoA = TRUE;
|
||
qa.remove();
|
||
}
|
||
}
|
||
|
||
// Cancella quadro A1
|
||
items = ADCalcolaItems(LF_QUAA1, codditta, coddip);
|
||
TProgind progA1(items,"Cancellazione quadro A-1", FALSE,TRUE);
|
||
TLocalisamfile qa1(LF_QUAA1);
|
||
qa1.zero();
|
||
qa1.put("CODDITTA", (long) codditta);
|
||
qa1.put("CODDIP", (long) coddip);
|
||
TRectype dep1(qa1.curr());
|
||
for (qa1.read(_isgteq, _lock); !qa1.eof(); qa1.next(_lock))
|
||
{
|
||
progA1.addstatus(1);
|
||
if (qa1.curr() > dep1)
|
||
{
|
||
qa1.reread(_unlock);
|
||
break;
|
||
}
|
||
const long lDit = qa1.get_long("CODDITTA");
|
||
const long lDip = qa1.get_long("CODDIP");
|
||
if (lDit == codditta && lDip == coddip)
|
||
{
|
||
bRimossoA1 = TRUE;
|
||
qa1.remove();
|
||
}
|
||
}
|
||
|
||
// Cancella quadro A2
|
||
items = ADCalcolaItems(LF_QUAA2, codditta, coddip);
|
||
TProgind progA2(items,"Cancellazione quadro A-2", FALSE,TRUE);
|
||
TLocalisamfile qa2(LF_QUAA2);
|
||
qa2.zero();
|
||
qa2.put("CODDITTA", (long) codditta);
|
||
qa2.put("CODDIP", (long) coddip);
|
||
TRectype dep2(qa2.curr());
|
||
for (qa2.read(_isgteq, _lock); !qa2.eof(); qa2.next(_lock))
|
||
{
|
||
progA2.addstatus(1);
|
||
if (qa2.curr() > dep2)
|
||
{
|
||
qa2.reread(_unlock);
|
||
break;
|
||
}
|
||
const long lDit = qa2.get_long("CODDITTA");
|
||
const long lDip = qa2.get_long("CODDIP");
|
||
if (lDit == codditta && lDip == coddip)
|
||
{
|
||
bRimossoA2 = TRUE;
|
||
qa2.remove();
|
||
}
|
||
}
|
||
|
||
// Cancella quadro A3
|
||
items = ADCalcolaItems(LF_QUAA3, codditta, coddip);
|
||
TProgind progA3(items,"Cancellazione quadro A-3", FALSE,TRUE);
|
||
TLocalisamfile qa3(LF_QUAA3);
|
||
qa3.zero();
|
||
qa3.put("CODDITTA", (long) codditta);
|
||
qa3.put("NPROG", 1);
|
||
qa3.put("CODDIP", (long) coddip);
|
||
TRectype dep3(qa3.curr());
|
||
for (qa3.read(_isgteq, _lock); !qa3.eof(); qa3.next(_lock))
|
||
{
|
||
progA3.addstatus(1);
|
||
const long lDit = qa3.get_long("CODDITTA");
|
||
const long lDip = qa3.get_long("CODDIP");
|
||
if (lDit != codditta || lDip != coddip)
|
||
{
|
||
qa3.reread(_unlock);
|
||
continue;
|
||
}
|
||
if (lDit == codditta && lDip == coddip)
|
||
{
|
||
bRimossoA3 = TRUE;
|
||
qa3.remove();
|
||
}
|
||
}
|
||
|
||
// Cancella quadro B
|
||
items = ADCalcolaItems(LF_QUAB, codditta, coddip);
|
||
TProgind progB(items,"Cancellazione quadro B", FALSE,TRUE);
|
||
TLocalisamfile qb(LF_QUAB);
|
||
qb.zero();
|
||
qb.put("CODDITTA", (long) codditta);
|
||
qb.put("CODDIP", (long) coddip);
|
||
TRectype dep4(qb.curr());
|
||
for (qb.read(_isgteq, _lock); !qb.eof(); qb.next(_lock))
|
||
{
|
||
progB.addstatus(1);
|
||
if (qb.curr() > dep4)
|
||
{
|
||
qb.reread(_unlock);
|
||
break;
|
||
}
|
||
const long lDit = qb.get_long("CODDITTA");
|
||
const long lDip = qb.get_long("CODDIP");
|
||
if (lDit == codditta && lDip == coddip)
|
||
{
|
||
bRimossoB = TRUE;
|
||
qb.remove();
|
||
}
|
||
}
|
||
|
||
// Cancella quadro B1
|
||
items = ADCalcolaItems(LF_QUAB1, codditta, coddip);
|
||
TProgind progB1(items,"Cancellazione quadro B-1", FALSE,TRUE);
|
||
TLocalisamfile qb1(LF_QUAB1);
|
||
qb1.zero();
|
||
qb1.put("CODDITTA", (long) codditta);
|
||
qb1.put("CODDIP", (long) coddip);
|
||
TRectype dep5(qb1.curr());
|
||
for (qb1.read(_isgteq, _lock); !qb1.eof(); qb1.next(_lock))
|
||
{
|
||
progB1.addstatus(1);
|
||
if (qb1.curr() > dep5)
|
||
{
|
||
qb1.reread(_unlock);
|
||
break;
|
||
}
|
||
const long lDit = qb1.get_long("CODDITTA");
|
||
const long lDip = qb1.get_long("CODDIP");
|
||
if (lDit == codditta && lDip == coddip)
|
||
{
|
||
bRimossoB1 = TRUE;
|
||
qb1.remove();
|
||
}
|
||
}
|
||
|
||
if (bRimossoA)
|
||
_rip.set("A");
|
||
if (bRimossoA1)
|
||
_rip.set("A1");
|
||
if (bRimossoA2)
|
||
_rip.set("A2");
|
||
if (bRimossoA3)
|
||
_rip.set("A3");
|
||
if (bRimossoB)
|
||
_rip.set("B");
|
||
if (bRimossoB1)
|
||
_rip.set("B1");
|
||
}
|
||
|
||
bool TGenericRel_application::remove()
|
||
{
|
||
_registra = TRUE;
|
||
|
||
if (Dipendenti())
|
||
{
|
||
const long codditta = _codditta;
|
||
const long coddip = _lCodDip;
|
||
|
||
// Se era un erede resetta il riferimento al deceduto..
|
||
if (_sQualificaPrec != "" && _sQualificaPrec == QUALIFICA_EREDE)
|
||
{
|
||
if (_lCodDipDec > 0L)
|
||
if (!riscrivi_erede(codditta, _lCodDipDec, coddip,0L))
|
||
return warning_box("Fallita cancellazione erede");
|
||
}
|
||
|
||
// Se era un deceduto cancella cod.dip.dec. sugli eredi
|
||
if (is_deceduto(codditta,coddip))
|
||
{
|
||
TLocalisamfile dip (LF_DIPEND);
|
||
TProgind ProgDip(dip.items(),"Cancellazione codice deceduto ..", FALSE,TRUE);
|
||
for (dip.first(); !dip.eof(); dip.next(_lock))
|
||
{
|
||
ProgDip.addstatus(1);
|
||
const long lDipDec = dip.get_long(DIP_CODDIPDEC);
|
||
if (lDipDec == coddip)
|
||
{
|
||
dip.put(DIP_CODDIPDEC, 0L);
|
||
dip.rewrite();
|
||
}
|
||
else
|
||
dip.reread(_unlock);
|
||
}
|
||
}
|
||
|
||
// Cancella tutti i quadri che facevano riferimento a questo dip.
|
||
ADCancellaQuadri(codditta,coddip);
|
||
}
|
||
return TRelation_application::remove();
|
||
}
|
||
|
||
void socbbis_setta_ditta(TMask& m)
|
||
{
|
||
TString16 codditta; codditta << get_firm_770();
|
||
if (codditta != "0")
|
||
{
|
||
m.set(CODDITTA77, codditta);
|
||
m.field(CODDITTA77).check();
|
||
}
|
||
}
|
||
|
||
void TGenericRel_application::init_mask(TMask& m)
|
||
{
|
||
if (MaskConAnnoDic())
|
||
_msk->set(ANNODIC77, _anno_dic);
|
||
}
|
||
|
||
void TGenericRel_application::init_modify_mode(TMask& m)
|
||
{
|
||
init_mask(m);
|
||
if (Dipendenti())
|
||
{
|
||
_lCodDip = m.get_long(ADF_DIP_CODDIP);
|
||
_lCodDipDec = m.get_long(ADF_CODDIPDEC);
|
||
_sQualificaPrec = m.get(F_DIP_QUALIFICA);
|
||
}
|
||
}
|
||
|
||
void TGenericRel_application::init_insert_mode(TMask& m)
|
||
{
|
||
init_mask(m);
|
||
}
|
||
|
||
void TGenericRel_application::init_query_mode(TMask& m)
|
||
{
|
||
if (Dipendenti())
|
||
{
|
||
_lCodDipDec = 0L;
|
||
_sQualificaPrec = "";
|
||
}
|
||
|
||
if (_num == LF_SOCTRASF || _num == LF_BASEBIS)
|
||
{
|
||
socbbis_setta_ditta(m);
|
||
m.send_key(K_AUTO_ENTER,0);
|
||
}
|
||
|
||
if (_num == LF_PROSPE1)
|
||
{
|
||
m.send_key(K_SHIFT+K_CTRL+'h', -9); // Nasconde ricerca su prospe1
|
||
m.send_key(K_SHIFT+K_CTRL+'s', -8); // Show ricerca su ca7
|
||
}
|
||
}
|
||
|
||
void TGenericRel_application::init_query_insert_mode(TMask& m)
|
||
{
|
||
if (Dipendenti())
|
||
_ADCheckFallito = FALSE;
|
||
|
||
if (_num == LF_PROSPE1)
|
||
{
|
||
m.send_key(K_SHIFT+K_CTRL+'h', -8); // Nasconde ricerca su ca7
|
||
m.send_key(K_SHIFT+K_CTRL+'s', -9); // Show ricerca su prospe1
|
||
}
|
||
}
|
||
|
||
bool TGenericRel_application::codditta77_handler(TMask_field& f, KEY k)
|
||
{
|
||
app()._codditta = get_firm_770();
|
||
TString16 codditta; codditta << app()._codditta;
|
||
TMask& m = f.mask();
|
||
if (codditta != "0")
|
||
{
|
||
m.set(CODDITTA77, codditta);
|
||
m.field(CODDITTA77).check();
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
// Handler dell'imponibile
|
||
// Ricalcola ritenuta se:
|
||
// 1. cambia imponibile
|
||
// 2. la ritenuta e' ZERO
|
||
bool TGenericRel_application::PE1calcrit_handler(TMask_field& f, KEY k)
|
||
{
|
||
if (k == K_TAB)
|
||
{
|
||
TMask& m = f.mask();
|
||
// Leggi i dati..
|
||
const double perc = atof(m.get(PE1F_HPERC));
|
||
const real impo(f.get());
|
||
const real rope_prec(m.get(PE1F_RITENUTA));
|
||
|
||
// Ricalcola sempre se e' cambiato
|
||
const bool forza = f.focusdirty();
|
||
|
||
if (rope_prec != ZERO && !forza)
|
||
return FALSE;
|
||
|
||
const real rite_calc = (impo * perc) / 100;
|
||
m.set(PE1F_RITENUTA, rite_calc.string());
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
bool TGenericRel_application::check_handler(TMask_field& f, KEY k)
|
||
{
|
||
if (k == K_TAB && f.to_check(k) && f.mask().is_running())
|
||
{
|
||
TTable ca7 ("%CA7");
|
||
|
||
TString codice = f.get();
|
||
|
||
ca7.zero();
|
||
ca7.put("CODTAB", codice);
|
||
if (ca7.read() == NOERR)
|
||
{
|
||
int artbil = ca7.get_int("I3");
|
||
bool imp = ca7.get_bool("B0");
|
||
TString codqua = ca7.get ("S1");
|
||
|
||
if (artbil == 1015 || codqua != "E1" || imp)
|
||
return f.warning_box("Codice causale non valido per Quadro E1");
|
||
}
|
||
else
|
||
return f.warning_box("Valore non presente in tabella causali");
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
// A.Dip. se qualifica=11 (erede) abilita cod.dip.dec.
|
||
bool TGenericRel_application::ADabilita_coddipdec(TMask_field& f, KEY k)
|
||
{
|
||
if (k == K_TAB)
|
||
{
|
||
TMask& m = f.mask();
|
||
TString qual(f.get());
|
||
if (qual == QUALIFICA_EREDE)
|
||
m.enable(ADF_CODDIPDEC);
|
||
else
|
||
{
|
||
// Se prima era un erede e ora non lo e' piu' aggiorna il deceduto (brr..)
|
||
if (app()._sQualificaPrec != "" &&
|
||
app()._sQualificaPrec == QUALIFICA_EREDE)
|
||
{
|
||
const long codditta = app()._codditta;
|
||
const long coddip = m.get_long(ADF_DIP_CODDIP);
|
||
const long lDecedutoPrec = m.get_long(ADF_CODDIPDEC);
|
||
if (lDecedutoPrec > 0L)
|
||
if (!riscrivi_erede(codditta, lDecedutoPrec,coddip,0L))
|
||
return warning_box("Fallita cancellazione erede");
|
||
}
|
||
m.reset(ADF_CODDIPDEC);
|
||
m.disable(ADF_CODDIPDEC);
|
||
}
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
const char* FALLITO_EREDE_MSG = "Impossibile inserire un nuovo erede. Il numero massimo di eredi e' 10";
|
||
|
||
bool TGenericRel_application::ADCodDipDec(TMask_field& f, KEY k)
|
||
{
|
||
if (k == K_ENTER)
|
||
{
|
||
TMask& m = f.mask();
|
||
TString sCodDec(f.get());
|
||
long lDecedutoCorrente = 0L;
|
||
const long codditta = app()._codditta;
|
||
const long coddip = m.get_long(ADF_DIP_CODDIP);
|
||
|
||
if (sCodDec.not_empty())
|
||
{
|
||
lDecedutoCorrente = atol((const char*)sCodDec);
|
||
if (!esiste_dipendente(codditta,lDecedutoCorrente))
|
||
return warning_box("Dipendente inesistente");
|
||
}
|
||
const long lDecedutoOriginario = app()._lCodDipDec;
|
||
const bool bCambiatoDeceduto = //(lDecedutoCorrente != 0L) &&
|
||
(lDecedutoOriginario != 0L) &&
|
||
(lDecedutoCorrente != lDecedutoOriginario);
|
||
if (bCambiatoDeceduto)
|
||
{
|
||
// Cancella l'erede nel rec.del dec. precedente
|
||
if (!riscrivi_erede(codditta, lDecedutoOriginario,coddip,0L))
|
||
return warning_box("Impossibile cancellare il codice erede nella scheda del dipendente deceduto");
|
||
// Scrive l'erede nel rec.del dec. attuale
|
||
if (lDecedutoCorrente != 0L)
|
||
if (!scrivi_erede(codditta, lDecedutoCorrente, coddip))
|
||
return warning_box(FALLITO_EREDE_MSG);
|
||
}
|
||
else
|
||
if (lDecedutoCorrente != 0L)
|
||
{
|
||
if (!scrivi_erede(codditta, lDecedutoCorrente, coddip))
|
||
return warning_box(FALLITO_EREDE_MSG);
|
||
app()._lCodDipDec = lDecedutoCorrente;
|
||
}
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
/*
|
||
bool TGenericRel_application::eredi_handler(TMask_field& f, KEY k)
|
||
{
|
||
if (k == K_TAB || k == K_SPACE)
|
||
{
|
||
TString depdec(f.get());
|
||
bool erede = depdec.not_empty();
|
||
|
||
if (erede)
|
||
{
|
||
f.mask().disable(F_DIP_CODEREDE0);
|
||
f.mask().disable(F_DIP_CODEREDE1);
|
||
f.mask().disable(F_DIP_CODEREDE2);
|
||
f.mask().disable(F_DIP_CODEREDE3);
|
||
f.mask().disable(F_DIP_CODEREDE4);
|
||
f.mask().disable(F_DIP_CODEREDE5);
|
||
f.mask().disable(F_DIP_CODEREDE6);
|
||
f.mask().disable(F_DIP_CODEREDE7);
|
||
f.mask().disable(F_DIP_CODEREDE8);
|
||
f.mask().disable(F_DIP_CODEREDE9);
|
||
}
|
||
else
|
||
{
|
||
f.mask().enable(F_DIP_CODEREDE0);
|
||
f.mask().enable(F_DIP_CODEREDE1);
|
||
f.mask().enable(F_DIP_CODEREDE2);
|
||
f.mask().enable(F_DIP_CODEREDE3);
|
||
f.mask().enable(F_DIP_CODEREDE4);
|
||
f.mask().enable(F_DIP_CODEREDE5);
|
||
f.mask().enable(F_DIP_CODEREDE6);
|
||
f.mask().enable(F_DIP_CODEREDE7);
|
||
f.mask().enable(F_DIP_CODEREDE8);
|
||
f.mask().enable(F_DIP_CODEREDE9);
|
||
}
|
||
}
|
||
return TRUE;
|
||
}
|
||
*/
|
||
|
||
bool TGenericRel_application::date_handler(TMask_field& f, KEY k)
|
||
{
|
||
if (k == K_TAB)
|
||
{
|
||
TDate datainpi;
|
||
|
||
TMask& m = f.mask();
|
||
|
||
TFilename name = m.source_file();
|
||
|
||
if (name == "771200i.msk")
|
||
datainpi = m.get_date(F_BSE_DATAINPI);
|
||
if (name == "771100h.msk")
|
||
datainpi = m.get_date(F_SOC_DATAINPI);
|
||
|
||
TDate datafinpi (f.get());
|
||
|
||
if (datafinpi < datainpi)
|
||
return f.error_box("La data finale non puo' essere inferiore alla data iniziale");
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
class TGeneric_application : public TApplication
|
||
{
|
||
TFilename _maskname;
|
||
|
||
protected:
|
||
bool create() { dispatch_e_menu(BAR_ITEM_ID(1)); return TRUE; }
|
||
bool destroy() { return TRUE; }
|
||
bool menu(MENU_TAG);
|
||
|
||
// static bool codditta77_handler(TMask_field& m, KEY k);
|
||
|
||
public:
|
||
TGeneric_application(const char* name) : _maskname(name) {}
|
||
virtual bool firm_change_enabled() const;
|
||
};
|
||
|
||
|
||
bool TGeneric_application::menu(MENU_TAG)
|
||
{
|
||
KEY k;
|
||
if (_maskname.empty())
|
||
{
|
||
TMask m("Inserire il nome della maschera", 1, 42, 4);
|
||
m.add_string(101, 0, "", 1, 1, 40);
|
||
m.efield(101).check_type(CHECK_REQUIRED);
|
||
m.add_button(DLG_OK, 0, "", -12, -1, 10, 2);
|
||
m.add_button(DLG_CANCEL, 0, "", -22, -1, 10, 2);
|
||
k = m.run();
|
||
if (k == K_ENTER)
|
||
_maskname = m.get(101);
|
||
else
|
||
return FALSE;
|
||
}
|
||
|
||
TMask m(_maskname);
|
||
|
||
k = m.run();
|
||
|
||
if (k == K_QUIT || k == K_ESC) stop_run();
|
||
|
||
return k != K_QUIT;
|
||
}
|
||
|
||
bool TGeneric_application::firm_change_enabled() const
|
||
{
|
||
return FALSE;
|
||
}
|
||
|
||
//
|
||
// Modi di chiamata
|
||
// [-1][menu_st] Menu stampe dichiarazioni
|
||
// [-1][771230m][89]["Prospetto.."][E1]Prospetto quadro E1
|
||
// [-1][771150a][45]["Anagraf.."][<user>]Anagrafica dipendenti
|
||
// [-1][771100h][102]["Manut.."][<user>] Manutenzione societ<65> trasformate
|
||
//
|
||
int generic(int argc, char* argv[])
|
||
{
|
||
// TApplication::check_parameters(argc, argv);
|
||
TFilename mask;
|
||
int num = 0;
|
||
if (argc > 1)
|
||
mask = argv[2];
|
||
|
||
if (argc < 6)
|
||
{
|
||
const char* title = argv[3];
|
||
TGeneric_application a(mask);
|
||
a.run(argc, argv, title);
|
||
}
|
||
else
|
||
{
|
||
num = atoi(argv[3]);
|
||
const char* title = argv[4];
|
||
const char* quadro = argv[5];
|
||
TGenericRel_application a(mask, num, quadro);
|
||
a.run(argc, argv, title ? title : "Test Relation Application");
|
||
}
|
||
return 0;
|
||
}
|
||
|