//Apertura nuovo esercizio IVA #include "nditte.h" #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); _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 _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); newrec.zero("R0"); 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(_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]; apertura_iva(); } return FALSE; }