33712eacad
Files correlati : cg4.exe Ricompilazione Demo : [ ] Commento : Aggiunto il supporto delle lingue a cg4 git-svn-id: svn://10.65.10.50/trunk@10946 c028cbd2-c16b-5b4b-a496-9718f37d4682
217 lines
5.0 KiB
C++
Executable File
217 lines
5.0 KiB
C++
Executable File
#include <recarray.h>
|
|
#include <relation.h>
|
|
|
|
#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();
|
|
}
|
|
} |