diff --git a/cg/cg4501.cpp b/cg/cg4501.cpp new file mode 100755 index 000000000..9dac5f032 --- /dev/null +++ b/cg/cg4501.cpp @@ -0,0 +1,279 @@ +//Apertura nuovo esercizio IVA +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cg4501.h" +#include "cg4500b.h" + +bool TAp_iva::mask_annoiva (TMask_field& f, KEY k) +{ + if ( (k == K_ENTER) && f.to_check(k) ) + //if ( (k == K_TAB) && f.mask().is_running() ) + { + int annoiva = f.mask().get_int(F_ANNOIVA); + TConfig conf(CONFIG_DITTA); + int annoivap = atoi(conf.get("AnLiIv")); + if (annoiva != annoivap + 1) + { + f.warning_box("Il nuovo anno esercizio IVA deve essere successivo all'anno esercizio IVA precedente"); + return FALSE; + } + } + return TRUE; +} + +bool TAp_iva::create() +{ + _nditte = new TLocalisamfile(LF_NDITTE); + _esc = new TTable("ESC"); + _reg = new TTable("REG"); + _lia = new TTable("%LIA"); + _lbu = new TTable("%LBU"); + + enable_menu_item(M_FILE_NEW, FALSE); + + dispatch_e_menu (BAR_ITEM(1)); + + return TRUE; +} + +bool TAp_iva::destroy() +{ + delete _nditte; + delete _esc; + delete _reg; + delete _lia; + delete _lbu; + + return TRUE; +} + +bool TAp_iva::apertura_iva() +{ + TTable TabReg ("REG"); + TTable TabLia ("%LIA"); + TTable TabLbu ("%LBU"); + TLocalisamfile nditte (LF_NDITTE); + TString annoiva (4); + TDate data; + bool ok = FALSE; + + int annop = atoi(_annop); + annoiva = format("%04d", _annoiva); + + //viene aggiornata la tabella LIA (liquidazione iva annuale) + TabLia.zero(); + TabLia.put ("CODTAB", format("%05ld%04d", get_firm(), _annoiva)); + if (TabLia.read() == NOERR) + TabLia.remove(); + + TabLia.zero(); + TRectype newrec (TabLia.curr()); + TabLia.put ("CODTAB", format("%05ld%04d", get_firm(), annop)); + + if (TabLia.read() == NOERR) + { + ok = TRUE; + newrec = TabLia.curr(); + newrec.put("CODTAB", format("%05ld%04d", get_firm(), _annoiva)); + newrec.put("S7", _frequenza); + + TabLia.write(newrec); + } + if (!ok) + { + error_box("Non esiste il record relativo all'anno iva precedente sulla tabella liquidazione annuale iva"); + return FALSE; + } + + //viene aggiornata la tabella del libro unico. + TabLbu.zero(); + TabLbu.put ("CODTAB", annoiva); + + TRectype r (TabLbu.curr()); + + TabLbu.read(_isgteq); + + for (; !TabLbu.eof(); TabLbu.next()) + { + if (TabLbu.curr() != r) break; + + TabLbu.remove(); + } + + ok = FALSE; + TabLbu.zero(); + TRectype nrec (TabLbu.curr()); + TabLbu.put ("CODTAB", _annop); + + TRectype rec (TabLbu.curr()); + + TabLbu.read(_isgteq); + + for (; !TabLbu.eof(); TabLbu.next()) + { + if (TabLbu.curr() != rec) break; + + TRecnotype nr = TabLbu.recno(); + TString cod_lib = TabLbu.get("CODTAB"); + cod_lib = cod_lib.mid(4,3); + ok = TRUE; + nrec = TabLbu.curr(); + TString16 cod; + cod << _annoiva << cod_lib; + nrec.put("CODTAB", cod); + nrec.put("I0", 0L); + + TabLbu.write(nrec); + TabLbu.readat(nr); + } + /* + if (!ok) + { + error_box("Non esistono i registri del libro unico relativi all'anno iva precedente"); + return FALSE; + } + */ + + //viene aggiornata la tabella dei registri. + TabReg.zero(); + TabReg.put ("CODTAB", annoiva); + + TRectype rr (TabReg.curr()); + + TabReg.read(_isgteq); + + for (; !TabReg.eof(); TabReg.next()) + { + if (TabReg.curr() != rr) break; + + int tiporeg = TabReg.get_int("I0"); + if ( (tiporeg == 1)||(tiporeg == 2)||(tiporeg == 3) ) + TabReg.remove(); + } + + ok = FALSE; + TabReg.zero(); + TRectype nuovo (TabReg.curr()); + TabReg.put ("CODTAB", _annop); + + TRectype recc (TabReg.curr()); + + TabReg.read(_isgteq); + + for (; !TabReg.eof(); TabReg.next()) + { + if (TabReg.curr() != recc) break; + + TRecnotype nr = TabReg.recno(); + int tiporeg = TabReg.get_int("I0"); + TString cod_reg = TabReg.get("CODTAB"); + TDate data_vid = TabReg.get_date("D0"); + data_vid.addyear(); + cod_reg = cod_reg.mid(4,3); + if ( (tiporeg == 1)||(tiporeg == 2)||(tiporeg==3) ) + { + ok = TRUE; + nuovo = TabReg.curr(); + TString16 cod; + cod << annoiva << cod_reg; + nuovo.put("CODTAB", cod); + nuovo.put("I1", 0L); + nuovo.put("I2", 0L); + nuovo.put("I4", 0L); + nuovo.put("I5", 0L); + nuovo.put("I6", 0L); + nuovo.put("S1", ""); + nuovo.put("D0", data_vid); + nuovo.put("D2", data); + nuovo.put("D3", data); + nuovo.put("R1", real(0.0)); + nuovo.put("R2", real(0.0)); + + TabReg.write(nuovo); + TabReg.readat(nr); + } + } + /* + if (!ok) + { + error_box("Non esistono i registri iva relativi all'anno iva precedente"); + return FALSE; + } + */ + + //viene aggiornato l'anno iva sui parametri ditta + TConfig conf(CONFIG_DITTA); + conf.set("AnLiIv", annoiva); + + //sull'anagrafica ditte viene aggiornata la frequenza versamento + nditte.zero(); + nditte.put("CODDITTA", _ditta); + if (nditte.read() == NOERR) + { + nditte.put(NDT_FREQVIVA, _frequenza); + nditte.rewrite(); + } + + message_box("Apertura nuovo esercizio IVA completata"); + return TRUE; +} + +bool TAp_iva::menu(MENU_TAG m) +{ + TTable TabLia ("%LIA"); + TLocalisamfile nditte (LF_NDITTE); + TMask msk ("cg4500b"); + + TConfig conf(CONFIG_DITTA); + _annop = conf.get("AnLiIv"); + //int aivap = atoi(conf.get("AnLiIv")); + //TString16 anno ( format("%04d", aivap+1) ); + int aivap = atoi(_annop); + int anno = aivap+1; + + TabLia.zero(); + TString16 chiave; chiave.format("%05ld%04d", get_firm(), anno); + TabLia.put("CODTAB",chiave); + if (TabLia.read() == NOERR) + msk.set(F_FREQUENZA, TabLia.get("S7")); + else + { + TabLia.zero(); + chiave = ""; + chiave.format("%05ld%04d", get_firm(), aivap); + TabLia.put("CODTAB", chiave); + if (TabLia.read() == NOERR) + msk.set(F_FREQUENZA, TabLia.get("S7")); + else + { + nditte.zero(); + nditte.put("CODDITTA", get_firm()); + if (nditte.read() == NOERR) + msk.set(F_FREQUENZA, nditte.get(NDT_FREQVIVA)); + } + } + + msk.set(F_ANNOIVA, aivap+1); + + msk.set_handler (F_ANNOIVA, mask_annoiva); + + if (msk.run() == K_ENTER) + { + _ditta = msk.get_long(F_CODDITTA); + _annoiva = msk.get_int(F_ANNOIVA); + _frequenza = msk.get(F_FREQUENZA)[0]; + } + return FALSE; +} diff --git a/cg/cg4501.h b/cg/cg4501.h new file mode 100755 index 000000000..ddb67b090 --- /dev/null +++ b/cg/cg4501.h @@ -0,0 +1,31 @@ +#include +#include +#include +#include +#include +#include +#include + +class TAp_iva : public TApplication +{ + TTable* _esc, * _reg, * _lia, * _lbu; + TLocalisamfile* _nditte; + int _anno, _newanno, _annoiva; + TDate _dataini, _datafin, _datainp, _datafip; + TString _annop; + long _ditta; + char _frequenza; + +protected: + static bool mask_annoiva(TMask_field&, KEY); + +public: + virtual bool create(); + virtual bool destroy(); + virtual bool menu(MENU_TAG m); + + bool setta(); + bool apertura_iva(); + + TAp_iva() {} +}; \ No newline at end of file