263 lines
6.1 KiB
C++
Executable File
263 lines
6.1 KiB
C++
Executable File
//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);
|
|
|
|
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;
|
|
} |