From d4bb2684e7b7ee2a3bd7b34db789f8c0646324e1 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 12 Oct 1994 17:57:52 +0000 Subject: [PATCH] Programma di gestione parametri IVA git-svn-id: svn://10.65.10.50/trunk@356 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg5300.cpp | 291 +++++++++++++++++++++++++++++++++++++++++++++++++ cg/cg5300a.h | 14 +++ cg/cg5300a.uml | 173 +++++++++++++++++++++++++++++ 3 files changed, 478 insertions(+) create mode 100755 cg/cg5300.cpp create mode 100755 cg/cg5300a.h create mode 100755 cg/cg5300a.uml diff --git a/cg/cg5300.cpp b/cg/cg5300.cpp new file mode 100755 index 000000000..22af7037b --- /dev/null +++ b/cg/cg5300.cpp @@ -0,0 +1,291 @@ +// cg5300.cpp +// modifica parametri contabilita' relativi alla liquidazione + +#include +#include +#include +#include +#include +#include +#include +#include "cg5.h" +#include "cg5300a.h" + +#define TAB_LIA "LIA" +#define TAB_PLA "PLA" + +class CG5300_App : public TRelation_application +{ + TRelation * _rel; + TMask * _msk; + TLocalisamfile * _attiv; + TLocalisamfile * _ditte; + TTable * _pla; + TArray _atts; // array di stringhe con i codici attivita' + TArray _tips; // array di stringhe con i tipi attivita' + long _lastditta; + TString16 _freqiva; + +protected: + + virtual bool user_create(); + virtual bool user_destroy(); + + // minchia di cristo + virtual TRelation* get_relation() const { return _rel; } + virtual TMask* get_mask(int mode) { return _msk; } + virtual bool changing_mask(int mode) { return FALSE; } + + // file intertface + virtual bool remove() { return TRUE; } + virtual bool protected_record(TRectype&) { return TRUE; } + virtual void init_query_mode(TMask&); + virtual void init_insert_mode(TMask& m); + virtual int rewrite(const TMask& m); + // non si possono aggiungere record, se non ci sono vengono + // creati automaticamente + virtual int write(const TMask& m) { return rewrite(m);} + virtual int read(TMask& m); + + void init_ditta(TMask&); + // notifier + static bool sheet_action(int r, KEY k); + +public: + + CG5300_App() { _lastditta = 0L;} + virtual ~CG5300_App() {} +}; + + +void CG5300_App::init_ditta(TMask& m) + +{ + // qui per evitare casini da cambio ditta + const long newditta = get_firm(); + + if (newditta != _lastditta) + { + _lastditta = newditta; + _atts.destroy(); + _attiv->zero(); + _attiv->put(ATT_CODDITTA, m.get(F_CODDITTA)); + TRectype r(_attiv->curr()); + + for(_attiv->read(_isgteq); _attiv->status() == NOERR && _attiv->curr() == r; + _attiv->next()) + { + // istanzia array _atts on le attivita' della ditta corrente + _atts.add(new TString(_attiv->get(ATT_CODATT))); + _tips.add(new TString(_attiv->get(ATT_TIPOATT))); + } + _ditte->put(NDT_CODDITTA, _lastditta); + if (_ditte->read() == NOERR) + _freqiva = _ditte->get(NDT_FREQVIVA); + else + _freqiva = ""; + } + + // se non c'e' LIA per la ditta, la crea + TTable & lia = (TTable &) _rel->lfile(); + + const TString16 year(m.get(F_YEAR)); + + lia.zero(); + lia.put("CODTAB", year); + lia.put("S7", _freqiva); + lia.write(); + for (int i = 0; i < _atts.items(); i++) + { + // se non ci sono i record di PLA per le attivita', li crea vuoti + const TString& att = (TString&) _atts[i]; + const TString& tips = (TString&) _tips[i]; + + _pla->zero(); + _pla->put("CODTAB", format("%s%s1", (const char *) year, (const char *) att)); + _pla->put("S7", tips); + _pla->write(); + _pla->zero(); + _pla->put("CODTAB", format("%s%s2", (const char *) year, (const char *) att)); + _pla->put("S7", tips); + _pla->write(); + } +} + +bool CG5300_App::user_create() + +{ + _rel = new TRelation(TAB_LIA); + _pla = new TTable(TAB_PLA); + _attiv = new TLocalisamfile(LF_ATTIV); + _ditte = new TLocalisamfile(LF_NDITTE); + _msk = new TMask("cg5300a"); + ((TSheet_field&)_msk->field(F_SHEET_PLA)).set_notify(sheet_action); + + return TRUE; +} + +bool CG5300_App::user_destroy() + +{ + delete _rel; + delete _attiv; + delete _ditte; + delete _msk; + delete _pla; + return TRUE; +} + +bool CG5300_App::sheet_action(int r, KEY k) + +{ + // non si possono cancellare o aggiungere righe in PLA + return (k != K_DEL && k != K_INS); +} + +void CG5300_App::init_query_mode(TMask& m) + +{ + // svuota tutto + TSheet_field& sh = (TSheet_field&)m.field(F_SHEET_PLA); + sh.reset(); + init_ditta(m); +} + +void CG5300_App::init_insert_mode(TMask& m) +{ + TSheet_field& sf = (TSheet_field&)m.field(F_SHEET_PLA); + TToken_string tt(60); + + m.set(F_FREQ_VERS, _freqiva); + + for (int i = 0; i < _atts.items(); i++) + { + TString& att = (TString&)_atts[i]; + TString& tips = (TString&)_tips[i]; + + // cerca l'attivita' in pla + tt = ""; + tt.add(att); + tt.add(tips); + tt.add(""); + tt.add(""); + tt.add(""); + tt.add(""); + sf.row(-1) = tt; + } +} + +int CG5300_App::rewrite(const TMask& m) + +{ + // scrive LIA + // scrive tutte le righe di PLA a partire dalle righe sheet + TSheet_field& sf = (TSheet_field&)m.field(F_SHEET_PLA); + const TString16 year(m.get(F_YEAR)); + int err = NOERR; + + for (int i = 0; err == NOERR && i < _atts.items(); i++) + { + TToken_string& tt = sf.row(i); + const TString& att = (TString&) _atts[i]; + const TString16 tips(tt.get(1)); + + _pla->zero(); + _pla->put("CODTAB", format("%s%s1", (const char *) year, (const char *) att)); + // scrive i campi (vedi a read() per i nomi) + // in base alla riga sheet + _pla->put("S7", tips); // tipo attivita' + _pla->put("R8", tt.get()); // prorata + _pla->put("R5", tt.get()); // plafond art. 8 + _pla->put("R6", tt.get()); // plafond art. 8bis + _pla->put("R7", tt.get()); // plafond art. 9 + if ((err = _pla->write()) == _isreinsert) + err = _pla->rewrite(); + _pla->zero(); + if (err == NOERR) + { + _pla->put("CODTAB", format("%s%s2", (const char *) year, (const char *) att)); + // scrive i campi (vedi a read() per i nomi) + // in base alla riga sheet + _pla->put("S7", tips); // tipo attivita' + _pla->put("R8", tt.get()); // prorata + _pla->put("R5", tt.get()); // plafond art. 8 + _pla->put("R6", tt.get()); // plafond art. 8bis + _pla->put("R7", tt.get()); // plafond art. 9 + if ((err = _pla->write()) == _isreinsert) + err = _pla->rewrite(); + } + } + m.autosave(); + if (err == NOERR) err = _rel->rewrite(); + return err; +} + +int CG5300_App::read(TMask& m) + +{ + // legge da LIA (si istanziano i campi credito prec. e Freq. Vers + // prende le attivita' una per una da _atts e + // crea le righe sheet + m.autoload(); + TSheet_field& sf = (TSheet_field&)m.field(F_SHEET_PLA); + TToken_string tt(60); + const TString16 year(m.get(F_YEAR)); + + sf.reset(); + for (int i = 0; i < _atts.items(); i++) + { + TString& att = (TString&)_atts[i]; + + // cerca l'attivita' in pla + _pla->zero(); + _pla->put("CODTAB", format("%s%s1", (const char *) year, (const char *) att)); + tt = ""; + tt.add(att); + if (_pla->read() == NOERR) + { + tt.add(_pla->get("S7")); // tipo attivita' + tt.add(_pla->get("R8")); // prorata + tt.add(_pla->get("R5")); // plafond art. 8 + tt.add(_pla->get("R6")); // plafond art. 8bis + tt.add(_pla->get("R7")); // plafond art. 9 + } + else + { + tt.add(""); + tt.add(""); + tt.add(""); + tt.add(""); + tt.add(""); + } + sf.row(-1) = tt; + } + + return NOERR; +} + + +int cg5300(int argc, char* argv[]) + +{ + CG5300_App a; + a.run(argc, argv, "Parametri liquidazione"); + return 0; +} + + + + + + + + + + + + + + + + diff --git a/cg/cg5300a.h b/cg/cg5300a.h new file mode 100755 index 000000000..40cc6ef5a --- /dev/null +++ b/cg/cg5300a.h @@ -0,0 +1,14 @@ +#define F_YEAR 301 +#define F_CRED_PREC 302 +#define F_FREQ_VERS 303 +#define F_SHEET_PLA 304 +#define F_CODDITTA 305 +#define F_RAGSOC 306 +#define F_CRED_COST 308 +#define F_CODATT 101 +#define F_DESATT 150 +#define F_TIPOATT 102 +#define F_PRORATA 103 +#define F_P8 104 +#define F_P8B 105 +#define F_P9 106 diff --git a/cg/cg5300a.uml b/cg/cg5300a.uml new file mode 100755 index 000000000..a99433238 --- /dev/null +++ b/cg/cg5300a.uml @@ -0,0 +1,173 @@ +#include "cg5300a.h" +TOOLBAR "" 0 20 0 2 + +#include + +ENDPAGE + +PAGE "Parametri liquidazione" -1 -1 78 15 + +GROUPBOX DLG_NULL 71 3 +BEGIN + PROMPT 4 0 "Ditta" + FLAGS "R" +END + +NUMBER F_CODDITTA 5 +BEGIN + PROMPT 6 1 "Codice " + FLAGS "DFGR" + USE LF_NDITTE + INPUT CODDITTA F_CODDITTA + DISPLAY "Codice" CODDITTA + DISPLAY "Ragione Sociale@50" RAGSOC + OUTPUT F_CODDITTA CODDITTA + OUTPUT F_RAGSOC RAGSOC + CHECKTYPE REQUIRED +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 20 1 "" + FLAGS "D" +END + +NUMBER F_YEAR 4 +BEGIN + PROMPT 6 3 "Anno " + FIELD LIA->CODTAB + USE LIA + INPUT CODTAB F_YEAR + DISPLAY "Anno@20" CODTAB + OUTPUT F_YEAR CODTAB + KEY 1 + FLAGS "RZ" + CHECKTYPE REQUIRED + ADD MASK "" +END + +GROUPBOX DLG_NULL 71 5 +BEGIN + PROMPT 4 4 "Parametri ditta" +END + +LIST F_FREQ_VERS 14 +BEGIN + PROMPT 6 5 "Frequenza versamenti " + ITEM "M|Mensile" + ITEM "T|Trimestrale" + FIELD LIA->S7 +END + +NUMBER F_CRED_PREC 15 0 +BEGIN + PROMPT 6 6 "Credito precedente " + FIELD LIA->R0 + PICTURE "." + FLAGS "R" +END + +NUMBER F_CRED_COST 15 0 +BEGIN + PROMPT 6 7 "Credito di costo " + FIELD LIA->R5 + PICTURE "." + FLAGS "R" +END + +SPREADSHEET F_SHEET_PLA 75 6 +BEGIN + PROMPT 4 10 "Parametri attivita'" + ITEM "Attivita'" + ITEM "Tipo" + ITEM "Pro-rata@15" + ITEM "Plafond art.8@15" + ITEM "Plafond art.8b@15" + ITEM "Plafond art.9@15" +END + +ENDPAGE +ENDMASK + +PAGE "" -1 -1 65 16 + +NUMBER F_CODATT 5 +BEGIN + PROMPT 4 1 "Codice Attivita' " + FLAGS "DURZG" + USE %AIS + INPUT CODTAB F_CODATT + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODATT CODTAB + OUTPUT F_DESATT S0 + CHECKTYPE NORMAL +END + +STRING F_DESATT 50 30 +BEGIN + PROMPT 31 1 "" + FLAGS "D" +END + +LIST F_TIPOATT 26 +BEGIN + PROMPT 4 3 "Tipo " + FLAGS "R" + ITEM " |Altre" + ITEM "M|Mista" + ITEM "E|Mista evidenziata" + ITEM "S|Servizio o mista generica" +END + +NUMBER F_PRORATA 15 0 +BEGIN + PROMPT 4 5 "Pro-Rata " + PICTURE "." + FLAGS "R" + GROUP 1 +END + +NUMBER F_P8 15 0 +BEGIN + PROMPT 4 7 "Plafond art. 8 " + PICTURE "." + FLAGS "R" + GROUP 1 +END + +NUMBER F_P8B 15 0 +BEGIN + PROMPT 4 9 "Plafond art. 8b " + PICTURE "." + FLAGS "R" + GROUP 1 +END + +NUMBER F_P9 15 0 +BEGIN + PROMPT 4 11 "Plafond art. 9 " + PICTURE "." + FLAGS "R" + GROUP 1 +END + + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -13 -1 "" +END + +BUTTON DLG_CANCEL 9 2 +BEGIN + PROMPT -23 -1 "" +END + +BUTTON DLG_NULL 9 2 +BEGIN + PROMPT -33 -1 "Azzera" + MESSAGE RESET,1@ +END + +ENDPAGE +ENDMASK