Aggiunta codici regione

git-svn-id: svn://10.65.10.50/trunk@2683 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-03-20 16:00:44 +00:00
parent 78687433cb
commit 2994f22df3
8 changed files with 237 additions and 259 deletions

View File

@ -4,54 +4,29 @@
#include <lffiles.h> #include <lffiles.h>
#include "ba4.h" #include "ba4.h"
#include "ba4100.h" #include "ba4100.h"
#define FIRST_YEAR 1993
class BA4100_application : public TRelation_application class BA4100_application : public TRelation_application
{ {
TMask * _msk; TMask * _msk;
TRelation * _rel; TRelation * _rel;
TLocalisamfile * _alici;
TRecord_array * _alici_rec;
static bool fld_notify(TSheet_field& s, int r, KEY k);
virtual bool user_create() ; virtual bool user_create() ;
virtual bool user_destroy() ; virtual bool user_destroy() ;
virtual bool changing_mask(int mode) { return FALSE;} virtual bool changing_mask(int mode) { return FALSE;}
virtual TRelation* get_relation() const { return _rel;} virtual TRelation* get_relation() const { return _rel;}
virtual int read(TMask& m);
virtual int write(const TMask& m);
virtual int rewrite(const TMask& m);
virtual bool remove();
public: public:
virtual TMask* get_mask(int mode) { return _msk;} virtual TMask* get_mask(int mode) { return _msk;}
BA4100_application() {} BA4100_application() {}
virtual ~BA4100_application() {} virtual ~BA4100_application() {}
TRecord_array & alici_rec() { return * _alici_rec; }
}; };
BA4100_application & app() { return (BA4100_application &) main_app(); } BA4100_application & app() { return (BA4100_application &) main_app(); }
bool BA4100_application::fld_notify(TSheet_field& f, int r, KEY k)
{
if (k == K_INS)
{
TMask& m = f.sheet_mask();
TToken_string & t = f.row(r);
t.format("%d", r + FIRST_YEAR);
t.add("");
t.add("");
}
return TRUE;
}
bool BA4100_application::user_create() bool BA4100_application::user_create()
{ {
_msk = new TMask("ba4100a") ; _msk = new TMask("ba4100a") ;
TSheet_field& f = (TSheet_field&) _msk->field(FLD_CM2_ALIQICI);
f.set_notify(fld_notify);
_rel = new TRelation(LF_COMUNI); _rel = new TRelation(LF_COMUNI);
_alici = new TLocalisamfile(LF_ALICI);
_alici_rec = new TRecord_array(LF_ALICI, "ANNO", FIRST_YEAR);
return TRUE; return TRUE;
} }
@ -59,103 +34,9 @@ bool BA4100_application::user_destroy()
{ {
delete _msk; delete _msk;
delete _rel; delete _rel;
delete _alici;
delete _alici_rec;
return TRUE; return TRUE;
} }
int BA4100_application::read(TMask& m)
{
int err = TRelation_application::read(m);
if (err == NOERR)
{
TRectype r = _alici->curr();
r.zero();
r.put("COM", m.get(FLD_CM1_COM));
_alici_rec->read(r); // Ignora errori di lettura aliquote ICI
TSheet_field& f = (TSheet_field&) m.field(FLD_CM2_ALIQICI);
f.destroy();
int last = _alici_rec->last_row();
const int year = TDate(TODAY).year();
if (last < year) last = year;
for (int i = FIRST_YEAR; i <= last; i++)
{
TRectype & r = _alici_rec->row(i, TRUE);
TToken_string & t = f.row(i - FIRST_YEAR);
t = r.get("ANNO");
t.add(r.get("ALIQ"));
t.add(r.get("DETR"));
}
}
return err;
}
int BA4100_application::write(const TMask& m)
{
int err = TRelation_application::write(m);
if (err == NOERR)
{
TSheet_field& f = (TSheet_field&) m.field(FLD_CM2_ALIQICI);
_alici_rec->destroy_rows();
if (m.insert_mode())
_alici_rec->renum_key("COM", m.get(FLD_CM1_COM));
for (int i = 0; i < f.items(); i++)
{
TToken_string & t = f.row(i);
const real aliq(t.get(1));
const real detr(t.get());
if (aliq != ZERO || detr != ZERO)
{
TRectype & r = _alici_rec->row(t.get_int(0), TRUE);
r.put("ALIQ", aliq);
r.put("DETR", detr);
}
}
err = _alici_rec->write();
}
return err;
}
int BA4100_application::rewrite(const TMask& m)
{
int err = TRelation_application::rewrite(m);
if (err == NOERR)
{
TSheet_field& f = (TSheet_field&) m.field(FLD_CM2_ALIQICI);
_alici_rec->destroy_rows();
if (m.insert_mode())
_alici_rec->renum_key("COM", m.get(FLD_CM1_COM));
for (int i = 0; i < f.items(); i++)
{
TToken_string & t = f.row(i);
const real aliq(t.get(1));
const real detr(t.get());
if (aliq != ZERO || detr != ZERO)
{
TRectype & r = _alici_rec->row(t.get_int(0), TRUE);
r.put("ALIQ", aliq);
r.put("DETR", detr);
}
}
err = _alici_rec->rewrite();
}
return err;
}
bool BA4100_application::remove()
{
return TRelation_application::remove() && _alici_rec->remove() == NOERR;
}
int ba4100(int argc, char* argv[]) int ba4100(int argc, char* argv[])
{ {
BA4100_application a ; BA4100_application a ;

View File

@ -40,9 +40,8 @@
#define FLD_CM2_COM 135 #define FLD_CM2_COM 135
#define FLD_CM2_DENCOM 136 #define FLD_CM2_DENCOM 136
#define FLD_CM2_DENSTA 137 #define FLD_CM2_DENSTA 137
#define F_ANNO 101 #define F_CODREG 138
#define F_ICI 102 #define F_DESREG 139
#define F_DETR 103
#define N_STATO "STATO" #define N_STATO "STATO"
#define N_COM "COM" #define N_COM "COM"

View File

@ -405,56 +405,31 @@ BEGIN
OUTPUT FLD_CM2_DENCOMAGG DENCOM OUTPUT FLD_CM2_DENCOMAGG DENCOM
END END
SPREADSHEET FLD_CM2_ALIQICI 36 NUMBER F_CODREG 2
BEGIN BEGIN
PROMPT 26 14 "" PROMPT 2 15 "Cod.regione "
ITEM "ANNO@4" FIELD LF_COMUNI->CODREG
ITEM "ALIQUOTA I.C.I.@15" FLAGS "RZ"
ITEM "DETRAZIONI@15" USE %RGI
END INPUT CODTAB F_CODREG
DISPLAY "Codice" CODTAB
ENDPAGE DISPLAY "Denominazione@50" S0
ENDMASK OUTPUT F_CODREG CODTAB
OUTPUT F_DESREG S0
PAGE "I.C.I." -1 -1 70 9 CHECKTYPE NORMAL
WARNING "Regione assente"
NUMBER F_ANNO 4 END
BEGIN
PROMPT 2 1 "Anno " STRING F_DESREG 50
FLAGS "DR" BEGIN
END PROMPT 23 15 ""
USE %RGI KEY 2
NUMBER F_ICI 6 3 INPUT S0 F_DESREG
BEGIN DISPLAY "Denominazione@50" S0
PROMPT 2 3 "Aliquota I.C.I. " DISPLAY "Codice" CODTAB
FLAGS "R" COPY OUTPUT F_CODREG
GROUP 1 CHECKTYPE NORMAL
NUM_EXPR {(#THIS_FIELD>=0) && (#THIS_FIELD<100)} WARNING "Regione assente"
WARNING "L' aliquota deve esser compresa tra 0 e 100"
END
NUMBER F_DETR 15
BEGIN
PROMPT 2 5 "Importo Detraz. "
FLAGS "R"
PICTURE "."
GROUP 1
END
BUTTON DLG_OK 8 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_CANCEL 8 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_NULL 8 2
BEGIN
PROMPT -33 -1 "~Azzera"
MESSAGE RESET,1@
END END
ENDPAGE ENDPAGE

View File

@ -18,6 +18,7 @@ class TPersone_app : public TRelation_application
{ {
char _tip_ana ; char _tip_ana ;
bool _reset_uff_conc; bool _reset_uff_conc;
bool _reset_codreg;
TString16 _cod_ana ; TString16 _cod_ana ;
TMask* _msk[2] ; TMask* _msk[2] ;
TRelation* _rel[2]; TRelation* _rel[2];
@ -52,8 +53,9 @@ public:
char tip_ana() { return _tip_ana;} char tip_ana() { return _tip_ana;}
virtual bool force_cursor_usage() const { return TRUE;} virtual bool force_cursor_usage() const { return TRUE;}
void set_reset_uff_conc(bool reset) { _reset_uff_conc = reset; } void set_reset_uff_conc(bool reset) { _reset_uff_conc = reset; }
void set_reset_codreg(bool reset) { _reset_codreg = reset; }
TPersone_app(char ta) : _reset_uff_conc(FALSE) { set_tip_ana(ta); } TPersone_app(char ta) : _reset_uff_conc(FALSE), _reset_codreg(FALSE) { set_tip_ana(ta); }
virtual ~TPersone_app() {} virtual ~TPersone_app() {}
}; };
@ -302,6 +304,12 @@ bool gest_uff_imp(TMask_field& f, KEY key)
msk.set(F_UFFCONC, comuni.get("UFFCONC")); msk.set(F_UFFCONC, comuni.get("UFFCONC"));
msk.set(F_CONFIS, msk.get(giuridica ? FLD_AG1_COFI : FLD_AF1_COFI)); msk.set(F_CONFIS, msk.get(giuridica ? FLD_AG1_COFI : FLD_AF1_COFI));
} }
const bool fisica = ! giuridica;
if (fisica && (msk.get(F_CODREG96).empty() || msk.is_running()))
{
msk.set(F_CODREG96, comuni.get("CODREG"));
msk.field(F_CODREG96).on_key(K_TAB);
}
msk.set(F_UFFCONC_P, comuni.get("UFFCONC")); msk.field(F_UFFCONC_P).on_key(K_TAB); msk.set(F_UFFCONC_P, comuni.get("UFFCONC")); msk.field(F_UFFCONC_P).on_key(K_TAB);
msk.set(F_UFFSERV, comuni.get("UFFCSERV")); msk.field(F_UFFSERV).on_key(K_TAB); msk.set(F_UFFSERV, comuni.get("UFFCSERV")); msk.field(F_UFFSERV).on_key(K_TAB);
@ -372,6 +380,35 @@ bool uff_conc(TMask_field& f, KEY key)
return TRUE; return TRUE;
} }
// Handler dell'codice regione
bool cod_reg(TMask_field& f, KEY key)
{
if (f.mask().query_mode())
return TRUE;
if (key == K_ENTER)
{
TMask& msk = f.mask() ;
TPersone_app& app = (TPersone_app&)main_app();
const bool giuridica = app.ana_giu();
TString16 cod_com(msk.get(giuridica ? FLD_AG1_COMRF : FLD_AF2_COMRF));
if (cod_com.empty())
cod_com = msk.get(giuridica ? FLD_AG2_COMRES : FLD_AF1_COMRES) ;
if (cod_com.not_empty())
{
TLocalisamfile comuni(LF_COMUNI);
comuni.setkey(1) ;
comuni.zero() ;
comuni.put(N_COM, cod_com );
app.set_reset_codreg(comuni.read() == NOERR && msk.get(F_CODREG96) == comuni.get("CODREG"));
}
}
return TRUE;
}
bool no_dup_fis(TMask_field& f, KEY key) bool no_dup_fis(TMask_field& f, KEY key)
{ {
if (f.mask().query_mode() || !f.to_check(key)) return TRUE; if (f.mask().query_mode() || !f.to_check(key)) return TRUE;
@ -469,6 +506,7 @@ TMask* TPersone_app::get_mask(int mode)
_msk[MSKF]->set_handler(FLD_AF2_COMRF, gest_uff_imp); _msk[MSKF]->set_handler(FLD_AF2_COMRF, gest_uff_imp);
_msk[MSKF]->set_handler(FLD_AF2_COMCORR, clear_cap); _msk[MSKF]->set_handler(FLD_AF2_COMCORR, clear_cap);
_msk[MSKF]->set_handler(F_UFFCONC, uff_conc); _msk[MSKF]->set_handler(F_UFFCONC, uff_conc);
_msk[MSKF]->set_handler(F_CODREG96, cod_reg);
_msk[MSKF]->set_handler(F_TITCF, tit_cf); _msk[MSKF]->set_handler(F_TITCF, tit_cf);
_msk[MSKF]->set_handler(ba4200_handler); _msk[MSKF]->set_handler(ba4200_handler);
} }
@ -577,6 +615,11 @@ int TPersone_app::write(const TMask& m)
_reset_uff_conc = FALSE; _reset_uff_conc = FALSE;
r->lfile().zero("UFFCONC"); r->lfile().zero("UFFCONC");
} }
if (_reset_codreg)
{
_reset_codreg = FALSE;
r->lfile().zero("CODREG96");
}
manual_save(m); manual_save(m);
return r->write(); return r->write();
} }
@ -592,6 +635,11 @@ int TPersone_app::rewrite(const TMask& m)
_reset_uff_conc = FALSE; _reset_uff_conc = FALSE;
r->lfile().zero("UFFCONC"); r->lfile().zero("UFFCONC");
} }
if (_reset_codreg)
{
_reset_codreg = FALSE;
r->lfile(LF_ANAGFIS).zero("CODREG96");
}
manual_save(m); manual_save(m);
/* if (ana_fis()) /* if (ana_fis())
{ {

View File

@ -381,5 +381,7 @@
#define F_LOCCORR 410 #define F_LOCCORR 410
#define F_UFFCONC_P 411 #define F_UFFCONC_P 411
#define F_CONFIS 412 #define F_CONFIS 412
#define F_CODREG96 413
#define F_DESREG96 414
#endif // __BA4200_H #endif // __BA4200_H

View File

@ -887,6 +887,33 @@ FIELD LF_ANAG->RFDIVERSA
HELP "Dire se il domicilio fiscale e' diverso della sede legale" HELP "Dire se il domicilio fiscale e' diverso della sede legale"
END END
NUMBER F_CODREG96 2
BEGIN
PROMPT 2 9 "Cod.regione al 1 Gennaio "
FIELD LF_ANAGFIS->CODREG96
FLAGS "RZ"
USE %RGI
INPUT CODTAB F_CODREG96
DISPLAY "Codice" CODTAB
DISPLAY "Denominazione@50" S0
OUTPUT F_CODREG96 CODTAB
OUTPUT F_DESREG96 S0
CHECKTYPE NORMAL
WARNING "Regione assente"
END
STRING F_DESREG96 50 40
BEGIN
PROMPT 33 9 ""
USE %RGI KEY 2
INPUT S0 F_DESREG96
DISPLAY "Denominazione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODREG96
CHECKTYPE NORMAL
WARNING "Regione assente"
END
GROUPBOX DLG_NULL 76 5 GROUPBOX DLG_NULL 76 5
BEGIN BEGIN
PROMPT 0 13 "Codici statistici" PROMPT 0 13 "Codici statistici"

2
ba/batbrgi.h Executable file
View File

@ -0,0 +1,2 @@
#define F_CODREG 101
#define F_DESCR 102

44
ba/batbrgi.uml Executable file
View File

@ -0,0 +1,44 @@
#include "ba3100.h"
#include "batbrgi.h"
TOOLBAR "" 0 20 0 2
#include <toolbar.h>
ENDPAGE
PAGE "Regioni" -1 -1 78 18
NUMBER F_CODREG 2
BEGIN
PROMPT 1 2 "Codice "
FIELD CODTAB
FLAGS "RZ"
KEY 1
USE %RGI
INPUT CODTAB F_CODREG
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione @50" S0
OUTPUT F_CODREG CODTAB
OUTPUT F_DESCR S0
CHECKTYPE REQUIRED
END
STRING F_DESCR 50
BEGIN
PROMPT 1 4 "Denonimazione "
FIELD S0
KEY 2
USE %RGI KEY 2
INPUT S0 F_DESCR
DISPLAY "Descrizione @50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODREG
CHECKTYPE REQUIRED
WARNING "La denomonazione e' obbligatoria"
END
ENDPAGE
ENDMASK