Files correlati : Commento : Quadro VE versione 1 Corretto l'azzeramento dei totali nell'elenco privati del Quadro VT git-svn-id: svn://10.65.10.50/branches/R_10_00@23346 c028cbd2-c16b-5b4b-a496-9718f37d4682
292 lines
6.9 KiB
C++
292 lines
6.9 KiB
C++
|
|
// Programma per la stampa del quadri IVA
|
|
#include <recarray.h>
|
|
#include <reprint.h>
|
|
#include <tabutil.h>
|
|
|
|
#include "cg7401.h"
|
|
|
|
#include <nditte.h>
|
|
|
|
#include "cg7400a.h"
|
|
|
|
TQuadro_IVA_mask::TQuadro_IVA_mask(const char * maskname)
|
|
: TAutomask(maskname), _last_row_ditte(0), _last_row_reports(0)
|
|
{
|
|
const TDate oggi(TODAY);
|
|
|
|
_year = oggi.year();
|
|
build_ditte_sheet();
|
|
build_report_sheet();
|
|
}
|
|
|
|
long TQuadro_IVA_mask::get_ditta()
|
|
{
|
|
TSheet_field & sf = sfield(F_DITTE);
|
|
|
|
for (int i =_last_row_ditte + 1; i <sf.items(); i++)
|
|
{
|
|
TToken_string & row = sf.row(i);
|
|
const TString4 select = row.get(sf.cid2index(S_CHKDITTA));
|
|
|
|
if (select == "X")
|
|
{
|
|
_last_row_ditte = i;
|
|
return row.get_long(sf.cid2index(S_CODDITTA));
|
|
}
|
|
}
|
|
_last_row_ditte = -1;
|
|
return 0L;
|
|
}
|
|
|
|
static TProgram_report __stop;
|
|
|
|
TProgram_report * TQuadro_IVA_mask::get_report()
|
|
{
|
|
TSheet_field & sf = sfield(F_REPORTS);
|
|
|
|
for (int i =_last_row_reports + 1; i <sf.items(); i++)
|
|
{
|
|
TToken_string & row = sf.row(i);
|
|
const TString4 select = row.get(sf.cid2index(S_CHKREPORT));
|
|
|
|
if (select == "X")
|
|
{
|
|
_last_row_reports = i;
|
|
return & get_report(i);
|
|
}
|
|
}
|
|
_last_row_reports = -1;
|
|
return &__stop;
|
|
}
|
|
|
|
void TQuadro_IVA_mask::build_ditte_sheet()
|
|
{
|
|
TSheet_field & sf = sfield(F_DITTE);
|
|
|
|
sf.destroy();
|
|
TPointer_array firms;
|
|
|
|
TPrefix::firms(firms);
|
|
FOR_EACH_ARRAY_ITEM(firms, i, obj)
|
|
{
|
|
const long codditta = firms.get_long(i);
|
|
TString key; key.format("%05ld%04d", codditta, _year);
|
|
const bool good = cache().get("%LIA", key).full();
|
|
TToken_string & row = sf.row(sf.items());
|
|
const int pos = sf.items() - 1;
|
|
|
|
row.add(good ? "X" : "");
|
|
row.add(codditta);
|
|
row.add(cache().get(LF_NDITTE, codditta, NDT_RAGSOC));
|
|
|
|
if (!good)
|
|
sf.disable_row(pos);
|
|
}
|
|
sf.force_update();
|
|
}
|
|
|
|
void TQuadro_IVA_mask::build_report_sheet()
|
|
{
|
|
TToken_string d(80);
|
|
const char quadro = source_file()[3];
|
|
TSheet_field & sf = sfield(F_REPORTS);
|
|
|
|
sf.destroy();
|
|
switch (quadro)
|
|
{
|
|
case '4':
|
|
{
|
|
TToken_string & row = sf.row(sf.items()); row.add("|1|Prova|cg7400b");
|
|
}
|
|
break;
|
|
case '6' :
|
|
{
|
|
TToken_string & row1 = sf.row(sf.items()); row1.add("|1|Stampa esportazioni|cg7600b");
|
|
TToken_string & row2 = sf.row(sf.items()); row2.add("|2|Stampa cessioni Intracomunitarie|cg7600c");
|
|
TToken_string & row3 = sf.row(sf.items()); row3.add("|3|Stampa cessioni verso San Marino|cg7600d");
|
|
TToken_string & row4 = sf.row(sf.items()); row4.add("|4|Stampa operazioni assimilate|cg7600e");
|
|
TToken_string & row5 = sf.row(sf.items()); row5.add("|5|Stampa operazioni non imp. in seguito a dich. d'intenti|cg7600f");
|
|
TToken_string & row6 = sf.row(sf.items()); row6.add("|6|Stampa altre operazioni non imponibili|cg7600g");
|
|
TToken_string & row7 = sf.row(sf.items()); row7.add("|7|Stampa esenti art. 10|cg7600h");
|
|
TToken_string & row8 = sf.row(sf.items()); row8.add("|8|Stampa operazioni non sogg. ai sensi art.7 da uno a septies|cg7600i");
|
|
TToken_string & row9 = sf.row(sf.items()); row9.add("|9|Stampa operazioni reverse charge|cg7600l");
|
|
TToken_string & row10 = sf.row(sf.items()); row10.add("|10|Stampa operazioni terremotati|cg7600m");
|
|
TToken_string & row11 = sf.row(sf.items()); row11.add("|11|Stampa operazioni effettuate con PA ai sensi art.17|cg7600n");
|
|
}
|
|
break;
|
|
default :
|
|
break;
|
|
}
|
|
__stop.load("STOP");
|
|
const int items = sf.items();
|
|
|
|
for (int i = 0; i < items; i++)
|
|
{
|
|
TToken_string & row = sf.row(i);
|
|
TProgram_report *rep = new TProgram_report;
|
|
TFilename repname(row.get(sf.cid2index(S_NAMEREPORT)));
|
|
|
|
repname.ext("rep");
|
|
if (repname.exist() || repname.custom_path())
|
|
rep->load(repname);
|
|
_reports.add(rep);
|
|
}
|
|
}
|
|
|
|
bool TQuadro_IVA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
{
|
|
switch (o.dlg())
|
|
{
|
|
case F_YEAR:
|
|
if (e == fe_modify)
|
|
{
|
|
_year = atoi(o.get());
|
|
build_ditte_sheet();
|
|
}
|
|
break;
|
|
case DLG_ALLFIRMS:
|
|
if (e == fe_button)
|
|
{
|
|
TSheet_field & sf = sfield(F_DITTE);
|
|
bool check = false;
|
|
int rows = sf.items();
|
|
|
|
for (int i = 0; !check && i < rows; i++)
|
|
check |= (sf.row(i).get(sf.cid2index(S_CHKDITTA))[0] == 'X') ;
|
|
|
|
for (int i = 0; i < rows; i++)
|
|
sf.row(i).add(check ? " " : "X", sf.cid2index(S_CHKDITTA));
|
|
sf.force_update();
|
|
}
|
|
break;
|
|
case DLG_ALLREPORTS:
|
|
if (e == fe_button)
|
|
{
|
|
TSheet_field & sf = sfield(F_REPORTS);
|
|
bool check = false;
|
|
int rows = sf.items();
|
|
|
|
for (int i = 0; !check && i < rows; i++)
|
|
check |= (sf.row(i).get(sf.cid2index(S_CHKREPORT))[0] == 'X');
|
|
|
|
for (int i = 0; i < rows; i++)
|
|
sf.row(i).add(check ? " " : "X", sf.cid2index(S_CHKREPORT));
|
|
sf.force_update();
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
const TVariant& TQuadro_IVA_recordset::get(const char* column_name) const
|
|
{
|
|
const TFixed_string name(column_name);
|
|
|
|
if (!name.starts_with("#") && name.find('.') > 0)
|
|
{
|
|
TVariant & var = get_tmp_var();
|
|
real * value = (real *) _values.objptr(name);
|
|
|
|
if (value == NULL)
|
|
var = ZERO;
|
|
else
|
|
{
|
|
value->round(0);
|
|
var = *value;
|
|
}
|
|
return var;
|
|
}
|
|
return TISAM_recordset::get(column_name);
|
|
}
|
|
|
|
void TQuadro_IVA_recordset::add_value(const char *s, real value)
|
|
{
|
|
real * val = (real *)_values.objptr(s);
|
|
|
|
if (val == NULL)
|
|
{
|
|
const TString8 key(s);
|
|
_values.add(key, val = new real);
|
|
}
|
|
*val += value;
|
|
}
|
|
|
|
TQuadro_IVA_report::TQuadro_IVA_report(const char * report_name)
|
|
{
|
|
load(report_name);
|
|
}
|
|
|
|
bool TQuadro_IVA_app::create()
|
|
{
|
|
open_files(LF_TAB, LF_TABCOM, LF_NDITTE, 0);
|
|
return TSkeleton_application::create();
|
|
}
|
|
|
|
void TQuadro_IVA_app::print()
|
|
{
|
|
TReport_book book(_print_title);
|
|
long ditta;
|
|
const TString8 year = _mask->get(F_YEAR);
|
|
|
|
_mask->restart_ditte();
|
|
while ((ditta = _mask->get_ditta()) > 0)
|
|
{
|
|
set_firm(ditta);
|
|
_name.ext("rep");
|
|
if (_name.exist() || _name.custom_path())
|
|
{
|
|
TQuadro_IVA_report rep(_name);
|
|
TRecordset * set = rep.recordset();
|
|
|
|
rep.set_recordset(app_recordset(set->query_text(), atoi(year)));
|
|
set = rep.recordset();
|
|
TReport_section * sec = rep.find_section('B', 1);
|
|
TReport_field * fld = sec->find_field(100);
|
|
|
|
if (fld != NULL)
|
|
fld->set(year);
|
|
// set->set_var("#ANNO", year, true);
|
|
set->set_var("#CODDITTA", ditta);
|
|
book.add(rep);
|
|
}
|
|
|
|
|
|
_mask->restart_reports();
|
|
TProgram_report * rep = _mask->get_report();
|
|
TFilename repname = rep->filename();
|
|
|
|
repname.ext("");
|
|
while (repname != "STOP")
|
|
{
|
|
if (rep->filename().full())
|
|
{
|
|
TISAM_recordset * set = (TISAM_recordset *) rep->recordset();
|
|
|
|
set->set_var("#ANNO", year);
|
|
book.add(*rep);
|
|
set->unfreeze();
|
|
}
|
|
rep = _mask->get_report();
|
|
repname = rep->filename();
|
|
repname.ext("");
|
|
}
|
|
}
|
|
book.print_or_preview();
|
|
}
|
|
|
|
void TQuadro_IVA_app::main_loop()
|
|
{
|
|
const long oldditta = get_firm();
|
|
KEY k;
|
|
|
|
_mask = new TQuadro_IVA_mask(_name);
|
|
|
|
while ((k = _mask->run()) != K_QUIT)
|
|
print();
|
|
set_firm(oldditta);
|
|
}
|
|
|