campo-sirio/cg/cg4501.cpp
alex 33712eacad Patch level : 2..0 434
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
2003-03-24 17:59:38 +00:00

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(&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();
}
}