campo-sirio/src/cg/cg7401.cpp
bonazzi 0cb504cbb8 Patch level : 10.0 290
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
2016-09-29 18:45:40 +00:00

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