#include #include #include "cg4501.h" #include "cg4500b.h" #include "nditte.h" bool TAp_iva::mask_annoiva (TMask_field& f, KEY k) { if ( (k == K_ENTER) && f.to_check(k) ) { int annoiva = f.mask().get_int(F_ANNOIVA); TConfig conf(CONFIG_DITTA); int annoivap = conf.get_int("AnLiIv"); if (annoivap > 0 && annoiva != annoivap + 1) return f.error_box(FR("Il nuovo anno esercizio IVA deve essere %d"), (annoivap+1)); } return TRUE; } bool TAp_iva::create() { open_files(LF_TAB, LF_TABCOM, LF_NDITTE, 0); enable_menu_item(M_FILE_NEW, FALSE); return TSkeleton_application::create(); } bool TAp_iva::apertura_iva() { TString16 annoiva; TString16 codlia; TDate data; int annop = _annop; annoiva.format("%04d", _annoiva); //viene aggiornata la tabella LIA (liquidazione iva annuale) TTable tablia ("%LIA"); codlia.format("%05ld%04d", get_firm(), _annoiva); tablia.put ("CODTAB", codlia); if (tablia.read() == NOERR) tablia.remove(); tablia.zero(); codlia.format("%05ld%04d", get_firm(), annop); tablia.put ("CODTAB", codlia); if (tablia.read() != NOERR) return error_box(TR("Non esiste il record relativo all'anno iva precedente sulla tabella liquidazione annuale iva")); else { codlia.format("%05ld%04d", get_firm(), _annoiva); tablia.put("CODTAB", codlia); tablia.put("S7", _frequenza); tablia.put("B2", _is_minagr); tablia.zero("R0"); tablia.write(); } //viene aggiornata la tabella del libro unico. TRelation lbu("%LBU"); TRectype & tablbu = lbu.curr(); tablbu.put ("CODTAB", annoiva); TCursor cur(&lbu, "", 1, &tablbu, &tablbu); TRecnotype items = cur.items(); cur.freeze(); for (cur = 0L; cur.pos() < items; ++cur) lbu.remove(); cur.freeze(FALSE); tablbu.zero(); tablbu.put ("CODTAB", _annop); cur.setregion(tablbu, tablbu); items = cur.items(); cur.freeze(); for (cur = 0L; cur.pos() < items; ++cur) { TString16 cod(tablbu.get("CODTAB")); cod.overwrite(annoiva); tablbu.put("CODTAB", cod); tablbu.zero("I0"); lbu.write(); } //viene aggiornata la tabella dei registri. TRelation reg("REG"); TRectype & tabreg = reg.curr(); tabreg.put ("CODTAB", annoiva); TCursor cur_reg(®, "", 1, &tabreg, &tabreg); items = cur_reg.items(); cur_reg.freeze(); for (cur_reg = 0L; cur_reg.pos() < items; ++cur_reg) { const int tiporeg = tabreg.get_int("I0"); if ((tiporeg == 1) || (tiporeg == 2) || (tiporeg == 3) || (tiporeg==9)) reg.remove(); } cur_reg.freeze(FALSE); tabreg.zero(); tabreg.put ("CODTAB", _annop); cur_reg.setregion(tabreg, tabreg); items = cur_reg.items(); cur_reg.freeze(); for (cur_reg = 0L; cur_reg.pos() < items; ++cur_reg) { int tiporeg = tabreg.get_int("I0"); if ( (tiporeg == 1)||(tiporeg == 2)||(tiporeg==3)||(tiporeg==9)) { TString16 cod = tabreg.get("CODTAB"); cod.overwrite(annoiva); tabreg.put("CODTAB", cod); tabreg.zero("I1"); tabreg.zero("I2"); tabreg.zero("I4"); tabreg.zero("I5"); tabreg.zero("I6"); tabreg.zero("S1"); tabreg.put("D0", data); tabreg.put("D2", data); tabreg.put("D3", data); tabreg.zero("R1"); tabreg.zero("R2"); reg.write(); } } //viene aggiornato l'anno iva sui parametri ditta TConfig conf(CONFIG_DITTA); conf.set("AnLiIv", annoiva); //sull'anagrafica ditte viene aggiornata la frequenza versamento TLocalisamfile nditte (LF_NDITTE); nditte.put("CODDITTA", _ditta); if (nditte.read(_isequal, _lock) == NOERR) { nditte.put(NDT_FREQVIVA, _frequenza); nditte.rewrite(); } message_box(TR("Apertura nuovo esercizio IVA completata")); return TRUE; } void TAp_iva::main_loop() { TMask msk ("cg4500b"); TConfig conf(CONFIG_DITTA); _annop = conf.get_int("AnLiIv"); if (_annop <= 0) _annop = TDate(TODAY).year() - 1; int aivap = _annop; int anno = aivap+1; _is_minagr = FALSE; TTable tablia ("%LIA"); TString16 chiave; tablia.zero(); chiave.format("%05ld%04d", get_firm(), anno); tablia.put("CODTAB",chiave); if (tablia.read() == NOERR) { msk.set(F_FREQUENZA, tablia.get("S7")); _is_minagr = tablia.get_bool("B2"); } 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")); _is_minagr = tablia.get_bool("B2"); } else { TString16 key; key.format("%ld", get_firm()); const TString & freq_iva = cache().get(LF_NDITTE, key, NDT_FREQVIVA); msk.set(F_FREQUENZA, freq_iva); } } msk.set(F_ANNOIVA, anno); 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(); } }