campo-sirio/cg/cg4501.cpp
2014-12-10 16:08:15 +00:00

228 lines
5.2 KiB
C++
Executable File

#include "cg4501.h"
#include "cg4500b.h"
#include <recarray.h>
#include <relation.h>
#include <tabutil.h>
#include <nditte.h>
bool TAp_iva::mask_annoiva (TMask_field& f, KEY k)
{
if ( (k == K_ENTER) && f.to_check(k) )
{
const int annoiva = f.mask().get_int(F_ANNOIVA);
const int annoivap = ini_get_int(CONFIG_DITTA, "cg", "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();
}
/*
void TAp_iva::libro_unico()
{
TString4 annoiva;
annoiva.format("%04d", _annoiva);
//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();
}
}
*/
bool TAp_iva::apertura_iva()
{
//viene aggiornata la tabella LIA (liquidazione iva annuale)
TTable tablia ("%LIA");
TString16 codlia; 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");
if (tablia.get_bool("B5")) // IVA per cassa
{
tablia.put("D0", TDate( 1, 1, _annoiva));
tablia.put("D1", TDate(31,12, _annoiva));
}
tablia.write();
}
// libro_unico(); // Obsoleto?
//viene aggiornata la tabella dei registri.
TRelation reg("REG");
TRectype & tabreg = reg.curr();
TString4 annoiva; annoiva.format("%04d", _annoiva);
tabreg.put ("CODTAB", annoiva);
TCursor cur_reg(&reg, "", 1, &tabreg, &tabreg);
TRecnotype 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)
{
const int tiporeg = tabreg.get_int("I0");
if ( (tiporeg == 1)||(tiporeg == 2)||(tiporeg==3)||(tiporeg==9))
{
TString8 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.zero("D0");
tabreg.zero("D2");
tabreg.zero("D3");
tabreg.zero("R1");
tabreg.zero("R2");
reg.write();
}
}
//viene aggiornato l'anno iva sui parametri ditta
ini_set_int(CONFIG_DITTA, "cg", "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();
}
}