From a7d9d2697951a25bf3e98e702b473f3bc93d7554 Mon Sep 17 00:00:00 2001 From: luciano Date: Fri, 28 Mar 1997 12:04:57 +0000 Subject: [PATCH] Ultimato azzeramento, aggiunto files tracciati e file con voci menu 770 git-svn-id: svn://10.65.10.50/trunk@4242 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- m770/770.mnu | 17 ++ m770/774300.cpp | 415 ++++++++++++++++++++++++++++++++----------- m770/774300a.h | 20 +-- m770/77logazz.frm | 438 ++++++++++++++++++++++++---------------------- m770/f100.dir | 3 + m770/f100.trr | 11 ++ m770/f101.dir | 3 + m770/f101.trr | 13 ++ m770/f102.dir | 3 + m770/f102.trr | 19 ++ m770/f117.dir | 3 + m770/f117.trr | 9 + m770/f36.dir | 3 + m770/f36.trr | 100 +++++++++++ m770/f37.dir | 3 + m770/f37.trr | 91 ++++++++++ m770/f38.dir | 3 + m770/f38.trr | 9 + m770/f39.dir | 3 + m770/f39.trr | 21 +++ m770/f40.dir | 3 + m770/f40.trr | 17 ++ m770/f41.dir | 3 + m770/f41.trr | 19 ++ m770/f42.dir | 3 + m770/f42.trr | 20 +++ m770/f43.dir | 3 + m770/f43.trr | 9 + m770/f44.dir | 3 + m770/f44.trr | 67 +++++++ m770/f45.dir | 3 + m770/f45.trr | 30 ++++ m770/f46.dir | 3 + m770/f46.trr | 13 ++ m770/f56.dir | 3 + m770/f56.trr | 25 +++ m770/f57.dir | 3 + m770/f57.trr | 23 +++ m770/f58.dir | 3 + m770/f58.trr | 12 ++ m770/f59.dir | 3 + m770/f59.trr | 45 +++++ m770/f60.dir | 3 + m770/f60.trr | 17 ++ m770/f61.dir | 3 + m770/f61.trr | 16 ++ m770/f62.dir | 3 + m770/f62.trr | 15 ++ m770/f63.dir | 3 + m770/f63.trr | 16 ++ m770/f64.dir | 3 + m770/f64.trr | 14 ++ m770/f65.dir | 3 + m770/f65.trr | 14 ++ m770/f66.dir | 3 + m770/f66.trr | 12 ++ m770/f67.dir | 3 + m770/f67.trr | 17 ++ m770/f68.dir | 3 + m770/f68.trr | 8 + m770/f69.dir | 3 + m770/f69.trr | 5 + m770/f70.dir | 3 + m770/f70.trr | 85 +++++++++ m770/f71.dir | 3 + m770/f71.trr | 16 ++ m770/f72.dir | 3 + m770/f72.trr | 10 ++ m770/f73.dir | 3 + m770/f73.trr | 14 ++ m770/f74.dir | 3 + m770/f74.trr | 12 ++ m770/f75.dir | 3 + m770/f75.trr | 10 ++ m770/f76.dir | 3 + m770/f76.trr | 14 ++ m770/f77.dir | 3 + m770/f77.trr | 12 ++ m770/f89.dir | 3 + m770/f89.trr | 9 + m770/f98.dir | 3 + m770/f98.trr | 14 ++ m770/f99.dir | 3 + m770/f99.trr | 11 ++ m770/resetfil.cpp | 357 ++++++++++++++++++------------------- m770/resetfil.h | 160 ++++++++--------- 86 files changed, 1845 insertions(+), 576 deletions(-) create mode 100755 m770/770.mnu create mode 100755 m770/f100.dir create mode 100755 m770/f100.trr create mode 100755 m770/f101.dir create mode 100755 m770/f101.trr create mode 100755 m770/f102.dir create mode 100755 m770/f102.trr create mode 100755 m770/f117.dir create mode 100755 m770/f117.trr create mode 100755 m770/f36.dir create mode 100755 m770/f36.trr create mode 100755 m770/f37.dir create mode 100755 m770/f37.trr create mode 100755 m770/f38.dir create mode 100755 m770/f38.trr create mode 100755 m770/f39.dir create mode 100755 m770/f39.trr create mode 100755 m770/f40.dir create mode 100755 m770/f40.trr create mode 100755 m770/f41.dir create mode 100755 m770/f41.trr create mode 100755 m770/f42.dir create mode 100755 m770/f42.trr create mode 100755 m770/f43.dir create mode 100755 m770/f43.trr create mode 100755 m770/f44.dir create mode 100755 m770/f44.trr create mode 100755 m770/f45.dir create mode 100755 m770/f45.trr create mode 100755 m770/f46.dir create mode 100755 m770/f46.trr create mode 100755 m770/f56.dir create mode 100755 m770/f56.trr create mode 100755 m770/f57.dir create mode 100755 m770/f57.trr create mode 100755 m770/f58.dir create mode 100755 m770/f58.trr create mode 100755 m770/f59.dir create mode 100755 m770/f59.trr create mode 100755 m770/f60.dir create mode 100755 m770/f60.trr create mode 100755 m770/f61.dir create mode 100755 m770/f61.trr create mode 100755 m770/f62.dir create mode 100755 m770/f62.trr create mode 100755 m770/f63.dir create mode 100755 m770/f63.trr create mode 100755 m770/f64.dir create mode 100755 m770/f64.trr create mode 100755 m770/f65.dir create mode 100755 m770/f65.trr create mode 100755 m770/f66.dir create mode 100755 m770/f66.trr create mode 100755 m770/f67.dir create mode 100755 m770/f67.trr create mode 100755 m770/f68.dir create mode 100755 m770/f68.trr create mode 100755 m770/f69.dir create mode 100755 m770/f69.trr create mode 100755 m770/f70.dir create mode 100755 m770/f70.trr create mode 100755 m770/f71.dir create mode 100755 m770/f71.trr create mode 100755 m770/f72.dir create mode 100755 m770/f72.trr create mode 100755 m770/f73.dir create mode 100755 m770/f73.trr create mode 100755 m770/f74.dir create mode 100755 m770/f74.trr create mode 100755 m770/f75.dir create mode 100755 m770/f75.trr create mode 100755 m770/f76.dir create mode 100755 m770/f76.trr create mode 100755 m770/f77.dir create mode 100755 m770/f77.trr create mode 100755 m770/f89.dir create mode 100755 m770/f89.trr create mode 100755 m770/f98.dir create mode 100755 m770/f98.trr create mode 100755 m770/f99.dir create mode 100755 m770/f99.trr diff --git a/m770/770.mnu b/m770/770.mnu new file mode 100755 index 000000000..3318aea3a --- /dev/null +++ b/m770/770.mnu @@ -0,0 +1,17 @@ +17|Modello 770|5 +17|Immissione dichiarazione|776mod -1 +17|Manutenzione dichiarazione|776mod -0 +17|Stampe|18 +17|Parametri di studio|773mod -0 +17|Tabella C.A.A. |773mod -3 %caf +17|Tabella causali|773mod -3 %ca7 +17|Tabella enti previdenziali|773mod -3 %ent +17|Selezione dichiarazione|776mod -2 +17|Generazione versamenti|774 -0 +17|Azzeramento archivi|774 -2 T +18|Stampe| +18|Selezione dichiarazione|776mod -2 +18|Schede percipienti|772mod -0 S +18|Certificazioni|772mod -1 S +18|Lista movimenti percipienti|772mod -2 S +18|Menu stampe dichiarazioni|773mod -1 menu_st "Stampe dichiarazioni" diff --git a/m770/774300.cpp b/m770/774300.cpp index 4dae46daf..2854b9f9a 100755 --- a/m770/774300.cpp +++ b/m770/774300.cpp @@ -22,7 +22,8 @@ // definizione campi del form #define HODD_ANNODIC 1 -#define FODD_TODAY 1 +#define FODD_TODAY 2 +#define FODD_USER 3 // derivazione della classe TArray_sheet per implementare @@ -52,7 +53,7 @@ class TAzzeramento_archivi : public TRelation_application TRelation* _rel; TConfig* _cnf_studio; TRiporti* _riporti; - TIsamtempfile* _logschede; + TIsamtempfile* _logschede; // elenco campi da riportare real _mem_ECCRIT23_BASEBIS; @@ -99,7 +100,8 @@ class TAzzeramento_archivi : public TRelation_application TResetfile* _reset_QUAT; // elenco di VALIDATE_RECORD function - static bool validate_record_SCPERC(const TRectype& rec); + static bool validate_record_SCPERC(const TRectype& rec); + static bool validate_record_SCPERC_2(const TRectype& rec); static bool validate_record_RPAG(const TRectype& rec); static bool validate_record_RVER(const TRectype& rec); static bool validate_record_QUAL(const TRectype& rec); @@ -118,10 +120,10 @@ class TAzzeramento_archivi : public TRelation_application // validazione e azioni su schede percipienti bool is_resetable(const TRectype& rec); - // handler di campi + // handler di campi + static bool F_ANNODIC_hnd(TMask_field& f, KEY key); static bool F_AZZSCH_hnd(TMask_field& f, KEY key); - static bool F_AZZQUA_hnd(TMask_field& f, KEY key); - static bool DLG_SAVEREC_hnd(TMask_field& f, KEY key); + static bool F_AZZQUA_hnd(TMask_field& f, KEY key); // creazione/distruzione istanze d'azzeramento void azzera_create(const bool azzsch, const bool azzqua); @@ -132,6 +134,12 @@ class TAzzeramento_archivi : public TRelation_application // stampa del log delle schede percipienti void print_log(); + + // azzera schede loggate selezionate + void azzera_schlog(); + + // message box di conferma azzeramento + bool conferma_azzera(const TMask& m, const bool azzsch, const bool azzqua); // elaborazioni previste void elab_tutte(const bool azzsch, const bool azzqua); @@ -143,10 +151,12 @@ class TAzzeramento_archivi : public TRelation_application virtual bool user_destroy(); virtual TRelation* get_relation() const { return _rel; } virtual TMask* get_mask(int mode) { return _msk; } - virtual bool changing_mask(int mode) { return FALSE; } + virtual bool changing_mask(int mode) { return FALSE; } virtual void init_modify_mode(TMask&); virtual int rewrite(const TMask& m); virtual int write(const TMask& m); + virtual bool firm_change_enabled() const; + virtual bool save_and_new() const; public: TAzzeramento_archivi(char livello) : _liv(toupper(livello)) {} @@ -185,29 +195,83 @@ bool TArray_sheetDerived::on_key(KEY key) } } break; - } - - + } // richiamo on_key base return TArray_sheet::on_key(key); } +// redifinizione del metodo della TRelation_application +// per avere sempre disattivata la possibilitą di scegliere la ditta +bool TAzzeramento_archivi::firm_change_enabled() const +{ + return FALSE; +} + +// redifinizione del metodo della TRelation_application +// per attivare la modalitą save_and_new (altrimenti disattivata) +bool TAzzeramento_archivi::save_and_new() const +{ return TRUE; } + bool TAzzeramento_archivi::user_create() -{ - _msk = new TMask("774300a"); - _rel = new TRelation(LF_STAZZ); - _cnf_studio = new TConfig(CONFIG_STUDIO,"77"); +{ + // istanza membri oggetto + _msk = new TMask("774300a"); + _rel = new TRelation(LF_STAZZ); + _cnf_studio = new TConfig(CONFIG_STUDIO,"77"); + _riporti = new TRiporti; + + // inizilizzazione anno dichiarazioni _anno_dich = _cnf_studio->get_int(ANNO_SEL); - _riporti = new TRiporti; - // forzo il file di log delle schede all'auto eliminazione - //_logschede->set_autodel(); + // inizializzazione istanza file temporaneo di log + _logschede = NULL; + + // inizializzazione istanze d'azzeramento + _reset_PERC = NULL; + _reset_SCPERC = NULL; + _reset_RVER = NULL; + _reset_RPAG = NULL; + _reset_BASE = NULL; + _reset_BASEBIS = NULL; + _reset_SOCTRASF = NULL; + _reset_DIPEND = NULL; + _reset_QUAA = NULL; + _reset_QUAA1 = NULL; + _reset_QUAA2 = NULL; + _reset_QUAA3 = NULL; + _reset_QUAB = NULL; + _reset_QUAB1 = NULL; + _reset_QUAC = NULL; + _reset_QUAD = NULL; + _reset_QUAD1 = NULL; + _reset_QUAE = NULL; + _reset_QUAE1 = NULL; + _reset_QUAE2 = NULL; + _reset_PROSPE1 = NULL; + _reset_QUAF = NULL; + _reset_RIGHEF = NULL; + _reset_QUAF1 = NULL; + _reset_RIGHEF1 = NULL; + _reset_QUAF2 = NULL; + _reset_RIGHEF2 = NULL; + _reset_QUAG = NULL; + _reset_QUAGD = NULL; + _reset_QUAG1 = NULL; + _reset_QUAH = NULL; + _reset_DETH = NULL; + _reset_QUAL = NULL; + _reset_QUAN = NULL; + _reset_QUAP = NULL; + _reset_QUAQ = NULL; + _reset_QUAR = NULL; + _reset_QUAS = NULL; + _reset_QUAT = NULL; - // attivazione handler campi + // attivazione handler campi + _msk->set_handler(F_ANNODIC,F_ANNODIC_hnd); _msk->set_handler(F_AZZSCH,F_AZZSCH_hnd); - _msk->set_handler(F_AZZQUA,F_AZZQUA_hnd); - _msk->set_handler(DLG_SAVEREC,DLG_SAVEREC_hnd); + _msk->set_handler(F_AZZQUA,F_AZZQUA_hnd); // disattivazione bottoni non utilizzabili _msk->disable(DLG_DELREC); @@ -220,7 +284,51 @@ bool TAzzeramento_archivi::user_destroy() delete _msk; delete _rel; delete _cnf_studio; - delete _riporti; + delete _riporti; + + // distruzione istanza file temporaneo di log + if (_logschede) delete _logschede; + + // distruzione istanze d'azzeramento + if (_reset_PERC) delete _reset_PERC; + if (_reset_SCPERC) delete _reset_SCPERC; + if (_reset_RVER) delete _reset_RVER; + if (_reset_RPAG) delete _reset_RPAG; + if (_reset_BASE) delete _reset_BASE; + if (_reset_BASEBIS) delete _reset_BASEBIS; + if (_reset_SOCTRASF) delete _reset_SOCTRASF; + if (_reset_DIPEND) delete _reset_DIPEND; + if (_reset_QUAA) delete _reset_QUAA; + if (_reset_QUAA1) delete _reset_QUAA1; + if (_reset_QUAA2) delete _reset_QUAA2; + if (_reset_QUAA3) delete _reset_QUAA3; + if (_reset_QUAB) delete _reset_QUAB; + if (_reset_QUAB1) delete _reset_QUAB1; + if (_reset_QUAC) delete _reset_QUAC; + if (_reset_QUAD) delete _reset_QUAD; + if (_reset_QUAD1) delete _reset_QUAD1; + if (_reset_QUAE) delete _reset_QUAE; + if (_reset_QUAE1) delete _reset_QUAE1; + if (_reset_QUAE2) delete _reset_QUAE2; + if (_reset_PROSPE1) delete _reset_PROSPE1; + if (_reset_QUAF) delete _reset_QUAF; + if (_reset_RIGHEF) delete _reset_RIGHEF; + if (_reset_QUAF1) delete _reset_QUAF1; + if (_reset_RIGHEF1) delete _reset_RIGHEF1; + if (_reset_QUAF2) delete _reset_QUAF2; + if (_reset_RIGHEF2) delete _reset_RIGHEF2; + if (_reset_QUAG) delete _reset_QUAG; + if (_reset_QUAGD) delete _reset_QUAGD; + if (_reset_QUAG1) delete _reset_QUAG1; + if (_reset_QUAH) delete _reset_QUAH; + if (_reset_DETH) delete _reset_DETH; + if (_reset_QUAL) delete _reset_QUAL; + if (_reset_QUAN) delete _reset_QUAN; + if (_reset_QUAP) delete _reset_QUAP; + if (_reset_QUAQ) delete _reset_QUAQ; + if (_reset_QUAR) delete _reset_QUAR; + if (_reset_QUAS) delete _reset_QUAS; + if (_reset_QUAT) delete _reset_QUAT; return TRUE; } @@ -231,7 +339,6 @@ void TAzzeramento_archivi::azzera_create(const bool azzsch, const bool azzqua) // richiesto azzeramento schede percipienti if (azzsch) { - _logschede = new TIsamtempfile(LF_SCPERC,"LOGAZZ",TRUE); _reset_PERC = new TResetfile(LF_PERC); _reset_SCPERC = new TResetfile(LF_SCPERC,TRUE); _reset_RVER = new TResetfile(LF_RVER,TRUE); @@ -285,11 +392,14 @@ void TAzzeramento_archivi::azzera_destroy(const bool azzsch, const bool azzqua) // richiesto azzeramento schede percipienti if (azzsch) { - delete _logschede; delete _reset_PERC; delete _reset_SCPERC; delete _reset_RVER; delete _reset_RPAG; + _reset_PERC = NULL; + _reset_SCPERC = NULL; + _reset_RVER = NULL; + _reset_RPAG = NULL; } // richiesto azzeramento quadri @@ -329,16 +439,48 @@ void TAzzeramento_archivi::azzera_destroy(const bool azzsch, const bool azzqua) delete _reset_QUAQ; delete _reset_QUAR; delete _reset_QUAS; - delete _reset_QUAT; + delete _reset_QUAT; + _reset_BASE = NULL; + _reset_BASEBIS = NULL; + _reset_SOCTRASF = NULL; + _reset_DIPEND = NULL; + _reset_QUAA = NULL; + _reset_QUAA1 = NULL; + _reset_QUAA2 = NULL; + _reset_QUAA3 = NULL; + _reset_QUAB = NULL; + _reset_QUAB1 = NULL; + _reset_QUAC = NULL; + _reset_QUAD = NULL; + _reset_QUAD1 = NULL; + _reset_QUAE = NULL; + _reset_QUAE1 = NULL; + _reset_QUAE2 = NULL; + _reset_PROSPE1 = NULL; + _reset_QUAF = NULL; + _reset_RIGHEF = NULL; + _reset_QUAF1 = NULL; + _reset_RIGHEF1 = NULL; + _reset_QUAF2 = NULL; + _reset_RIGHEF2 = NULL; + _reset_QUAG = NULL; + _reset_QUAGD = NULL; + _reset_QUAG1 = NULL; + _reset_QUAH = NULL; + _reset_DETH = NULL; + _reset_QUAL = NULL; + _reset_QUAN = NULL; + _reset_QUAP = NULL; + _reset_QUAQ = NULL; + _reset_QUAR = NULL; + _reset_QUAS = NULL; + _reset_QUAT = NULL; } } // gestione del log delle schede percipienti void TAzzeramento_archivi::handle_log() -{ - // istanza file di log - TIsamtempfile* logschede = new TIsamtempfile(LF_SCPERC,"LOGAZZ",FALSE); - +{ // creazione sheet TString caption = "Schede percipienti insolute"; TString head = "@1|"; @@ -356,44 +498,68 @@ void TAzzeramento_archivi::handle_log() TArray_sheetDerived log_sheet(12, 3, 66, 20, caption, head); log_sheet.add_button(DLG_PRINT, "~Stampa", K_CTRL+'S'); + // tasto di ritorno dall'esecuzione dello sheet + KEY retkey; + + // delimitatore di scope per l'apertura fittizia di LF_SCPERC (che palle!) + { // apertura file fisico originale perchč altrimenti da "erore!" TLocalisamfile f(LF_SCPERC); // riempimento sheet - for (int err = logschede->first(); err == NOERR; err = logschede->next()) - { - TToken_string row; - row.add(" "); - row.add(logschede->get_long("CODDITTA")); - row.add(logschede->get_char("TIPOA")); - row.add(logschede->get_long("CODANAGR")); - row.add(logschede->get_long("NPROG")); - row.add(logschede->get_date("DATADOC")); - row.add(logschede->get("NUMDOC")); - row.add(logschede->get_int("CODCAUS")); - row.add(logschede->get("TOTALE")); - row.add(logschede->get("COMPENSO")); - row.add(logschede->get("SPESE")); - row.add(logschede->get("IVA")); - log_sheet.add(row); - } - - // rimozione istanza file di log - delete logschede; - - // esecuzione sheet - log_sheet.enable_check(); - KEY retkey = log_sheet.run(); + for (int err = _logschede->first(); err == NOERR; err = _logschede->next()) + { + TToken_string row; + row.add(" "); + row.add(_logschede->get_long("CODDITTA")); + row.add(_logschede->get_char("TIPOA")); + row.add(_logschede->get_long("CODANAGR")); + row.add(_logschede->get_long("NPROG")); + row.add(_logschede->get_date("DATADOC")); + row.add(_logschede->get("NUMDOC")); + row.add(_logschede->get_int("CODCAUS")); + row.add(_logschede->get("TOTALE")); + row.add(_logschede->get("COMPENSO")); + row.add(_logschede->get("SPESE")); + row.add(_logschede->get("IVA")); + log_sheet.add(row); + } + // esecuzione sheet + log_sheet.enable_check(); + retkey = log_sheet.run(); + + // rimozione dei record non selezionati dal file temporaneo + if (retkey == K_ENTER && log_sheet.one_checked()) + for (int i = 0; i < log_sheet.items(); i++) + { + if (!log_sheet.checked(i)) + { + _logschede->setkey(1); + _logschede->zero(); + _logschede->put("CODDITTA",log_sheet.row(i).get_long(1)); + _logschede->put("TIPOA",log_sheet.row(i).get_char(2)); + _logschede->put("CODANAGR",log_sheet.row(i).get_long(3)); + _logschede->put("NPROG",log_sheet.row(i).get_int(4)); + if (_logschede->read() == NOERR) + _logschede->remove(); + } + } + } + // interpreto azione restituita switch (retkey) { case K_CTRL+'S': - yesno_box("Vuoi davvero stampare"); - print_log(); + print_log(); + // inizilizzazione puntatore all'istanza del file di log + // perche' il distruttore della relazione usata in stampa + // ne ha effettuato implicitamente la "delete" + _logschede = NULL; break; case K_ENTER: - yesno_box("Vuoi davvero azzerare"); + if (log_sheet.one_checked()) + azzera_schlog(); break; default: break; @@ -406,29 +572,46 @@ void TAzzeramento_archivi::print_log() // istanza form TForm log_form("77logazz"); // sostituisce lfile originale con lfile di log - log_form.relation()->replace(new TIsamtempfile(LF_SCPERC,"LOGAZZ",FALSE)); + log_form.relation()->replace(_logschede); + // apertura file fisico originale perchč altrimenti da "erore!" + TLocalisamfile f(LF_SCPERC); // set anno dichiarazione TForm_item& hodd_annodic = log_form.find_field('H',odd_page,HODD_ANNODIC); hodd_annodic.set(_msk->get(F_ANNODIC)); // set footer standard prassi TForm_item& fodd_today = log_form.find_field('F',odd_page,FODD_TODAY); - fodd_today.set(_msk->get(F_DATASCH)); + TForm_item& fodd_user = log_form.find_field('F',odd_page,FODD_USER); + fodd_today.set(_msk->get(F_DATASCH)); + fodd_user.set(user()); // stampa form log_form.print(); +} + +// azzera le schede loggate selezionate +void TAzzeramento_archivi::azzera_schlog() +{ + // azzeramento schede selezionate (non invertire l'ordine di chiamata!!) + _reset_SCPERC->set_validate_record_function(validate_record_SCPERC_2); + _reset_RPAG->set_validate_record_function(validate_record_RPAG); + _reset_RVER->set_validate_record_function(validate_record_RVER); + _reset_SCPERC->run(); + _reset_RPAG->run(); + _reset_RVER->run(); } // elabora tutte le dichiarazioni void TAzzeramento_archivi::elab_tutte(const bool azzsch, const bool azzqua) { - // esistono schede loggate - bool logged_schede = FALSE; - // creazione istanze d'azzeramento azzera_create(azzsch, azzqua); // richiesto azzeramento schede percipienti if (azzsch) { + // istanza file temporaneo di log + if (_logschede) delete _logschede; + _logschede = new TIsamtempfile(LF_SCPERC,"LOGAZZ",TRUE); + // percipienti _reset_PERC->run(); @@ -438,10 +621,7 @@ void TAzzeramento_archivi::elab_tutte(const bool azzsch, const bool azzqua) _reset_RVER->set_validate_record_function(validate_record_RVER); _reset_SCPERC->run(); _reset_RPAG->run(); - _reset_RVER->run(); - - // esistono schede loggate! - logged_schede = !_logschede->empty(); + _reset_RVER->run(); } // richiesto azzeramento quadri @@ -504,13 +684,13 @@ void TAzzeramento_archivi::elab_tutte(const bool azzsch, const bool azzqua) _reset_QUAT->run(); } + // handle log schede percipienti + if (azzsch && !_logschede->empty()) + handle_log(); + // distruzione istanze d'azzeramento azzera_destroy(azzsch, azzqua); - // handle log schede percipienti - if (logged_schede) - handle_log(); - return; } @@ -549,6 +729,24 @@ bool TAzzeramento_archivi::validate_record_SCPERC(const TRectype& rec) return TRUE; } +bool TAzzeramento_archivi::validate_record_SCPERC_2(const TRectype& rec) +{ + // inizializzo chiave file di log + app()._logschede->setkey(1); + app()._logschede->zero(); + app()._logschede->put("CODDITTA",rec.get_long("CODDITTA")); + app()._logschede->put("TIPOA",rec.get_char("TIPOA")); + app()._logschede->put("CODANAGR",rec.get_long("CODANAGR")); + app()._logschede->put("NPROG",rec.get_int("NPROG")); + + // elimino la scheda se esiste nel file di log + if (app()._logschede->read() == NOERR) + return TRUE; + + // non elimino tutti gli altri record + return FALSE; +} + bool TAzzeramento_archivi::validate_record_RPAG(const TRectype& rec) { // apro file e inizializzo chiave schede percipienti @@ -709,8 +907,8 @@ bool TAzzeramento_archivi::is_resetable(const TRectype& rec) return FALSE; // scheda da non azzerare return TRUE; -} - +} + // implementazione funzione virtuale TRelation_application void TAzzeramento_archivi::init_modify_mode(TMask& m) { @@ -731,18 +929,22 @@ void TAzzeramento_archivi::init_modify_mode(TMask& m) m.set(F_AZZQUA,TRUE); m.disable(F_AZZQUA); } -} - +} + // implementazione funzione virtuale TRelation_application int TAzzeramento_archivi::write(const TMask& m) { bool azzsch = m.get_bool(F_AZZSCH); bool azzqua = m.get_bool(F_AZZQUA); - // azzeramento di tutte le dichiarazioni - elab_tutte(azzsch, azzqua); + // chiede conferma azzeramento + if (conferma_azzera(m, azzsch, azzqua)) + { + elab_tutte(azzsch, azzqua); + return TRelation_application::write(m); + } - return TRelation_application::write(m); + return NOERR; } // implementazione funzione virtuale TRelation_application @@ -753,12 +955,40 @@ int TAzzeramento_archivi::rewrite(const TMask& m) bool azzsch = m.get_bool(F_AZZSCH) && datasch.year() == 0; bool azzqua = m.get_bool(F_AZZQUA) && dataqua.year() == 0; - // azzeramento di tutte le dichiarazioni - elab_tutte(azzsch, azzqua); - - return TRelation_application::rewrite(m); + // chiede conferma azzeramento + if (conferma_azzera(m, azzsch, azzqua)) + { + elab_tutte(azzsch, azzqua); + return TRelation_application::rewrite(m); + } + + return NOERR; } +// message box di conferma azzeramento +bool TAzzeramento_archivi::conferma_azzera(const TMask& m, const bool azzsch, const bool azzqua) +{ + if (azzsch || azzqua) + { + TString testo; + testo << "Conferma azzeramento "; + if (azzsch) + testo << "schede percipienti, "; + if (azzqua) + testo << "quadri dichiarazione, "; + testo << "per l'anno " << m.get(F_ANNODIC) << " ?"; + return yesno_box(testo); + } + + return FALSE; +} + +// handler del campo maschera F_ANNODIC +bool TAzzeramento_archivi::F_ANNODIC_hnd(TMask_field& f, KEY k) +{ + return TRUE; +} + // handler del campo maschera F_AZZSCH bool TAzzeramento_archivi::F_AZZSCH_hnd(TMask_field& f, KEY k) { @@ -806,32 +1036,7 @@ bool TAzzeramento_archivi::F_AZZQUA_hnd(TMask_field& f, KEY k) } } return TRUE; -} - -// handler del bottone maschera DLG_SAVEREC -bool TAzzeramento_archivi::DLG_SAVEREC_hnd(TMask_field& f, KEY k) -{ - if (k == K_SPACE) - { - TMask& m = f.mask(); - TDate datasch = app()._rel->lfile().get_date("DATASCH"); - TDate dataqua = app()._rel->lfile().get_date("DATAQUA"); - bool azzsch = m.get_bool(F_AZZSCH) && datasch.year() == 0; - bool azzqua = m.get_bool(F_AZZQUA) && dataqua.year() == 0; - if (azzsch || azzqua) - { - TString testo; - testo << "Conferma azzeramento "; - if (azzsch) - testo << "schede percipienti, "; - if (azzqua) - testo << "quadri dichiarazione, "; - testo << "per l'anno " << m.get(F_ANNODIC) << " ?"; - return f.yesno_box(testo); - } - } - return TRUE; -} +} // funzione principale di lancio applicazione int Azzeramento_archivi(int argc, char* argv[]) diff --git a/m770/774300a.h b/m770/774300a.h index 11d64b9ba..285256659 100755 --- a/m770/774300a.h +++ b/m770/774300a.h @@ -1,11 +1,9 @@ -// 774300a.h - Storico azzeramenti - -#define F_ANNODIC 201 -#define F_AZZSCH 202 -#define F_USERSCH 203 -#define F_DATASCH 204 -#define F_AZZQUA 205 -#define F_USERQUA 206 -#define F_DATAQUA 207 - -#define LF_STAZZ 109 +// 774300a.h - Storico azzeramenti + +#define F_ANNODIC 201 +#define F_AZZSCH 202 +#define F_USERSCH 203 +#define F_DATASCH 204 +#define F_AZZQUA 205 +#define F_USERQUA 206 +#define F_DATAQUA 207 diff --git a/m770/77logazz.frm b/m770/77logazz.frm index a27d538c2..b42516643 100755 --- a/m770/77logazz.frm +++ b/m770/77logazz.frm @@ -1,205 +1,233 @@ -USE 39 - -END -DESCRIPTION -BEGIN - 39->* "Schede percipienti" -END - -GENERAL -BEGIN - OFFSET 2 2 - FONT "Courier New" - SIZE 8 - GRID "+++++++++-|" -END - -SECTION HEADER ODD 5 - -NUMERO 1 -BEGIN - KEY "Titolo della stampa" - PROMPT -1 1 "Azzeramento archivi per l'anno " -END - -STRINGA 2 -BEGIN - KEY "Sottotitolo" - PROMPT 1 3 "Elenco schede percipienti insolute" -END - -STRINGA 3 -BEGIN - KEY "Colonna ditta" - PROMPT 1 5 "Ditta" -END - -STRINGA 4 -BEGIN - KEY "Colonna tipo percipiente" - PROMPT 7 5 "Tipo" -END - -STRINGA 5 -BEGIN - KEY "Colonna codice percipiente" - PROMPT 12 5 "Codice" -END - -STRINGA 6 -BEGIN - KEY "Colonna numero scheda" - PROMPT 19 5 "Scheda" -END - -STRINGA 7 -BEGIN - KEY "Colonna data documento" - PROMPT 26 5 "Data doc." -END - -STRINGA 8 -BEGIN - KEY "Colonna numero documento" - PROMPT 37 5 "Numero doc." -END - -STRINGA 9 -BEGIN - KEY "Colonna causale" - PROMPT 49 5 "Cau." -END - -STRINGA 10 -BEGIN - KEY "Colonna totale documento" - PROMPT 58 5 "Totale doc." -END - -STRINGA 11 -BEGIN - KEY "Colonna compenso" - PROMPT 77 5 "Compenso" -END - -STRINGA 12 -BEGIN - KEY "Colonna spese" - PROMPT 96 5 "Spese" -END - -STRINGA 13 -BEGIN - KEY "Colonna iva" - PROMPT 114 5 "Iva" -END - -END - -SECTION BODY ODD 1 - -NUMERO 1 5 -BEGIN - KEY "Codice ditta" - PROMPT 1 1 "" - PICTURE "@@@@@" - FIELD 39->CODDITTA -END - -STRINGA 2 1 -BEGIN - KEY "Tipo percipiente" - PROMPT 9 1 "" - FIELD 39->TIPOA -END - -NUMERO 3 5 -BEGIN - KEY "Codice percipiente" - PROMPT 12 1 "" - PICTURE "@@@@@" - FIELD 39->CODANAGR -END - -NUMERO 4 4 -BEGIN - KEY "Numero scheda" - PROMPT 19 1 "" - FIELD 39->NPROG -END - -DATA 5 -BEGIN - KEY "Data documento" - PROMPT 26 1 "" - FIELD 39->DATADOC - FORMAT "1444-" -END - -STRINGA 6 7 -BEGIN - KEY "Numero documento" - PROMPT 37 1 "" - FIELD 39->NUMDOC -END - -NUMERO 7 2 -BEGIN - KEY "Codice causale" - PROMPT 49 1 "" - PICTURE "@@" - FIELD 39->CODCAUS -END - -NUMERO 8 -BEGIN - KEY "Totale documento" - PROMPT 54 1 "" - PICTURE "###############" - FIELD 39->TOTALE -END - -NUMERO 9 -BEGIN - KEY "Compenso" - PROMPT 70 1 "" - PICTURE "###############" - FIELD 39->COMPENSO -END - -NUMERO 10 -BEGIN - KEY "Spese" - PROMPT 86 1 "" - PICTURE "###############" - FIELD 39->SPESE -END - -NUMERO 11 -BEGIN - KEY "Iva" - PROMPT 102 1 "" - PICTURE "###############" - FIELD 39->IVA -END - -END - -SECTION FOOTER ODD 1 - -STRINGA 1 -BEGIN - KEY "Footer standard Prassi" - PROMPT 1 1 "PR.A.S.S.I. S.p.A." -END - -DATA 2 -BEGIN - KEY " " - PROMPT 20 1 "" - FORMAT "1454-" -END - -END - -END +USE 39 + +END +DESCRIPTION +BEGIN + 39->* "Schede percipienti" +END + +GENERAL +BEGIN + OFFSET 1 1 + FONT "Courier New" + SIZE 8 + GRID "+++++++++-|" +END + +SECTION GRAPHICS ODD 62 + +LINEA 1 117 1 +BEGIN + KEY "Riga di separazione titolo/sottotitolo" + PROMPT 1 2 "" +END + +LINEA 2 117 1 +BEGIN + KEY "Riga di separazione titolo/corpo" + PROMPT 1 6 "" +END + +LINEA 3 117 1 +BEGIN + KEY "Riga di separazione corpo/piede" + PROMPT 1 62 "" +END + +END + +SECTION HEADER ODD 6 + +NUMERO 1 +BEGIN + KEY "Titolo della stampa" + PROMPT 1 1 "@BAzzeramento archivi per l'anno " +END + +STRINGA 2 +BEGIN + KEY "Sottotitolo" + PROMPT 1 3 "@BElenco schede percipienti insolute" +END + +STRINGA 3 +BEGIN + KEY "Colonna ditta" + PROMPT 1 5 "Ditta" +END + +STRINGA 4 +BEGIN + KEY "Colonna tipo percipiente" + PROMPT 7 5 "Tipo" +END + +STRINGA 5 +BEGIN + KEY "Colonna codice percipiente" + PROMPT 12 5 "Codice" +END + +STRINGA 6 +BEGIN + KEY "Colonna numero scheda" + PROMPT 19 5 "Scheda" +END + +STRINGA 7 +BEGIN + KEY "Colonna data documento" + PROMPT 26 5 "Data doc." +END + +STRINGA 8 +BEGIN + KEY "Colonna numero documento" + PROMPT 37 5 "Numero doc." +END + +STRINGA 9 +BEGIN + KEY "Colonna causale" + PROMPT 49 5 "Cau." +END + +STRINGA 10 +BEGIN + KEY "Colonna totale documento" + PROMPT 58 5 "Totale doc." +END + +STRINGA 11 +BEGIN + KEY "Colonna compenso" + PROMPT 77 5 "Compenso" +END + +STRINGA 12 +BEGIN + KEY "Colonna spese" + PROMPT 96 5 "Spese" +END + +STRINGA 13 +BEGIN + KEY "Colonna iva" + PROMPT 114 5 "Iva" +END + +END + +SECTION BODY ODD 1 + +NUMERO 1 5 +BEGIN + KEY "Codice ditta" + PROMPT 1 1 "" + PICTURE "@@@@@" + FIELD 39->CODDITTA +END + +STRINGA 2 1 +BEGIN + KEY "Tipo percipiente" + PROMPT 9 1 "" + FIELD 39->TIPOA +END + +NUMERO 3 5 +BEGIN + KEY "Codice percipiente" + PROMPT 12 1 "" + PICTURE "@@@@@" + FIELD 39->CODANAGR +END + +NUMERO 4 4 +BEGIN + KEY "Numero scheda" + PROMPT 19 1 "" + FIELD 39->NPROG +END + +DATA 5 +BEGIN + KEY "Data documento" + PROMPT 26 1 "" + FIELD 39->DATADOC + FORMAT "1444-" +END + +STRINGA 6 7 +BEGIN + KEY "Numero documento" + PROMPT 37 1 "" + FIELD 39->NUMDOC +END + +NUMERO 7 2 +BEGIN + KEY "Codice causale" + PROMPT 49 1 "" + PICTURE "@@" + FIELD 39->CODCAUS +END + +NUMERO 8 +BEGIN + KEY "Totale documento" + PROMPT 54 1 "" + PICTURE "###############" + FIELD 39->TOTALE +END + +NUMERO 9 +BEGIN + KEY "Compenso" + PROMPT 70 1 "" + PICTURE "###############" + FIELD 39->COMPENSO +END + +NUMERO 10 +BEGIN + KEY "Spese" + PROMPT 86 1 "" + PICTURE "###############" + FIELD 39->SPESE +END + +NUMERO 11 +BEGIN + KEY "Iva" + PROMPT 102 1 "" + PICTURE "###############" + FIELD 39->IVA +END + +END + +SECTION FOOTER ODD 3 + +STRINGA 1 +BEGIN + KEY "Footer standard Prassi - logo" + PROMPT 1 1 "PR.A.S.S.I. S.p.A." +END + +DATA 2 +BEGIN + KEY "Footer standard Prassi - data" + PROMPT 22 1 "" + FORMAT "1454-" +END + +STRINGA 3 +BEGIN + KEY "Footer standard Prassi - utente" + PROMPT 45 1 "Utente " +END + +END + +END diff --git a/m770/f100.dir b/m770/f100.dir new file mode 100755 index 000000000..460707aa4 --- /dev/null +++ b/m770/f100.dir @@ -0,0 +1,3 @@ +100 +1 +m770/righef2|0|0|53|4|Righe F2 modello 770||| diff --git a/m770/f100.trr b/m770/f100.trr new file mode 100755 index 000000000..95c7b435f --- /dev/null +++ b/m770/f100.trr @@ -0,0 +1,11 @@ +100 +7 +CODDITTA|3|5|0| +TIPOPRO|7|1|0| +NPROG|2|2|0| +CODCAUS|9|2|0| +ALIQUOTA|4|6|2| +SOGRIT|4|18|0| +ROPE|4|18|0| +1 +CODDITTA+TIPOPRO+NPROG| diff --git a/m770/f101.dir b/m770/f101.dir new file mode 100755 index 000000000..293ad62e2 --- /dev/null +++ b/m770/f101.dir @@ -0,0 +1,3 @@ +101 +1 +m770/quadrogd|0|0|106|4|Distinta G modello 770||| diff --git a/m770/f101.trr b/m770/f101.trr new file mode 100755 index 000000000..b083ca841 --- /dev/null +++ b/m770/f101.trr @@ -0,0 +1,13 @@ +101 +9 +CODDITTA|3|5|0| +TIPOA|1|1|0| +CODANAGR|3|5|0| +NPROG|2|4|0| +NUMQUOTE|4|18|2| +UTSPETT|4|18|0| +ROPESPET|4|18|0| +UTPAG|4|18|0| +ROPE|4|18|0| +1 +CODDITTA+TIPOA+CODANAGR+NPROG| diff --git a/m770/f102.dir b/m770/f102.dir new file mode 100755 index 000000000..285db7fc2 --- /dev/null +++ b/m770/f102.dir @@ -0,0 +1,3 @@ +102 +1 +m770/soctrasf|0|0|196|4|Societa' trasformate modello 770||| diff --git a/m770/f102.trr b/m770/f102.trr new file mode 100755 index 000000000..15b5d4a3c --- /dev/null +++ b/m770/f102.trr @@ -0,0 +1,19 @@ +102 +15 +CODDITTA|3|5|0|Codice ditta +CODFISC|1|16|0|Codice fiscale +DENOMIN|1|40|0|Cognome o denominazione +NOME|1|20|0|Nome (nel caso che la ditta sia intestata a persona fisica) +SESSO|1|1|0|Sesso (nel caso che la ditta sia intestata a persona fisica) +DATANAS|5|8|0|Data di nascita (nel caso che la ditta sia intestata a persona fisica) +COMNAS|1|20|0|Comune di nascita (nel caso che la ditta sia intestata a persona fisica) +PROVNAS|1|2|0|Provincia di nascita (nel caso che la ditta sia intestata a persona fisica) +COMDOM|1|20|0|Comune di domicilio +PROVDOM|1|2|0|Provincia di domicilio +INDDOM|1|35|0|Indirizzo domicilio +CONSBOCC|3|5|0|Consistenza base occupazionale al 12/06/94 +LAVDIPCIN|3|5|0|Lavoratori dipendenti in mobilita' o cassa integrazione al 12/06/94 +DATAINPI|5|8|0|Data inizio periodo d'imposta +DATAFINPI|5|8|0|Data fine periodo d'imposta +1 +CODDITTA| diff --git a/m770/f117.dir b/m770/f117.dir new file mode 100755 index 000000000..fe2dceda5 --- /dev/null +++ b/m770/f117.dir @@ -0,0 +1,3 @@ +117 +1 +m770/stazz|0|0|37|4|Storico azzeramenti modello 770||| diff --git a/m770/f117.trr b/m770/f117.trr new file mode 100755 index 000000000..76cea2949 --- /dev/null +++ b/m770/f117.trr @@ -0,0 +1,9 @@ +117 +5 +ANNODIC|2|4|0|Anno dichiarazione per il quale č stato eseguito l'azzeramento +USERSCH|1|8|0|Utente che ha eseguito l'azzeramento delle schede +DATASCH|5|8|0|Data di azzeramento delle schede +USERQUA|1|8|0|Utente che ha eseguito l'azzeramento di quadri +DATAQUA|5|8|0|Data di azzeramento dei quadri +1 +ANNODIC| diff --git a/m770/f36.dir b/m770/f36.dir new file mode 100755 index 000000000..c61964725 --- /dev/null +++ b/m770/f36.dir @@ -0,0 +1,3 @@ +36 +1 +m770/base|0|0|1209|4|Base modello 770|#9|| diff --git a/m770/f36.trr b/m770/f36.trr new file mode 100755 index 000000000..d5b0de34e --- /dev/null +++ b/m770/f36.trr @@ -0,0 +1,100 @@ +36 +95 +TIPOQUA|7|1|0|Tipo dichiarazione +CODDITTA|3|5|0|Codice ditta +CODDIC|3|5|0|Codice ditta dichiarante +IN_USO|8|1|0|Flag "dichiarazione in uso" +ANNODIC|2|4|0|Anno dichiarazione +RAPPR|3|5|0|Codice rappresentante +CARRAPP|2|1|0|Carica rappresentante +NATTVER|3|6|0|0 +EVNATECC|8|1|0|0 +CODCAAF|3|5|0|0 +CODPRO|3|5|0|0 +N730ALLA|3|6|0|Quadro A - numero allegati 730-96 +N730ALLA2|3|6|0|Quadro A2 - numero allegati 730-95 +SERIE|1|5|0|Parametri generazione quadro L - serie/abi vers. +DATAVERS|5|8|0|Parametri generazione quadro L - data versamento +NUMERO|1|11|0|Parametri generazione quadro L - numero/cab vers. +A0NFCOM|3|5|0| +A0NLDIP|3|5|0|I1-1 Quadro A - Num. fogli compilati +A0COBB|4|18|0|I1-2 Quadro A - Num. lav. dipendenti +A0CNET|4|18|0|I1-3 Quadro A - Contributi obbligatori +A0EPREV|4|18|0|I1-4 Quadro A - Compensi netti +A0IITRA|4|18|0|I1-5 Quadro A - Assegni enti previdenziali +A0CTER|4|18|0|I1-6 Quadro A - Ind. tras. imponibile +A0TIMP|4|18|0|I2-7 Quadro A - Compensi da terzi +A0ILOR|4|18|0|I2-8 Quadro A - Totale imponibile +A0TDET|4|18|0|I2-9 Quadro A - Imposta lorda +A0INCDET|4|18|0|I2-10 Quadro A - Totale detrazioni +A0RTER|4|18|0|I2-11 Quadro A - Incremento detrazioni +A0RDAT|4|18|0|I3-12 Quadro A - Ritenute da terzi +A0ERIT|4|18|0|I3-13 Quadro A - Ritenute datore di lavoro +A0CARR|4|18|0|I3-14 Quadro A - Eccedenza ritenute +A0AARR|4|18|0|I3-15 Quadro A - Contributi arretrati +A0DARR|4|18|0|I3-16 Quadro A - Ammontare arretrati +A0RARR|4|18|0|I4-17 Quadro A - Detrazioni arretrati +A0RITSI|4|18|0|I4-18 Quadro A - Ritenute arretrati +A0CINPS|4|18|0|0 +A0RITOPEVA|4|18|0|0 +A0RITOPESA|4|18|0|0 +A0CIIAUT|4|18|0|0 +A0NADLAV|3|5|0|0 +A0NACAAF|3|5|0|0 +A0CRIMPRAS|4|18|0|0 +A0CRIMP85|4|18|0|I5-23 - Quadro A - Credito d'imposta premio d'assunzione +A3NFCOM|3|5|0|I5-25 - Quadro A - Credito d'imposta ex L.85/95 +A3NUMPER|3|5|0|0 +A3REPT10|4|18|0|0 +A3REPT12|4|18|0|0 +B0NFCOM|3|5|0|0 +B0NLDIP|3|5|0|I8-1 - Quadro B - Numero di fogli compilati +B0TFR93|4|18|0|I8-2 - Quadro B - Numero dipendenti +B0AI|4|18|0|I8-3 - Quadro B - TFR corrisposto nel 95 +B0COLAV|4|18|0|I8-4 - Quadro B - Altre indennitą nel 1995 +B0TFR7492|4|18|0|I8-5 - Quadro B - Contributi obb. a carico lavoratori dipendenti +B0AI7492|4|18|0|I8-6 - Quadro B - TFR erogato dal 74 al 94 +B0RITSI|4|18|0|I9-7 - Quadro B - Altre indennitą erogate dal 74 al 94 +B0IMP|4|18|0|I9-13 - Quadro B - Ritenute operate 'SI' +B0TIMP|4|18|0|I9-8 - Quadro B - Imponibile dell'anno +B0ROP|4|18|0|I9-9 - Quadro B - Totale imponibile +B0AIINPS|4|18|0|I9-10 - Quadro B - Ritenute operate +B0ROPESA|4|18|0|I9-11 - Quadro B - Altre indennitą ai fini contr. INPS +B0CIIAUT|4|18|0|I9-12 - Quadro B - Ritenute operate 'SA' +B0CRIMPRAS|4|18|0|I9-14 - Quadro B - Credito d'imposta imprese d'autotrasporto +B0CRIMP85|4|18|0|I10-15 - Quadro B - Credito d'imposta premio d'assunzione +B1NFCOM|3|5|0|I10-16 - Quadro B - Credito d'imposta ex L.85/95 +B1NPER|3|5|0|I11-1 - Quadro B1 - Numero fogli compilati +B1TIND|4|18|0|I11-2 - Quadro B1 - Numero percipienti +B1TIRM|4|18|0|I11-3 - Quadro B1 - Totale indennitą +B1TICOM|4|18|0|I11-4 - Quadro B1 - Totale imp.r.m. +C0NFCOM|3|5|0|I11-5 - Quadro B1 - Totale imp.compl. +C0NLASS|3|5|0|I12-1 - Quadro C - Num. fogli compilati +C0ACTOT|4|18|0|I12-2 - Quadro C - Numero percipienti +C0CONTSSN|4|18|0|I12-3 - Quadro C - Ammontare corrisposto totale +C0SNSRIT|4|18|0|I12-4 - Quadro C - Contributi SSN +C0ROPE|4|18|0|0 +C0CIIAUT|4|18|0|0 +C0CRIMPRAS|4|18|0|0 +D0NFCOM|3|5|0|I13-8 - Quadro C - Credito d'imposta premio d'assunzione +D0NLAUT|3|5|0|I14-1 - Quadro D - Numero fogli +D0ACTOT|4|18|0|I14-2 - Quadro D - Numero percipienti +D0SNSRIT|4|18|0|I14-3 - Quadro D - Ammontare corrisposto totale +D0ROPE|4|18|0|I14-4 - Quadro D - Somme non soggette a ritenuta +D0CIIAUT|4|18|0|I14-5 - Quadro D - Ritenute operate +D0CRIMPRAS|4|18|0|I14-6 - Quadro D - Credito di imposta imprese di autotrasporto +D0CRIMP85|4|18|0|I15-7 - Quadro D - Credito d'imposta premio d'assunzione +D1NFCOM|3|5|0|I15-8 - Quadro D - Credito d'imposta ex L.85/95 +D1NPER|3|5|0|0 +D1TACOR|4|18|0|0 +D1SNSRIT|4|18|0|0 +D1ROPE|4|18|0|0 +D1CRIMPRAS|4|18|0|0 +LUOVERS|7|1|0|0 +TIPOVERS|7|1|0|0 +RSS|2|1|0|0 +FLART4|8|1|0|0 +DITTACAAF|3|5|0|0 +2 +TIPOQUA+CODDITTA| +CODDIC+TIPOQUA+CODDITTA| diff --git a/m770/f37.dir b/m770/f37.dir new file mode 100755 index 000000000..407c308c7 --- /dev/null +++ b/m770/f37.dir @@ -0,0 +1,3 @@ +37 +1 +m770/basebis|0|0|1272|4|Base modello 770|#36|| diff --git a/m770/f37.trr b/m770/f37.trr new file mode 100755 index 000000000..a8cbd7c8f --- /dev/null +++ b/m770/f37.trr @@ -0,0 +1,91 @@ +37 +86 +TIPOQUA|7|1|0| +CODDITTA|3|5|0|0 +CODDIC|3|5|0|0 +CONSBASOCC|4|18|0| +LAVDIPCIN|4|18|0| +PIMPINI|5|8|0| +PIMPFINE|5|8|0| +ECCRIT12|4|18|0|0 +ECCRIT23|4|18|0|0 +CRIMPDL|4|18|0|0 +CRIMPIVA|4|18|0|0 +CRIMPRIT|4|18|0|0 +CRIMPRES|4|18|0|0 +QCOMP|1|25|0|0 +QSUPPINV|1|26|0|0 +QSUPPRIC|1|26|0|0 +NSUPPM|2|4|0|0 +E0NFCOM|3|5|0|0 +E0NPER|3|5|0|0 +E0AIMP|4|18|0|0 +E0ROPE|4|18|0|0 +E0SNSRIT|4|18|0|0 +E0CRIMPRAS|4|18|0|0 +E1NFCOM|3|5|0|0 +E1NPER|3|5|0|0 +E1SCOR|4|18|0|0 +E1BCOM|4|18|0|0 +E1ROPE|4|18|0|0 +E1ACOM|4|18|0|0 +E1BCOM2|4|18|0|0 +E1ROPE2|4|18|0|0 +E1CRIMPRAS|4|18|0|0 +E2NFCOM|3|5|0|0 +E2NPER|3|5|0|0 +E2ROPE|4|18|0|0 +E2SSRIT|4|18|0|0 +E2CRIMPRAS|4|18|0|0 +F0SRITA|4|18|0|0 +F0ROPEA|4|18|0|0 +F0TACCA|4|18|0|0 +F0EDACCA|4|18|0|0 +F0ERIMA|4|18|0|0 +F0SSRITBF|4|18|0|0 +F0ROPEBF|4|18|0|0 +F0SSVA|4|18|0|0 +F0ROPEVA|4|18|0|0 +F0CRIMPRAS|4|18|0|0 +F1TPLUA|4|18|0|0 +F1ROPEA|4|18|0|0 +F1SSRIT|4|18|0|0 +F1ROPE|4|18|0|0 +F1CRIMPRAS|4|18|0|0 +F2SSRIT|4|18|0|0 +F2ROPE|4|18|0|0 +F2CRIMPRAS|4|18|0|0 +G0NFCOM|3|5|0|0 +G0NAZI1|4|16|0|0 +G0UDEN1|4|18|0|0 +G0UNAT1|4|18|0|0 +G0IUTI2|4|18|0|0 +G0ROPE|4|18|0|0 +G0USRIT3|4|18|0|0 +G0RACC3|4|18|0|0 +G0RIMP3|4|18|0|0 +G0UNSRIT3|4|18|0|0 +G0USPE|4|18|0|0 +G0RITSPET|4|18|0| +G0UPAG|4|18|0|0 +G0NPER|3|5|0|0 +G0CRIMPRAS|4|18|0|0 +G1UCOR|4|18|0|0 +G1USRIT|4|18|0|0 +G1RACC|4|18|0|0 +G1RIMP|4|18|0|0 +G1UNSRIT|4|18|0|0 +G1CRIMPRAS|4|18|0|0 +H0CODLAV|4|18|0|0 +H0COLDIP|4|18|0|0 +H0NPVERH|3|5|0|0 +H0NQLAGG|2|4|0|0 +L0CCONC1|1|3|0|0 +L0CCONC2|1|3|0|0 +L0CCONC3|1|3|0|0 +L0CTES1|2|3|0|0 +L0CTES2|2|3|0|0 +L0CTES3|2|3|0|0 +2 +TIPOQUA+CODDITTA| +CODDIC+TIPOQUA+CODDITTA| diff --git a/m770/f38.dir b/m770/f38.dir new file mode 100755 index 000000000..1e52d2747 --- /dev/null +++ b/m770/f38.dir @@ -0,0 +1,3 @@ +38 +1 +m770/perc|0|0|31|4|Dati percipienti|#6|| diff --git a/m770/f38.trr b/m770/f38.trr new file mode 100755 index 000000000..d1de80f28 --- /dev/null +++ b/m770/f38.trr @@ -0,0 +1,9 @@ +38 +5 +CODDITTA|3|5|0| +TIPOA|1|1|0| +CODANAGR|3|5|0| +FATTBIL|4|18|2| +FLAGCT|8|1|0| +1 +CODDITTA+TIPOA+CODANAGR| diff --git a/m770/f39.dir b/m770/f39.dir new file mode 100755 index 000000000..d4e7f7d08 --- /dev/null +++ b/m770/f39.dir @@ -0,0 +1,3 @@ +39 +1 +m770/schper|0|0|148|4|Schede percipienti|#9|| diff --git a/m770/f39.trr b/m770/f39.trr new file mode 100755 index 000000000..4dbf32226 --- /dev/null +++ b/m770/f39.trr @@ -0,0 +1,21 @@ +39 +16 +CODDITTA|3|5|0| +TIPOA|1|1|0| +CODANAGR|3|5|0| +NPROG|2|4|0| +CODCAUS|9|2|0| +DATADOC|5|8|0| +NUMDOC|1|7|0| +COMPENSO|4|18|2| +SPESE|4|18|2| +IVA|4|18|2| +TOTALE|4|18|2| +FORZATURA|8|1|0| +TOTRIT|4|18|2| +RITSOC|4|18|0| +MESEC|2|2|0| +ANNOC|2|4|0| +2 +CODDITTA+TIPOA+CODANAGR+NPROG| +CODDITTA+TIPOA+CODANAGR+DATADOC+NPROG| diff --git a/m770/f40.dir b/m770/f40.dir new file mode 100755 index 000000000..2a823a70f --- /dev/null +++ b/m770/f40.dir @@ -0,0 +1,3 @@ +40 +1 +m770/rver|0|0|71|4|Righe di versamento|#9|| diff --git a/m770/f40.trr b/m770/f40.trr new file mode 100755 index 000000000..b605347d7 --- /dev/null +++ b/m770/f40.trr @@ -0,0 +1,17 @@ +40 +13 +CODDITTA|3|5|0|0 +TIPOA|1|1|0|0 +CODANAGR|3|5|0|0 +NPROG|2|4|0|0 +NRIGA|2|4|0|0 +VERS1015|8|1|0|0 +DATAVERS|5|8|0|0 +TIPOVERS|1|1|0|0 +RITENUTA|4|18|0|0 +LUOVERS|1|1|0|0 +NUMERO|1|11|0|0 +SERIE|1|5|0|0 +PROGBANC|10|6|0| +1 +CODDITTA+TIPOA+CODANAGR+NPROG+NRIGA| diff --git a/m770/f41.dir b/m770/f41.dir new file mode 100755 index 000000000..88ce93717 --- /dev/null +++ b/m770/f41.dir @@ -0,0 +1,3 @@ +41 +1 +m770/rpag|0|0|165|4|Righe di pagamento|#9|| diff --git a/m770/f41.trr b/m770/f41.trr new file mode 100755 index 000000000..e2cf44794 --- /dev/null +++ b/m770/f41.trr @@ -0,0 +1,19 @@ +41 +15 +CODDITTA|3|5|0| +TIPOA|1|1|0| +CODANAGR|3|5|0| +NPROG|2|4|0| +NRIGA|2|4|0| +DATAPAG|5|8|0| +IMPONIBILE|4|18|0| +PERC|4|6|2| +RITENUTA|4|18|0| +COMPENSO|4|18|0| +NETTO|4|18|0| +NUMVERS|3|5|0| +SPESA|4|18|0| +CTSSNPERC|4|18|0| +CTSSNCOMP|4|18|0| +1 +CODDITTA+TIPOA+CODANAGR+NPROG+NRIGA| diff --git a/m770/f42.dir b/m770/f42.dir new file mode 100755 index 000000000..7d19fa4a8 --- /dev/null +++ b/m770/f42.dir @@ -0,0 +1,3 @@ +42 +1 +m770/quadrol|0|0|91|4|Quadro L modello 770|#9|| diff --git a/m770/f42.trr b/m770/f42.trr new file mode 100755 index 000000000..a0406003b --- /dev/null +++ b/m770/f42.trr @@ -0,0 +1,20 @@ +42 +15 +CODDITTA|3|5|0| +QLDV|5|8|0| +QLMP|2|2|0| +QLAP|2|4|0| +QLLV|7|1|0| +QLTV|7|1|0| +QLCT|2|4|0| +QLAB|2|2|0| +QLSERIE|1|5|0| +QLNUMERO|1|11|0| +QLCODQUA|1|2|0| +QLRITEFF|4|18|0| +QLRITVER|4|18|0| +QLRSS|1|2|0| +QLNOTE|1|7|0| +2 +CODDITTA+QLAP+QLMP+QLDV+QLLV+QLTV+QLCT+QLAB+QLSERIE+QLNUMERO| +CODDITTA+QLDV+QLAP+QLMP+QLLV+QLTV+QLCT+QLAB+QLSERIE+QLNUMERO| diff --git a/m770/f43.dir b/m770/f43.dir new file mode 100755 index 000000000..05f89dd48 --- /dev/null +++ b/m770/f43.dir @@ -0,0 +1,3 @@ +43 +1 +m770/quadroh|0|0|48|4|Quadro h modello 770|#9|| diff --git a/m770/f43.trr b/m770/f43.trr new file mode 100755 index 000000000..69446e61e --- /dev/null +++ b/m770/f43.trr @@ -0,0 +1,9 @@ +43 +5 +CODDITTA|3|5|0| +H1ANNO|2|4|0| +H1ENTE|2|2|0| +H1DAT|4|18|2| +H1LAV|4|18|2| +1 +CODDITTA+H1ANNO+H1ENTE| diff --git a/m770/f44.dir b/m770/f44.dir new file mode 100755 index 000000000..195561197 --- /dev/null +++ b/m770/f44.dir @@ -0,0 +1,3 @@ +44 +1 +m770/quadroa|0|0|922|4|Quadro A modello 770|#9|| diff --git a/m770/f44.trr b/m770/f44.trr new file mode 100755 index 000000000..e65410595 --- /dev/null +++ b/m770/f44.trr @@ -0,0 +1,67 @@ +44 +63 +CODDITTA|3|5|0|Codice ditta della dichiarazione +CODDIP|3|6|0| +NPROG|2|3|0|Numero progressivo della scheda +AREAATT|1|1|0| +TIPO|1|1|0| +NUMGIO|2|3|0| +DATAFR|5|8|0|Data fine rapporto di lavoro +NUMGIODET|2|3|0| +CFDLPREC|1|16|0| +CAUSA|2|1|0|Causa +DENARO|4|18|0|In denaro +NATURA|4|18|0|In natura +COBBDIP|4|18|0| +COMPNETTI|4|18|0|Compensi netti +AMMLORDO|4|18|0| +IACOBBCD|4|18|0| +NORIT|4|18|0| +TOTIMP|4|18|0| +AIENTIPREV|4|18|0| +CCTAMMCONT|4|18|0|Compensi corrisposti da terzi: ammontare assoggettato a contribuzione +TOTIMP2|4|18|2| +ICTOTIMP|4|18|0| +DETCC|4|18|0|Detrazione per coniuge a carico +DETFC|4|18|0|Detrazione per figli a carico +DETAF|4|18|0|Detrazione per altri famigliari a carico +DETLD|4|18|0|Detrazione per lavoro dipendente +DETO|4|18|0|Detrazione per oneri +TOTDET|4|18|0| +INCDETFC|4|18|0| +AMRIOT|4|18|0| +AMRIODL|4|18|0| +ECCRITRIMB|4|18|0|Eccedenza delle ritenute da rimborsare +AMMRITDOV|4|18|0|Ammontare delle ritenute dovute +ERSPSAN|4|18|0| +PRASSVI|4|18|0| +CONPRECO|4|18|0| +COBBDIP2|4|18|0| +AMMIMP|4|18|0| +DETIMPOS|4|18|0| +RITESEG|4|18|0| +SVNASSRI|4|18|0| +AIFCSSN|4|18|0| +CONEFF|1|1|0| +IMPVERS|4|18|0| +INTERE|4|18|0| +CSSN95CV|4|18|0| +INTERE2|4|18|0| +CNEFF|1|1|0| +RETCON|1|1|0| +IMPRIMB|4|18|0| +IMPVER|4|18|0| +INTIRPEF|4|18|0| +IMPVER2|4|18|0| +INTER|4|18|0| +STSIRPEF|4|18|0| +CONRIMB|4|18|0| +CONVER|4|18|0| +INTER2|4|18|0| +CONVER2|4|18|0| +INTER3|4|18|0| +STSCSSN70|4|18|0| +M730NLIQ|2|2|0| +CODCAAF|3|5|0|Codice del CAAF che ha prestato assistenza +1 +CODDITTA+CODDIP+NPROG| diff --git a/m770/f45.dir b/m770/f45.dir new file mode 100755 index 000000000..cad582142 --- /dev/null +++ b/m770/f45.dir @@ -0,0 +1,3 @@ +45 +1 +m770/dipend|0|0|302|4|Dipendenti|#9|| diff --git a/m770/f45.trr b/m770/f45.trr new file mode 100755 index 000000000..afc3df30d --- /dev/null +++ b/m770/f45.trr @@ -0,0 +1,30 @@ +45 +26 +CODDITTA|3|5|0|Codice ditta +CODDIP|3|6|0| +CODFI|1|16|0|Codice fiscale +COGNOME|1|30|0|Cognome +NOME|1|20|0|Nome +SESSO|1|1|0|Sesso +DATANA|5|8|0|Data di nascita +COMUNENA|1|50|0|Comune di nascita +PROVNA|1|5|0|Provincia di nascita +COMRES|1|50|0|Comune di residenza +PROVRES|1|5|0|Provincia di residenza +INDRES|1|35|0|Indirizzo di residenza +QUALIFICA|2|2|0|Qualifica +STATOCIV|2|1|0|Stato civile +CODDIPDEC|3|6|0| +ASSFIS|2|1|0| +CODEREDE0|3|6|0|Codice erede 1 +CODEREDE1|3|6|0|Codice erede 2 +CODEREDE2|3|6|0|Codice erede 3 +CODEREDE3|3|6|0|Codice erede 4 +CODEREDE4|3|6|0|Codice erede 5 +CODEREDE5|3|6|0|Codice erede 6 +CODEREDE6|3|6|0|Codice erede 7 +CODEREDE7|3|6|0|Codice erede 8 +CODEREDE8|3|6|0|Codice erede 9 +CODEREDE9|3|6|0|Codice erede 10 +1 +CODDITTA+CODDIP| diff --git a/m770/f46.dir b/m770/f46.dir new file mode 100755 index 000000000..bd10f1e48 --- /dev/null +++ b/m770/f46.dir @@ -0,0 +1,3 @@ +46 +1 +m770/detth|0|0|86|4|Dettaglio quadro h|#9*2|| diff --git a/m770/f46.trr b/m770/f46.trr new file mode 100755 index 000000000..2d30d96cf --- /dev/null +++ b/m770/f46.trr @@ -0,0 +1,13 @@ +46 +9 +CODDITTA|3|5|0| +ANNO|2|4|0| +ENTE|2|2|0| +DATAVERS|5|8|0| +NUMVERS|3|5|0| +NREGINOTA|3|7|0| +IMPVERS|4|18|2| +CONTRDAT|4|18|2| +CONTRLAV|4|18|2| +1 +CODDITTA+ANNO+ENTE+DATAVERS+NUMVERS| diff --git a/m770/f56.dir b/m770/f56.dir new file mode 100755 index 000000000..35e4b8ab1 --- /dev/null +++ b/m770/f56.dir @@ -0,0 +1,3 @@ +56 +1 +m770/quadroa1|0|0|252|4|Quadro A1 770||| diff --git a/m770/f56.trr b/m770/f56.trr new file mode 100755 index 000000000..f463f3094 --- /dev/null +++ b/m770/f56.trr @@ -0,0 +1,25 @@ +56 +21 +CODDITTA|3|5|0|Codice ditta della dichiarazione +CODDIP|3|6|0| +NPROG|2|3|0|Numero progressivo del rigo +MESERIF|2|2|0| +ANNORIF|2|4|0| +IMPRIMB9|4|18|0|Saldo IRPEF per il 93: imposta rimborsata +IMPVERS10|4|18|0|Saldo IRPEF per il 93: imposta versata +INTER11|4|18|0|Saldo IRPEF per il 93: interessi +IMPVERS12|4|18|0|Prima rata acconto IRPEF per il 94: imposta versata +INTER13|4|18|0|Prima rata acconto IRPEF per il 94: interessi +STASSA14|4|18|0|Prima rata acconto IRPEF per il 94: soprattassa IRPEF 93 e prima rata 94 +CONTRIMB15|4|18|0|Saldo C.S.S.N. 93: contributo a rimborso +CONTVERS16|4|18|0|Saldo C.S.S.N. 93: contributo versato +INTER17|4|18|0|Saldo C.S.S.N. 93: interessi +CONTVER18|4|18|0|Prima rata acconto C.S.S.N. 94: contributo versato +INTER19|4|18|0|Prima rata acconto C.S.S.N. 94: interessi +STASSA20|4|18|0|Prima rata acconto C.S.S.N. 94: soprattassa su C.S.S.N. +CONNEFF21|1|1|0|Conguagli non effettuati +TIPOCONG22|1|1|0|Tipo conguaglio +CODCAAF|3|5|0|Codice CAAF che ha prestato assistenza +DATARIC26|5|8|0| +1 +CODDITTA+CODDIP+NPROG| diff --git a/m770/f57.dir b/m770/f57.dir new file mode 100755 index 000000000..efde943ce --- /dev/null +++ b/m770/f57.dir @@ -0,0 +1,3 @@ +57 +1 +m770/quadroa2|0|0|240|4|Quadro A2 770||| diff --git a/m770/f57.trr b/m770/f57.trr new file mode 100755 index 000000000..1d8fdd3f6 --- /dev/null +++ b/m770/f57.trr @@ -0,0 +1,23 @@ +57 +19 +CODDITTA|3|5|0|Codice ditta della dichiarazione +CODDIP|3|6|0| +NPROG|2|3|0|Numero progressivo del rigo +CONEFF|1|1|0| +RETCON|1|1|0| +SIRPEFRIMB|4|18|0| +VIRPEF|4|18|0| +INTIRPEF|4|18|0| +AIRPEFIV|4|18|0| +AIRPEFINT|4|18|0| +STASSA15|4|18|0| +CONTR16|4|18|0| +CONTRVER|4|18|0| +INTER18|4|18|0| +CONTV19|4|18|0| +INTE20|4|18|0| +SOPRAT21|4|18|0| +M730NLIQ|2|2|0| +CODCAAF|3|5|0|Codice CAAF che ha prestato assistenza +1 +CODDITTA+CODDIP+NPROG| diff --git a/m770/f58.dir b/m770/f58.dir new file mode 100755 index 000000000..d3c32502c --- /dev/null +++ b/m770/f58.dir @@ -0,0 +1,3 @@ +58 +1 +m770/quadroa3|0|0|66|4|Quadro A3 770||| diff --git a/m770/f58.trr b/m770/f58.trr new file mode 100755 index 000000000..74a8e1f36 --- /dev/null +++ b/m770/f58.trr @@ -0,0 +1,12 @@ +58 +8 +CODDITTA|3|5|0|Codice ditta della dichiarazione +NPROG|2|4|0|Numero progressivo riga per ditta +CODDIP|3|6|0| +DIRAPTI|5|8|0|Data inizio rapporto a tempo indeterminato +NGINC15|2|3|0|Numero giorni in incremento +REDCOR16|4|18|0|Reddito corrisposto +NGINC17|2|3|0|Numero giorni in incremento +REDCOR18|4|18|0|Reddito corrisposto +1 +CODDITTA+NPROG+CODDIP| diff --git a/m770/f59.dir b/m770/f59.dir new file mode 100755 index 000000000..0e11e19ef --- /dev/null +++ b/m770/f59.dir @@ -0,0 +1,3 @@ +59 +1 +m770/quadrob|0|0|470|4|Quadro B 770||| diff --git a/m770/f59.trr b/m770/f59.trr new file mode 100755 index 000000000..83b10563f --- /dev/null +++ b/m770/f59.trr @@ -0,0 +1,45 @@ +59 +41 +CODDITTA|3|5|0|Codice ditta +CODDIP|3|6|0|Codice dipendente +NPROG|2|4|0|Progressivo +DATAINI|5|8|0|Data inizio rapporto di lavoro +DATAFIN|5|8|0|Data fine rapporto di lavoro +ANNICOMM|2|2|0|Periodo di commisurazione - anni +MESICOMM|2|2|0|Periodo di commisurazione - mesi +ANNICONV|2|2|0|Periodo convenzionale - anni +MESICONV|2|2|0|Periodo convenzionale - mesi +ANNIPARZ|2|2|0|Tempo parziale - anni +MESIPARZ|2|2|0|Tempo parziale - mesi +PERCPARZ|4|6|2|Tempo parziale - percentuale +QUOTAECC|4|18|0|Quota eccedente +MESEEROG|2|2|0|Mese erogazione - 95 +TITEROG|1|1|0|Titolo erogazione - 95 +PERCABB|4|6|2|Percentuale abbattimento - altre indennita' 95 +AMMNETTO|4|18|0|Ammontare netto +MESEEROG2|2|2|0|Mese erogazione - altre indennita' 95 +TITEROG2|1|1|0|Titolo erogazione - altre indennita' 95 +ABBATT|4|18|0| +AMMNETTO2|4|18|0|Ammontare netto - altre indennita' 95 +CONTLAV|4|18|0|Contributi obbligatori a carico del lavoratore +TFR7494|4|18|0|TFR o indennita' equipollente +INDEN7494|4|18|0|Altre indennita' +TIND7494|4|18|0|Totale indennita' +TRID|4|18|0|Totale riduzioni +TFRIND|4|18|0|TFR o indennita' equipollenti per reddito di riferimento +ALIQUOTA|4|6|2|Aliquota +RETRMEDIA|4|18|0|Retribuzione media biennio precedente +ALIQUOTA2|4|6|2|Aliquota +IMPTFR|4|18|0|Imponibile TFR +IMPIND|4|18|0|Imponibile altre indennita' +IMPANNO|4|18|0|Imponibile dell'anno +TOTIMP|4|18|0|Totale reddito imponibile +ROPEACC|4|18|0|Ritenute operate su acconti e anticipazioni erogati dal 74 al 94 +IMPDOV|4|18|0|Imposta dovuta +RITECC|4|18|0|Ritenute fiscali operate in eccedenza +QUOTASPET|4|18|0|Quota spettante +INDSPETT|4|18|0|Indennita' spettante +ROPE|4|18|0|Ritenute operate +IMPOCSSN|4|18|0|Imponibile C.S.S.N. +1 +CODDITTA+CODDIP+NPROG| diff --git a/m770/f60.dir b/m770/f60.dir new file mode 100755 index 000000000..0be6cf4c6 --- /dev/null +++ b/m770/f60.dir @@ -0,0 +1,3 @@ +60 +1 +m770/quadrob1|0|0|196|4|Quadro B1 770||| diff --git a/m770/f60.trr b/m770/f60.trr new file mode 100755 index 000000000..29b635220 --- /dev/null +++ b/m770/f60.trr @@ -0,0 +1,17 @@ +60 +13 +CODDITTA|3|5|0|Codice ditta +CODDIP|3|6|0|Codice dipendente +NPROG|2|4|0|Progressivo +INDEN|4|18|0|Ammontare delle indennita' di anzianita', di previdenza +AMMIMP|4|18|0|Ammontare imponibile +IMP4|4|18|0|Imponibile al 4% +IMP8|4|18|0|Imponibile al 8% +IMP10|4|18|0|Imponibile al 10% +IMP12|4|18|0|Imponibile al 12% +IMP15|4|18|0|Imponibile al 15% +IMPNETTO|4|18|0|Ammontare imponibile al netto anche delle rit. di ricchezza mobile +IMPO15|4|18|0|Imponibile al 1,5% +IMPO4|4|18|0|Imponibile al 4% +1 +CODDITTA+CODDIP+NPROG| diff --git a/m770/f61.dir b/m770/f61.dir new file mode 100755 index 000000000..34fb4d32b --- /dev/null +++ b/m770/f61.dir @@ -0,0 +1,3 @@ +61 +1 +m770/quadroc|0|0|132|4|Quadro C 770||| diff --git a/m770/f61.trr b/m770/f61.trr new file mode 100755 index 000000000..36ead84c0 --- /dev/null +++ b/m770/f61.trr @@ -0,0 +1,16 @@ +61 +12 +CODDITTA|3|5|0| +TIPOA|1|1|0| +CODANAGR|3|5|0| +NPROG|2|4|0| +CODCAUS|9|2|0| +TOTALE|4|18|0| +CONTSSN|4|18|0| +SOMME|4|18|0| +IMPONIBILE|4|18|0| +RITENUTE|4|18|0| +NETTO|4|18|0| +PERC|4|6|2| +1 +CODDITTA+TIPOA+CODANAGR+NPROG| diff --git a/m770/f62.dir b/m770/f62.dir new file mode 100755 index 000000000..6ccff0e28 --- /dev/null +++ b/m770/f62.dir @@ -0,0 +1,3 @@ +62 +1 +m770/quadrod|0|0|114|4|Quadro D 770||| diff --git a/m770/f62.trr b/m770/f62.trr new file mode 100755 index 000000000..ba133e02e --- /dev/null +++ b/m770/f62.trr @@ -0,0 +1,15 @@ +62 +11 +CODDITTA|3|5|0| +TIPOA|1|1|0| +CODANAGR|3|5|0| +NPROG|2|4|0| +CODCAUS|9|2|0| +TOTALE|4|18|0| +SOMME|4|18|0| +IMPONIBILE|4|18|0| +PERC|4|6|2| +IMPORTO|4|18|0| +NETTO|4|18|0| +1 +CODDITTA+TIPOA+CODANAGR+NPROG| diff --git a/m770/f63.dir b/m770/f63.dir new file mode 100755 index 000000000..791ed828c --- /dev/null +++ b/m770/f63.dir @@ -0,0 +1,3 @@ +63 +1 +m770/quadrod1|0|0|132|4|Quadro D1 770||| diff --git a/m770/f63.trr b/m770/f63.trr new file mode 100755 index 000000000..bc78098b1 --- /dev/null +++ b/m770/f63.trr @@ -0,0 +1,16 @@ +63 +12 +CODDITTA|3|5|0|0 +TIPOA|1|1|0|0 +CODANAGR|3|5|0|0 +NPROG|2|4|0|0 +CODCAUS|9|2|0|0 +TOTALE|4|18|0|0 +QUOTAPRO|4|18|0|0 +SPESEANT|4|18|0|0 +IMPONIBILE|4|18|0|0 +PERC|4|6|2|2 +IMPORTO|4|18|0|0 +NETTO|4|18|0|0 +1 +CODDITTA+TIPOA+CODANAGR+NPROG| diff --git a/m770/f64.dir b/m770/f64.dir new file mode 100755 index 000000000..5c287fd64 --- /dev/null +++ b/m770/f64.dir @@ -0,0 +1,3 @@ +64 +1 +m770/quadroe|0|0|96|4|Quadro E 770||| diff --git a/m770/f64.trr b/m770/f64.trr new file mode 100755 index 000000000..7ca960260 --- /dev/null +++ b/m770/f64.trr @@ -0,0 +1,14 @@ +64 +10 +CODDITTA|3|5|0| +TIPOA|1|1|0| +CODANAGR|3|5|0| +NPROG|2|4|0| +CODCAUS|9|2|0| +IMPONIBILE|4|18|0| +PERC|4|6|2| +IMPORTO|4|18|0| +NETTO|4|18|0| +SOMME|4|18|0| +1 +CODDITTA+TIPOA+CODANAGR+NPROG| diff --git a/m770/f65.dir b/m770/f65.dir new file mode 100755 index 000000000..7d0744d1c --- /dev/null +++ b/m770/f65.dir @@ -0,0 +1,3 @@ +65 +1 +m770/quadroe1|0|0|96|4|Quadro E1 770||| diff --git a/m770/f65.trr b/m770/f65.trr new file mode 100755 index 000000000..624c8b610 --- /dev/null +++ b/m770/f65.trr @@ -0,0 +1,14 @@ +65 +10 +CODDITTA|3|5|0| +TIPOA|1|1|0| +CODANAGR|3|5|0| +NPROG|2|4|0| +CODCAUS|9|2|0| +AMMONTARE|4|18|0| +PERC|4|6|2| +IMPORTO|4|18|0| +NETTO|4|18|0| +SOMME|4|18|0| +1 +CODDITTA+TIPOA+CODANAGR+NPROG| diff --git a/m770/f66.dir b/m770/f66.dir new file mode 100755 index 000000000..11ad52ec1 --- /dev/null +++ b/m770/f66.dir @@ -0,0 +1,3 @@ +66 +1 +m770/quadroe2|0|0|60|4|Quadro E2 770||| diff --git a/m770/f66.trr b/m770/f66.trr new file mode 100755 index 000000000..578d8a220 --- /dev/null +++ b/m770/f66.trr @@ -0,0 +1,12 @@ +66 +8 +CODDITTA|3|5|0| +TIPOA|1|1|0| +CODANAGR|3|5|0| +NPROG|2|4|0| +CODCAUS|9|2|0| +SOGGRIT|4|18|0| +PERC|4|6|2| +ROPE|4|18|0| +1 +CODDITTA+TIPOA+CODANAGR+NPROG| diff --git a/m770/f67.dir b/m770/f67.dir new file mode 100755 index 000000000..60f0e7ec0 --- /dev/null +++ b/m770/f67.dir @@ -0,0 +1,3 @@ +67 +1 +m770/quadrof|0|0|182|4|Quadro F 770||| diff --git a/m770/f67.trr b/m770/f67.trr new file mode 100755 index 000000000..ca59645f0 --- /dev/null +++ b/m770/f67.trr @@ -0,0 +1,17 @@ +67 +13 +CODDITTA|3|5|0| +F_CODCAUS|9|2|0| +A1|4|18|0| +A2|4|18|0| +A3|4|18|0| +A4|4|18|0| +E_CAMBIALI|4|18|0| +E_ALIQUOTA|4|6|2| +E_SOGRIT|4|18|0| +E_ROPE|4|18|0| +F_ROPE|4|18|0| +F_SOGRIT|4|18|0| +F_ALIQUOTA|4|6|2| +1 +CODDITTA| diff --git a/m770/f68.dir b/m770/f68.dir new file mode 100755 index 000000000..86906da08 --- /dev/null +++ b/m770/f68.dir @@ -0,0 +1,3 @@ +68 +1 +m770/quadrof1|0|0|44|4|Quadro F1 770||| diff --git a/m770/f68.trr b/m770/f68.trr new file mode 100755 index 000000000..dc393aac3 --- /dev/null +++ b/m770/f68.trr @@ -0,0 +1,8 @@ +68 +4 +CODDITTA|3|5|0|0 +F_CODCAUS|9|2|0|0 +F1_A1|4|18|0|0 +F1_A2|4|18|0|0 +1 +CODDITTA| diff --git a/m770/f69.dir b/m770/f69.dir new file mode 100755 index 000000000..86515eb3e --- /dev/null +++ b/m770/f69.dir @@ -0,0 +1,3 @@ +69 +1 +m770/quadrof2|0|0|6|4|Quadro F2 770||| diff --git a/m770/f69.trr b/m770/f69.trr new file mode 100755 index 000000000..56b82d56d --- /dev/null +++ b/m770/f69.trr @@ -0,0 +1,5 @@ +69 +1 +CODDITTA|3|5|0|0 +1 +CODDITTA| diff --git a/m770/f70.dir b/m770/f70.dir new file mode 100755 index 000000000..c59ef5760 --- /dev/null +++ b/m770/f70.dir @@ -0,0 +1,3 @@ +70 +1 +m770/quadrog|0|0|2825|4|Quadro G 770||| diff --git a/m770/f70.trr b/m770/f70.trr new file mode 100755 index 000000000..dfbd65c4b --- /dev/null +++ b/m770/f70.trr @@ -0,0 +1,85 @@ +70 +81 +CODDITTA|3|5|0|0 +P1DATAD1|5|8|0|0 +P1DATAD2|5|8|0|0 +P1DATAD3|5|8|0|0 +P1DATAD4|5|8|0|0 +P1TITOLO1|1|18|0|0 +P1TITOLO2|1|18|0|0 +P1TITOLO3|1|18|0|0 +P1TITOLO4|1|18|0|0 +P1DATAP1|5|8|0|0 +P1DATAP2|5|8|0|0 +P1DATAP3|5|8|0|0 +P1DATAP4|5|8|0|0 +P1AMMQ1|4|18|0|0 +P1AMMQ2|4|18|0|0 +P1AMMQ3|4|18|0|0 +P1AMMQ4|4|18|0|0 +P1NUMQ1|3|9|0|0 +P1NUMQ2|3|9|0|0 +P1NUMQ3|3|9|0|0 +P1NUMQ4|3|9|0|0 +P1AMM1|4|18|0|0 +P1AMM2|4|18|0|0 +P1AMM3|4|18|0|0 +P1AMM4|4|18|0|0 +P1NUMQT|3|10|0|0 +P1AMMT|4|18|0|0 +P2DATADE|5|8|0|0 +P2DATADI|5|8|0|0 +P2DESC1|1|35|0|0 +P2DESC2|1|35|0|0 +P2DESC3|1|35|0|0 +P2DATA1|5|8|0|0 +P2DATA2|5|8|0|0 +P2DATA3|5|8|0|0 +P2VAL1|4|18|0|0 +P2VAL2|4|18|0|0 +P2VAL3|4|18|0|0 +P2VALT|4|18|0|0 +P2IMPQ|4|18|0|0 +P22|1|100|0|0 +P23|1|100|0|0 +P24|1|100|0|0 +P25|1|100|0|0 +P26|1|100|0|0 +P22TOT|4|18|0|0 +P23TOT|4|18|0|0 +P24TOT|4|18|0|0 +P25TOT|4|18|0|0 +P26TOT|4|18|0|0 +P33A|1|200|0|0 +P33B|1|200|0|0 +P33TOT|4|18|0|0 +P35A|1|200|0|0 +P35B|1|200|0|0 +P35TOT|4|18|0|0 +P36A|1|200|0|0 +P36B|1|200|0|0 +P36TOT|4|18|0|0 +P321|4|18|0|0 +P322|4|18|0|0 +P323|4|18|0|0 +P324|4|18|0|0 +P325|4|18|0|0 +P32TOT|4|18|0|0 +P371|4|18|0|0 +P372|4|18|0|0 +P373|4|18|0|0 +P374|4|18|0|0 +P375|4|18|0|0 +P37TOT|4|18|0|0 +P421|4|18|0|0 +P422|4|18|0|0 +P423|4|18|0|0 +P424|4|18|0|0 +P425|4|18|0|0 +P426|4|18|0|0 +P427|4|18|0|0 +P428|4|18|0|0 +P429|4|18|0|0 +P42TOT|4|18|0|0 +1 +CODDITTA| diff --git a/m770/f71.dir b/m770/f71.dir new file mode 100755 index 000000000..7fe5f35d2 --- /dev/null +++ b/m770/f71.dir @@ -0,0 +1,3 @@ +71 +1 +m770/quadrog1|0|0|696|4|Quadro G1 770||| diff --git a/m770/f71.trr b/m770/f71.trr new file mode 100755 index 000000000..9d0aa6e26 --- /dev/null +++ b/m770/f71.trr @@ -0,0 +1,16 @@ +71 +12 +CODDITTA|3|5|0| +P12|1|100|0| +P13|1|100|0| +P14|1|100|0| +P15|1|100|0| +P16|1|100|0| +P17|1|100|0| +P12TOT|4|18|0| +P13TOT|4|18|0| +P15TOT|4|18|0| +P16TOT|4|18|0| +P17TOT|4|18|0| +1 +CODDITTA| diff --git a/m770/f72.dir b/m770/f72.dir new file mode 100755 index 000000000..d7522bcbf --- /dev/null +++ b/m770/f72.dir @@ -0,0 +1,3 @@ +72 +1 +m770/quadron|0|0|52|4|Quadro N 770||| diff --git a/m770/f72.trr b/m770/f72.trr new file mode 100755 index 000000000..32e75dbb2 --- /dev/null +++ b/m770/f72.trr @@ -0,0 +1,10 @@ +72 +6 +CODDITTA|3|5|0|Codice ditta +NPROG|2|4|0|Progressivo +MESERIF|2|2|0|Periodo di riferimento - Mese +ANNORIF|2|4|0|Periodo di riferimento - Anno +IMPOSTA|4|18|0|Imposta rimborsata +COMPENSI|4|18|0|Compensi per l'assistenza +1 +CODDITTA+NPROG| diff --git a/m770/f73.dir b/m770/f73.dir new file mode 100755 index 000000000..12c508c20 --- /dev/null +++ b/m770/f73.dir @@ -0,0 +1,3 @@ +73 +1 +m770/quadrop|0|0|93|4|Quadro P 770||BĒG¢| diff --git a/m770/f73.trr b/m770/f73.trr new file mode 100755 index 000000000..74c898d60 --- /dev/null +++ b/m770/f73.trr @@ -0,0 +1,14 @@ +73 +10 +CODDITTA|3|5|0|Codice ditta +NPROG|2|4|0|Progressivo +IMPOSTA|4|18|0|Imposta o soprattassa versata +INTERDIP|4|18|0|Interessi a carico del lavoratore dipendente +INTERDAT|4|18|0|Interessi a carico del datore di lavoro +TIPOVERS|1|1|0|Modalitą di versamento +CODTRIB|2|4|0|Codice tributo +DATAVERS|5|8|0|Data di versamento +NUMERO|1|11|0|Numero Quietanza/CAB/Numero Bollettino +SERIE|1|5|0|Serie/ABI +1 +CODDITTA+NPROG| diff --git a/m770/f74.dir b/m770/f74.dir new file mode 100755 index 000000000..a72c71d5e --- /dev/null +++ b/m770/f74.dir @@ -0,0 +1,3 @@ +74 +1 +m770/quadroq|0|0|71|4|Quadro Q 770||BĒG¢| diff --git a/m770/f74.trr b/m770/f74.trr new file mode 100755 index 000000000..39983502b --- /dev/null +++ b/m770/f74.trr @@ -0,0 +1,12 @@ +74 +8 +CODDITTA|3|5|0|Codice ditta +NPROG|2|4|0|Progressivo +MESEPAG|2|2|0|Periodo di paga - Mese +ANNOPAG|2|4|0|Periodo di paga - Anno +CONTVERS|4|18|0|Contributo versato +CONTRIMB|4|18|0|Contributo rimborsato +INTERESSI|4|18|0|Interessi e/o soprattasse +CODREG|1|1|0|Codice regione +1 +CODDITTA+NPROG| diff --git a/m770/f75.dir b/m770/f75.dir new file mode 100755 index 000000000..44fae251d --- /dev/null +++ b/m770/f75.dir @@ -0,0 +1,3 @@ +75 +1 +m770/quadror|0|0|52|4|Quadro R 770||| diff --git a/m770/f75.trr b/m770/f75.trr new file mode 100755 index 000000000..d1eb8bf1e --- /dev/null +++ b/m770/f75.trr @@ -0,0 +1,10 @@ +75 +6 +CODDITTA|3|5|0|Codice ditta +NPROG|2|4|0|Progressivo +MESERIF|2|2|0|Periodo di riferimento - Mese +ANNORIF|2|4|0|Periodo di riferimento - Anno +IMPRIMB|4|18|0|Imposta rimborsata +COMPENSI|4|18|0|Compensi per l'assistenza +1 +CODDITTA+NPROG| diff --git a/m770/f76.dir b/m770/f76.dir new file mode 100755 index 000000000..15a5d6c60 --- /dev/null +++ b/m770/f76.dir @@ -0,0 +1,3 @@ +76 +1 +m770/quadros|0|0|93|4|Quadro S 770||| diff --git a/m770/f76.trr b/m770/f76.trr new file mode 100755 index 000000000..3aabaec56 --- /dev/null +++ b/m770/f76.trr @@ -0,0 +1,14 @@ +76 +10 +CODDITTA|3|5|0|Codice ditta +NPROG|2|4|0|Progressivo +IMPOSTA|4|18|0|Imposta o soprattassa versata +INTERDIP|4|18|0|Interessi a carico del lavoratore dipendente +INTERDAT|4|18|0|Interessi a carico del datore di lavoro +TIPOVERS|1|1|0|Modalitą di versamento +CODTRIB|2|4|0|Codice tributo +DATAVERS|5|8|0|Data di versamento +NUMERO|1|11|0|Numero Quietanza/CAB/Numero Bollettino +SERIE|1|5|0|Serie/ABI +1 +CODDITTA+NPROG| diff --git a/m770/f77.dir b/m770/f77.dir new file mode 100755 index 000000000..3d3cde77a --- /dev/null +++ b/m770/f77.dir @@ -0,0 +1,3 @@ +77 +1 +m770/quadrot|0|0|71|4|Quadro T 770||| diff --git a/m770/f77.trr b/m770/f77.trr new file mode 100755 index 000000000..984ae6857 --- /dev/null +++ b/m770/f77.trr @@ -0,0 +1,12 @@ +77 +8 +CODDITTA|3|5|0|Codice ditta +NPROG|2|4|0|Progressivo +MESEPAG|2|2|0|Periodo di paga - Mese +ANNOPAG|2|4|0|Periodo di paga - Anno +CONTVERS|4|18|0|Contributo versato +CONTRIMB|4|18|0|Contributo rimborsato +INTERESSI|4|18|0|Interessi e/o soprattasse +CODREG|1|1|0|Codice regione +1 +CODDITTA+NPROG| diff --git a/m770/f89.dir b/m770/f89.dir new file mode 100755 index 000000000..53d7eba33 --- /dev/null +++ b/m770/f89.dir @@ -0,0 +1,3 @@ +89 +1 +m770/prospe1|0|0|62|4|Prospetto E1 770||| diff --git a/m770/f89.trr b/m770/f89.trr new file mode 100755 index 000000000..b5ccdace9 --- /dev/null +++ b/m770/f89.trr @@ -0,0 +1,9 @@ +89 +5 +CODDITTA|3|5|0|0 +CODCAUS|9|2|0|0 +COMPENSO|4|18|0|0 +IMPONIBILE|4|18|0|0 +RITENUTA|4|18|0|0 +1 +CODDITTA+CODCAUS| diff --git a/m770/f98.dir b/m770/f98.dir new file mode 100755 index 000000000..25dc25e7e --- /dev/null +++ b/m770/f98.dir @@ -0,0 +1,3 @@ +98 +1 +m770/righef|0|0|107|4|Righe F modello 770||| diff --git a/m770/f98.trr b/m770/f98.trr new file mode 100755 index 000000000..267b9abd5 --- /dev/null +++ b/m770/f98.trr @@ -0,0 +1,14 @@ +98 +10 +CODDITTA|3|5|0| +TIPOPRO|7|1|0| +NPROG|2|2|0| +CODCAUS|9|2|0| +ALIQUOTA|4|6|2| +SOGRIT|4|18|0| +ROPE|4|18|0| +ACCONTI|4|18|0| +VERSALDO|4|18|0| +VERSECC|4|18|0| +1 +CODDITTA+TIPOPRO+NPROG| diff --git a/m770/f99.dir b/m770/f99.dir new file mode 100755 index 000000000..c20c4d483 --- /dev/null +++ b/m770/f99.dir @@ -0,0 +1,3 @@ +99 +1 +m770/righef1|0|0|53|4|Righe F1 del modello 770||| diff --git a/m770/f99.trr b/m770/f99.trr new file mode 100755 index 000000000..688086443 --- /dev/null +++ b/m770/f99.trr @@ -0,0 +1,11 @@ +99 +7 +CODDITTA|3|5|0| +TIPOPRO|7|1|0| +NPROG|2|2|0| +CODCAUS|9|2|0| +ALIQUOTA|4|6|2| +SOGRIT|4|18|0| +ROPE|4|18|0| +1 +CODDITTA+TIPOPRO+NPROG| diff --git a/m770/resetfil.cpp b/m770/resetfil.cpp index e16dd4186..7ffa3d8c1 100755 --- a/m770/resetfil.cpp +++ b/m770/resetfil.cpp @@ -1,176 +1,181 @@ -#include "resetfil.h" - - -/////////////////////////////////////////////////////////// -// TResetfile -/////////////////////////////////////////////////////////// - -TResetfile::TResetfile(int logicnum, bool remove) - : _file_num(logicnum), _removerec(remove), - _validate_record_function(NULL), - _validate_field_function(NULL), - _before_reset_function(NULL), - _after_reset_function(NULL) -{ - // oggetto file da azzerare - _file = new TSystemisamfile(_file_num); -} - -TResetfile::~TResetfile() -{ - // pack file se richiesto rimozione record - if(_removerec) - _file->pack(); - - delete _file; -} - -// @doc INTERNAL -// @mfunc ritorna se il campo

č un campo chiave -bool TResetfile::iskeyfield(const RecDes& recd, const int fd) const -{ - // inizializzo risultato da restituire - bool found = FALSE; - - // loop di scansione delle chiavi del file - for (int i = 0; i < recd.NKeys && !found; i++) - { - - // Elenco dei campi della chiave - const KeyDes& keyd = recd.Ky[i]; - - // loop di scansione dei campi della chiave - for (int j = 0; j < keyd.NkFields && !found; j++) - if (fd == keyd.FieldSeq[j] % MaxFields) - found = TRUE; - } - - return found; -} - -// @doc INTERNAL -// @mfunc carica l'array

con i campi da azzerare -// @rfunc ritorna il numero di campi caricati -int TResetfile::load_resetable_fields(const RecDes& recd, - TString_array& resetable_fields) -{ - // inizializzo numero campi da restituire - int numfld = 0; - - for (int i = 0; i < recd.NFields; i++) - { - // non azzero i campi chiave - if (iskeyfield(recd, i)) - continue; - - // Descrittore campo - RecFieldDes& fieldd = recd.Fd[i]; - - // non azzero i campi indefiniti - if (fieldd.TypeF == _nullfld) - continue; - - // aggiungo campo da azzerare all'array - resetable_fields.add(fieldd.Name,numfld++); - } - - return numfld; -} - -// @doc EXTERNAL -// @mfunc esegue l'azzeramento del file -// @rfunc ritorna il codice errore relativo ad operazioni sul file -int TResetfile::run() -{ - // codice errore - int err; - - // numero campi da azzerare - int num_resetable_fields; - - // Apertura file con bloccaggio - err = _file->open(_excllock); - if (err != NOERR) - return err; - - // riferimento a record corrente - TRectype& rec = _file->curr(); - - // Descrittore record - const RecDes* recd = rec.rec_des(); - - // array dei campi da azzerare - TString_array resetable_fields(recd->NFields); - - // riempimento array dei campi da azzerare - if (!_removerec) - num_resetable_fields = load_resetable_fields(*recd, resetable_fields); - - // reperimento nome file file - const char* desfile = _file->description(); - - // composizione testo per indicatore progressivo - TString testo; - testo.format("Azzeramento %s", desfile); - - // inizializzazione indice massimo e parziale per indicatore progressivo - const long pmax = _file->items(); - long pi = 0L; - - // istanza indicatore progressivo per avanzamento azzeramento - TProgind p(pmax, testo, FALSE, TRUE); - - // loop di scansione file da azzerare - for (err = _file->first(); err == NOERR; err = _file->next()) - { - // incremento indicatore progressivo - p.addstatus(1); - pi++; - - // richiamo handler VALIDATE_RECORD - if (_validate_record_function) - if (!_validate_record_function(rec)) - continue; - - // richiamo handler BEFORE_RESET - if (_before_reset_function) - _before_reset_function(rec); - - // rimozione del record - if(_removerec) - _file->remove(); - - // azzeramento del record - else - { - // loop di scansione campi da azzerare - for (int i = 0; i < num_resetable_fields; i++) - { - // richiamo handler VALIDATE_FIELD - if (_validate_field_function) - if (!_validate_field_function(rec, resetable_fields.row(i))) - continue; - - // azzeramento campi - rec.zero(resetable_fields.row(i)); - } - } - - // richiamo handler AFTER_RESET - if (_after_reset_function) - _after_reset_function(rec); - - // registrazione record - if(!_removerec) - _file->rewrite(); - } - - // rabbocco indicatore progressivo - p.addstatus(pmax-pi); - - // chiusura file - _file->close(); - - return err; -} - +#include "resetfil.h" + + +/////////////////////////////////////////////////////////// +// TResetfile +/////////////////////////////////////////////////////////// + +TResetfile::TResetfile(int logicnum, bool remove) + : _file_num(logicnum), _removerec(remove), + _validate_record_function(NULL), + _validate_field_function(NULL), + _before_reset_function(NULL), + _after_reset_function(NULL), + _is_reseted(FALSE) +{ + // oggetto file da azzerare + _file = new TSystemisamfile(_file_num); +} + +TResetfile::~TResetfile() +{ + // pack file se richiesto rimozione record + // e file azzerato + if(_removerec && _is_reseted) + _file->pack(); + + delete _file; +} + +// @doc INTERNAL +// @mfunc ritorna se il campo

č un campo chiave +bool TResetfile::iskeyfield(const RecDes& recd, const int fd) const +{ + // inizializzo risultato da restituire + bool found = FALSE; + + // loop di scansione delle chiavi del file + for (int i = 0; i < recd.NKeys && !found; i++) + { + + // Elenco dei campi della chiave + const KeyDes& keyd = recd.Ky[i]; + + // loop di scansione dei campi della chiave + for (int j = 0; j < keyd.NkFields && !found; j++) + if (fd == keyd.FieldSeq[j] % MaxFields) + found = TRUE; + } + + return found; +} + +// @doc INTERNAL +// @mfunc carica l'array

con i campi da azzerare +// @rfunc ritorna il numero di campi caricati +int TResetfile::load_resetable_fields(const RecDes& recd, + TString_array& resetable_fields) +{ + // inizializzo numero campi da restituire + int numfld = 0; + + for (int i = 0; i < recd.NFields; i++) + { + // non azzero i campi chiave + if (iskeyfield(recd, i)) + continue; + + // Descrittore campo + RecFieldDes& fieldd = recd.Fd[i]; + + // non azzero i campi indefiniti + if (fieldd.TypeF == _nullfld) + continue; + + // aggiungo campo da azzerare all'array + resetable_fields.add(fieldd.Name,numfld++); + } + + return numfld; +} + +// @doc EXTERNAL +// @mfunc esegue l'azzeramento del file +// @rfunc ritorna il codice errore relativo ad operazioni sul file +int TResetfile::run() +{ + // codice errore + int err; + + // numero campi da azzerare + int num_resetable_fields; + + // Apertura file con bloccaggio + err = _file->open(_excllock); + if (err != NOERR) + return err; + + // riferimento a record corrente + TRectype& rec = _file->curr(); + + // Descrittore record + const RecDes* recd = rec.rec_des(); + + // array dei campi da azzerare + TString_array resetable_fields(recd->NFields); + + // riempimento array dei campi da azzerare + if (!_removerec) + num_resetable_fields = load_resetable_fields(*recd, resetable_fields); + + // reperimento nome file file + const char* desfile = _file->description(); + + // composizione testo per indicatore progressivo + TString testo; + testo.format("Azzeramento %s", desfile); + + // inizializzazione indice massimo e parziale per indicatore progressivo + const long pmax = _file->items(); + long pi = 0L; + + // istanza indicatore progressivo per avanzamento azzeramento + TProgind p(pmax, testo, FALSE, TRUE); + + // loop di scansione file da azzerare + for (err = _file->first(); err == NOERR; err = _file->next()) + { + // incremento indicatore progressivo + p.addstatus(1); + pi++; + + // richiamo handler VALIDATE_RECORD + if (_validate_record_function) + if (!_validate_record_function(rec)) + continue; + + // richiamo handler BEFORE_RESET + if (_before_reset_function) + _before_reset_function(rec); + + // rimozione del record + if(_removerec) + _file->remove(); + + // azzeramento del record + else + { + // loop di scansione campi da azzerare + for (int i = 0; i < num_resetable_fields; i++) + { + // richiamo handler VALIDATE_FIELD + if (_validate_field_function) + if (!_validate_field_function(rec, resetable_fields.row(i))) + continue; + + // azzeramento campi + rec.zero(resetable_fields.row(i)); + } + } + + // richiamo handler AFTER_RESET + if (_after_reset_function) + _after_reset_function(rec); + + // registrazione record + if(!_removerec) + _file->rewrite(); + } + + // rabbocco indicatore progressivo + p.addstatus(pmax-pi); + + // chiusura file + _file->close(); + + // file azzerato + _is_reseted = TRUE; + + return err; +} + diff --git a/m770/resetfil.h b/m770/resetfil.h index 18ea59dde..adaee24c6 100755 --- a/m770/resetfil.h +++ b/m770/resetfil.h @@ -1,79 +1,81 @@ -#ifndef __RESETFIL_H -#define __RESETFIL_H - -#ifndef __ISAM_H -#include -#include -#endif - -/////////////////////////////////////////////////////////// -// TResetfile -/////////////////////////////////////////////////////////// - -// @doc EXTERNAL - -// @type VALIDATE_RECORD | Prototipo funzione per validare se un record e' da azzerare. -typedef bool (*VALIDATE_RECORD)(const TRectype& rec); - -// @type VALIDATE_FIELD | Prototipo funzione per validare se un campo e' da azzerare. -typedef bool (*VALIDATE_FIELD)(const TRectype& rec, const TString& fld); - -// @type BEFORE_RESET | Prototipo funzione richiamata prima dell'azzeramento di un record. -typedef void (*BEFORE_RESET)(TRectype& rec); - -// @type AFTER_RESET | Prototipo funzione richiamata dopo l'azzeramento di un record. -typedef void (*AFTER_RESET)(TRectype& rec); - -// @class TResetfile | Classe per l'azzeramento di un file -// -// @base public | TObject -class TResetfile : public TObject - -// @author:(INTERNAL) Luciano - -// @access:(INTERNAL) Private Member -{ - // @cmember:(INTERNAL) numero logico del file da azzerare - int _file_num; - // @cmember:(INTERNAL) file da azzerare - TSystemisamfile* _file; - // @cmember:(INTERNAL) effettuare remove dei record (default FALSE) - bool _removerec; - // @cmember:(INTERNAL) funzione di validate per azzerare un record - VALIDATE_RECORD _validate_record_function; - // @cmember:(INTERNAL) funzione di validate per azzerare un campo - VALIDATE_FIELD _validate_field_function; - // @cmember:(INTERNAL) funzione richiamata prima dell'azzeramento di un record - BEFORE_RESET _before_reset_function; - // @cmember:(INTERNAL) funzione richiamata dopo l'azzeramento di un record - AFTER_RESET _after_reset_function; - // @cmember:(INTERNAL) ritorna se il campo

č un campo chiave - bool iskeyfield(const RecDes& recd, const int fd) const; - // @cmember:(INTERNAL) ritorna e carica il numero campi da azzerare - int TResetfile::load_resetable_fields(const RecDes& recd,TString_array& resetable_fields); - -// @access Public Member -public: - // @cmember setta la funzione di validate se record da azzerare - void set_validate_record_function(VALIDATE_RECORD fun) - {_validate_record_function = fun;} - // @cmember setta la funzione di validate se campo da azzerare - void set_validate_field_function(VALIDATE_FIELD fun) - {_validate_field_function = fun;} - // @cmember setta la funzione richiamata prima dell'azzeramento di un record - void set_before_reset_function(BEFORE_RESET fun) - {_before_reset_function = fun;} - // @cmember setta la funzione richiamata dopo l'azzeramento di un record - void set_after_reset_function(AFTER_RESET fun) - {_after_reset_function = fun;} - // @cmember esegue l'azzeramento del file - int run(); - - // @cmember Costruttore - TResetfile(int logicnum, bool remove = FALSE); - // @cmember Distruttore - virtual ~TResetfile(); -}; - -#endif - +#ifndef __RESETFIL_H +#define __RESETFIL_H + +#ifndef __ISAM_H +#include +#include +#endif + +/////////////////////////////////////////////////////////// +// TResetfile +/////////////////////////////////////////////////////////// + +// @doc EXTERNAL + +// @type VALIDATE_RECORD | Prototipo funzione per validare se un record e' da azzerare. +typedef bool (*VALIDATE_RECORD)(const TRectype& rec); + +// @type VALIDATE_FIELD | Prototipo funzione per validare se un campo e' da azzerare. +typedef bool (*VALIDATE_FIELD)(const TRectype& rec, const TString& fld); + +// @type BEFORE_RESET | Prototipo funzione richiamata prima dell'azzeramento di un record. +typedef void (*BEFORE_RESET)(TRectype& rec); + +// @type AFTER_RESET | Prototipo funzione richiamata dopo l'azzeramento di un record. +typedef void (*AFTER_RESET)(TRectype& rec); + +// @class TResetfile | Classe per l'azzeramento di un file +// +// @base public | TObject +class TResetfile : public TObject + +// @author:(INTERNAL) Luciano + +// @access:(INTERNAL) Private Member +{ + // @cmember:(INTERNAL) numero logico del file da azzerare + int _file_num; + // @cmember:(INTERNAL) stato file : TRUE azzerato,FALSE non azzerato + bool _is_reseted; + // @cmember:(INTERNAL) file da azzerare + TSystemisamfile* _file; + // @cmember:(INTERNAL) effettuare remove dei record (default FALSE) + bool _removerec; + // @cmember:(INTERNAL) funzione di validate per azzerare un record + VALIDATE_RECORD _validate_record_function; + // @cmember:(INTERNAL) funzione di validate per azzerare un campo + VALIDATE_FIELD _validate_field_function; + // @cmember:(INTERNAL) funzione richiamata prima dell'azzeramento di un record + BEFORE_RESET _before_reset_function; + // @cmember:(INTERNAL) funzione richiamata dopo l'azzeramento di un record + AFTER_RESET _after_reset_function; + // @cmember:(INTERNAL) ritorna se il campo

č un campo chiave + bool iskeyfield(const RecDes& recd, const int fd) const; + // @cmember:(INTERNAL) ritorna e carica il numero campi da azzerare + int TResetfile::load_resetable_fields(const RecDes& recd,TString_array& resetable_fields); + +// @access Public Member +public: + // @cmember setta la funzione di validate se record da azzerare + void set_validate_record_function(VALIDATE_RECORD fun) + {_validate_record_function = fun;} + // @cmember setta la funzione di validate se campo da azzerare + void set_validate_field_function(VALIDATE_FIELD fun) + {_validate_field_function = fun;} + // @cmember setta la funzione richiamata prima dell'azzeramento di un record + void set_before_reset_function(BEFORE_RESET fun) + {_before_reset_function = fun;} + // @cmember setta la funzione richiamata dopo l'azzeramento di un record + void set_after_reset_function(AFTER_RESET fun) + {_after_reset_function = fun;} + // @cmember esegue l'azzeramento del file + int run(); + + // @cmember Costruttore + TResetfile(int logicnum, bool remove = FALSE); + // @cmember Distruttore + virtual ~TResetfile(); +}; + +#endif +