c846ab1358
git-svn-id: svn://10.65.10.50/branches/R_10_00@23178 c028cbd2-c16b-5b4b-a496-9718f37d4682
921 lines
36 KiB
C++
921 lines
36 KiB
C++
#include "777200.h"
|
||
|
||
#include <colors.h>
|
||
#include <isam.h>
|
||
|
||
const COLOR CU_BACKGROUND = XVT_MAKE_COLOR(224,224,224);
|
||
|
||
const TReport_font& best_font(const char* name, int size, XVT_FONT_STYLE_MASK fs)
|
||
{
|
||
static TAssoc_array fonts;
|
||
static const long famax = 1024;
|
||
static char* family[famax] = { 0 };
|
||
static long families = 0;
|
||
|
||
TToken_string key;
|
||
key = name; key.add(size); key.add((long)fs);
|
||
TReport_font* fnt = (TReport_font*)fonts.objptr(key);
|
||
if (fnt == NULL)
|
||
{
|
||
if (families == 0)
|
||
families = xvt_fmap_get_families(NULL, family, famax);
|
||
|
||
int best = -1;
|
||
double score = 0.5;
|
||
for (long i = 0; i < families; i++) if (*name == *family[i])
|
||
{
|
||
const double s = xvt_str_fuzzy_compare(name, family[i]);
|
||
if (s > score)
|
||
{
|
||
best = i;
|
||
score = s;
|
||
if (score >= 1.0)
|
||
break;
|
||
}
|
||
}
|
||
if (best >= 0)
|
||
name = family[best];
|
||
fnt = new TReport_font;
|
||
fnt->create(name, size, fs);
|
||
fonts.add(key, fnt);
|
||
}
|
||
return *fnt;
|
||
}
|
||
|
||
class TCU_report : public TReport
|
||
{
|
||
TReport_font _fnt_rep, _fnt_prm, _fnt_lbl, _fnt_sub, _fnt_prg;
|
||
int _quality; // 0=text only; 1=borders only; 2=filled bars
|
||
bool _syntetic;
|
||
|
||
private:
|
||
const TReport_field& last_field() const;
|
||
void set_field_pos(int row, int col, int width, TReport_field& fld) const;
|
||
TReport_field& add_break(TReport_section& sec, int row, bool small);
|
||
void add_field_label(const TReport_field& fld, const char* text, char alignment = 'L');
|
||
TReport_field& add_prompt(TReport_section& sec, int row, int col, int len, const char* text);
|
||
void add_field_sublabel(const TReport_field& fld, const char* text);
|
||
void add_field_grid(const TReport_field& fld, bool underlined, bool date);
|
||
TReport_field& add_field(TReport_section& sec, int row, int col, int width, const char* field);
|
||
|
||
protected:
|
||
TReport_field& add_prompted_field(TReport_section& sec, int row, int col, int width, const char* field, const char* prompt, int promptlen = -1);
|
||
TReport_field& add_prompted_bool(TReport_section& sec, int row, int col, int width, const char* field, const char* prompt, int promptlen = -1);
|
||
TReport_field& add_labeled_field (TReport_section& sec, int row, int col, int width, const char* field, const char* label, char alignment = 'B');
|
||
TReport_field& add_labeled_number(TReport_section& sec, int row, int col, int width, const char* field, const char* label, char alignment = 'B');
|
||
TReport_field& add_labeled_bool (TReport_section& sec, int row, int col, int width, const char* field, const char* label);
|
||
TReport_field& add_boxed_field (TReport_section& sec, int row, int col, int width, const char* field, const char* prompt, int flags = 0x0);
|
||
TReport_field& add_gridded_field (TReport_section& sec, int row, int col, int len,
|
||
const char* field, const char* prompt);
|
||
void add_underlined_text(TReport_section& body, int row, const char* text);
|
||
|
||
TReport_field& add_big_text(TReport_section& sec, int row, int col, const char* label, COLOR rgb);
|
||
void add_band(TReport_section& sec, int row, int height, COLOR rgb = CU_BACKGROUND);
|
||
void add_long_break (TReport_section& sec, int row);
|
||
void add_short_break(TReport_section& sec, int row);
|
||
void begin_paragraph(TReport_section& sec, int row, int height, const char* label, int mode = 0);
|
||
void end_paragraph(TReport_section& sec);
|
||
|
||
void create_logo(TReport_section& header);
|
||
void create_B();
|
||
void create_D();
|
||
void create_H();
|
||
|
||
public:
|
||
TCU_report(int quality, bool syntetic);
|
||
};
|
||
|
||
#define CU_FORM_WIDTH 7800
|
||
#define CU_FORM_BORDER 100
|
||
#define CU_HEAD_WIDTH 1000
|
||
|
||
#define CU_AFTER_LAST -1
|
||
#define CU_BEFORE_LAST -2
|
||
#define CU_ALIGN_RIGHT -3
|
||
|
||
#define CU_EURO_LEN 16
|
||
|
||
static int _row_offset = 0;
|
||
static int _row_height = 300;
|
||
static int _row_last = 0;
|
||
static TReport_field* _last_fld = NULL;
|
||
|
||
const TReport_field& TCU_report::last_field() const
|
||
{
|
||
return *_last_fld;
|
||
}
|
||
|
||
void TCU_report::set_field_pos(int row, int col, int len, TReport_field& fld) const
|
||
{
|
||
TReport_section& sec = fld.section();
|
||
|
||
int dimx = (len+1) * 100;
|
||
const int dimy = _row_height <= 200 ? 100 : 150;
|
||
|
||
int posx = 0;
|
||
if (col < 0)
|
||
{
|
||
switch(col)
|
||
{
|
||
case CU_BEFORE_LAST: posx = last_field().get_rect().left() - dimx - 100; break;
|
||
case CU_ALIGN_RIGHT: posx = CU_FORM_BORDER+CU_FORM_WIDTH - dimx - 100; break;
|
||
default : posx = last_field().get_rect().right() + 100; break;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (_row_offset > 0) // in paragraph
|
||
posx = CU_FORM_BORDER+CU_HEAD_WIDTH + (col+1)*100;
|
||
else
|
||
posx = CU_FORM_BORDER + col*100; // in header
|
||
}
|
||
|
||
int posy = 0;
|
||
if (_row_offset > 0) // in paragraph
|
||
posy = _row_offset + (row+1)*_row_height - dimy;
|
||
else
|
||
posy = (row+1)*100 - dimy; // in header
|
||
|
||
if (len <= 0)
|
||
dimx = CU_FORM_BORDER+CU_FORM_WIDTH - posx - 100;
|
||
|
||
fld.set_pos(posx, posy);
|
||
fld.set_size(dimx, dimy);
|
||
}
|
||
|
||
|
||
void TCU_report::begin_paragraph(TReport_section& sec, int row, int height, const char* label, int mode)
|
||
{
|
||
if (row < 0)
|
||
_row_offset = _row_last;
|
||
else
|
||
_row_offset = row*100;
|
||
_row_last = _row_offset + height*100;
|
||
_row_height = height <= 2 ? 200 : (height%3 ? 400 : 300);
|
||
_last_fld = NULL;
|
||
|
||
TString str1 = label, str2;
|
||
int delta2 = 0;
|
||
if (mode & 0x2)
|
||
{
|
||
if (mode == 0x2)
|
||
{
|
||
str2 = str1;
|
||
str1.cut(0);
|
||
}
|
||
else
|
||
{
|
||
const int due_paragrafi = str1.find('\n');
|
||
str2 = str1.mid(due_paragrafi+1);
|
||
str1.cut(due_paragrafi);
|
||
delta2 = 200;
|
||
}
|
||
}
|
||
|
||
if (str1.full())
|
||
{
|
||
TReport_field* txt = new TReport_field(&sec);
|
||
txt->set_vertical_alignment('T');
|
||
txt->set_horizontal_alignment('L');
|
||
txt->set_pos(CU_FORM_BORDER, _row_offset);
|
||
txt->set_size(CU_HEAD_WIDTH, height*100);
|
||
txt->set_pattern(PAT_HOLLOW);
|
||
txt->set_text_color(COLOR_BLACK);
|
||
txt->set_back_color(COLOR_INVALID);
|
||
txt->set_picture(str1);
|
||
txt->set_font(_fnt_prg);
|
||
sec.add(txt);
|
||
}
|
||
|
||
if (str2.full())
|
||
{
|
||
TReport_font fnt2;
|
||
fnt2.create(_fnt_lbl.name(), _fnt_lbl.size(), XVT_FS_BOLD);
|
||
|
||
TReport_field* txt2 = new TReport_field(&sec);
|
||
txt2->set_vertical_alignment('T');
|
||
txt2->set_horizontal_alignment('L');
|
||
txt2->set_pos(CU_FORM_BORDER, _row_offset+delta2);
|
||
txt2->set_size(CU_HEAD_WIDTH, (height*100)-delta2);
|
||
txt2->set_pattern(PAT_HOLLOW);
|
||
txt2->set_text_color(COLOR_BLACK);
|
||
txt2->set_back_color(COLOR_INVALID);
|
||
txt2->set_picture(str2);
|
||
txt2->set_font(fnt2);
|
||
sec.add(txt2);
|
||
}
|
||
}
|
||
|
||
void TCU_report::end_paragraph(TReport_section& sec)
|
||
{
|
||
add_long_break(sec, _row_last/100);
|
||
}
|
||
|
||
void TCU_report::add_field_label(const TReport_field& fld, const char* text, char alignment)
|
||
{
|
||
TReport_section& sec = fld.section();
|
||
TReport_field* label = new TReport_field(&sec);
|
||
label->set_type('T');
|
||
label->set_pattern(PAT_HOLLOW);
|
||
label->set_text_color(COLOR_BLACK);
|
||
label->set_back_color(COLOR_INVALID);
|
||
label->set_font(_fnt_lbl);
|
||
const TReport_rct& rct = fld.get_rect();
|
||
label->set_pos(rct.x, rct.y-100);
|
||
label->set_size(rct.width(), 100);
|
||
label->set_picture(text);
|
||
label->set_vertical_alignment('B');
|
||
if (alignment == 'C')
|
||
{
|
||
label->set_horizontal_alignment('C');
|
||
label->set_pos(rct.x-400, rct.y-100);
|
||
label->set_size(rct.width()+800, 75);
|
||
}
|
||
|
||
sec.add(label);
|
||
}
|
||
|
||
void TCU_report::add_field_sublabel(const TReport_field& fld, const char* text)
|
||
{
|
||
TReport_section& sec = fld.section();
|
||
TReport_field* label = new TReport_field(&sec);
|
||
label->set_type('T');
|
||
label->set_pattern(PAT_HOLLOW);
|
||
label->set_back_color(COLOR_INVALID);
|
||
label->set_text_color(COLOR_BLACK);
|
||
label->set_font(_fnt_sub);
|
||
const TReport_rct& rct = fld.get_rect();
|
||
label->set_pos(rct.x, rct.y);
|
||
label->set_size(150, 50); //label->set_size(rct.width(), rct.height()/3);
|
||
label->set_picture(text);
|
||
sec.add(label);
|
||
}
|
||
|
||
TReport_field& TCU_report::add_field(TReport_section& sec, int row, int col, int len, const char* field)
|
||
{
|
||
TReport_field* txt = new TReport_field(&sec);
|
||
txt->set_type('S');
|
||
txt->set_vertical_alignment('B');
|
||
txt->set_dynamic_height(false);
|
||
if (_quality >= 2)
|
||
{
|
||
txt->set_pattern(PAT_SOLID);
|
||
txt->set_back_color(COLOR_WHITE);
|
||
}
|
||
else
|
||
{
|
||
txt->set_pattern(PAT_HOLLOW);
|
||
txt->set_back_color(COLOR_INVALID);
|
||
txt->set_fore_color(COLOR_GRAY);
|
||
txt->set_border(1);
|
||
}
|
||
txt->set_field(field);
|
||
set_field_pos(row, col, len, *txt);
|
||
sec.add(txt);
|
||
_last_fld = txt;
|
||
return *txt;
|
||
}
|
||
|
||
int estimated_prompt_len(const char* text)
|
||
{
|
||
static XVT_FNTID font_id = NULL;
|
||
if (font_id == NULL)
|
||
{
|
||
font_id = xvt_font_create();
|
||
xvt_font_set_family(font_id, XVT_FFN_HELVETICA);
|
||
xvt_font_set_size(font_id, 12);
|
||
xvt_dwin_set_font(TASK_WIN, font_id);
|
||
}
|
||
else
|
||
{
|
||
if (text == NULL)
|
||
{
|
||
xvt_font_destroy(font_id);
|
||
font_id = NULL;
|
||
}
|
||
}
|
||
|
||
const int len = (text && *text) ? xvt_dwin_get_text_width(TASK_WIN, text, -1) : 0;
|
||
return len / 6;
|
||
}
|
||
|
||
TReport_field& TCU_report::add_prompt(TReport_section& sec, int row, int col, int len, const char* text)
|
||
{
|
||
TReport_field* label = new TReport_field(&sec);
|
||
label->set_type('T');
|
||
label->set_vertical_alignment('C');
|
||
label->set_pattern(PAT_HOLLOW);
|
||
label->set_back_color(COLOR_INVALID);
|
||
label->set_text_color(COLOR_BLACK);
|
||
label->set_font(_fnt_prm);
|
||
label->set_picture(text);
|
||
if (len < 0)
|
||
len = estimated_prompt_len(text)/2;
|
||
set_field_pos(row, col, len, *label);
|
||
const TReport_rct& rct = label->get_rect();
|
||
if (rct.height() > 100)
|
||
{
|
||
const int delta = rct.height() - 100;
|
||
label->set_pos(rct.left(), rct.top()+delta);
|
||
label->set_size(rct.width(), rct.height()-delta);
|
||
}
|
||
sec.add(label);
|
||
_last_fld = label;
|
||
return *label;
|
||
}
|
||
|
||
TReport_field& TCU_report::add_labeled_field(TReport_section& body, int row, int col, int len,
|
||
const char* field, const char* label, char alignment)
|
||
{
|
||
if (alignment != 'C' && len > 0 && label && int(strlen(label)) > 2*len)
|
||
alignment = 'C';
|
||
|
||
TReport_field& txt = add_field(body, row, col, len, field);
|
||
if (alignment == 'C')
|
||
txt.set_horizontal_alignment(alignment);
|
||
if (field && *field && field[1] >= 'A')
|
||
{
|
||
TString4 num = field+6;
|
||
while (num[0] == '0') num.ltrim(1);
|
||
add_field_sublabel(txt, num);
|
||
}
|
||
if (label && *label)
|
||
add_field_label(txt, label, alignment);
|
||
return txt;
|
||
}
|
||
|
||
TReport_field& TCU_report::add_labeled_number(TReport_section& body, int row, int col, int width,
|
||
const char* field, const char* label, char alignment)
|
||
{
|
||
TReport_field& txt = add_labeled_field(body, row, col, width, field, label, alignment);
|
||
txt.set_horizontal_alignment('R');
|
||
if (width == CU_EURO_LEN)
|
||
{
|
||
txt.set_type('S'); // avoid obnoxious x100
|
||
}
|
||
else
|
||
{
|
||
txt.set_type('N');
|
||
txt.hide_zeroes(true);
|
||
}
|
||
return txt;
|
||
}
|
||
|
||
TReport_field& TCU_report::add_labeled_bool(TReport_section& body, int row, int col, int width,
|
||
const char* field, const char* label)
|
||
{
|
||
TReport_field& check = add_labeled_field(body, row, col, width, field, label, 'C');
|
||
check.set_type('B');
|
||
return check;
|
||
}
|
||
|
||
TReport_field& TCU_report::add_prompted_field(TReport_section& body, int row, int col, int width, const char* field, const char* prompt, int promptlen)
|
||
{
|
||
if (col == CU_ALIGN_RIGHT && width > 0)
|
||
{
|
||
TReport_field& fld = add_field(body, row, col, width, field);
|
||
if ((prompt && *prompt) || promptlen > 0)
|
||
add_prompt(body, row, CU_BEFORE_LAST, promptlen, prompt);
|
||
return fld;
|
||
}
|
||
if ((prompt && *prompt) || promptlen > 0)
|
||
{
|
||
add_prompt(body, row, col, promptlen, prompt);
|
||
col = CU_AFTER_LAST;
|
||
}
|
||
return add_field(body, row, col, width, field);
|
||
}
|
||
|
||
TReport_field& TCU_report::add_prompted_bool(TReport_section& sec, int row, int col, int width, const char* field, const char* prompt, int promptlen)
|
||
{
|
||
TReport_field& cb = add_prompted_field(sec, row, col, width, field, prompt, promptlen);
|
||
cb.set_type('B');
|
||
cb.set_horizontal_alignment('C');
|
||
cb.set_vertical_alignment('C');
|
||
return cb;
|
||
}
|
||
|
||
TReport_field& TCU_report::add_boxed_field(TReport_section& sec, int row, int col, int width,
|
||
const char* field, const char* prompt, int flags)
|
||
{
|
||
TReport_field* fld = NULL;
|
||
if (flags & 0x2)
|
||
fld = &add_gridded_field (sec, row, col, width, field, prompt);
|
||
else
|
||
fld = &add_prompted_field(sec, row, col, width, field, prompt);
|
||
|
||
TReport_field& txt = *fld;
|
||
if (width < 16)
|
||
txt.set_type('N');
|
||
txt.set_border(2);
|
||
txt.set_fore_color(COLOR_BLACK);
|
||
txt.set_horizontal_alignment('C');
|
||
|
||
if (flags & 0x1) // Half height
|
||
{
|
||
const TReport_rct& rct = txt.get_rect();
|
||
TReport_field* line = new TReport_field(&sec);
|
||
line->set_type('R');
|
||
line->set_pos(rct.left()-10, rct.top()-10);
|
||
line->set_size(rct.width()+20, rct.height()/3);
|
||
line->set_pattern(PAT_SOLID);
|
||
line->set_back_color(COLOR_WHITE);
|
||
sec.add(line);
|
||
}
|
||
|
||
return txt;
|
||
}
|
||
|
||
void TCU_report::add_field_grid(const TReport_field& fld, bool underlined, bool date)
|
||
{
|
||
TReport_section& sec = fld.section();
|
||
const TReport_rct& rct = fld.get_rect();
|
||
|
||
if ((rct.width() / 100) & 1) // Campo di lunghezza dispari!
|
||
{
|
||
TReport_field& f = (TReport_field&)fld;
|
||
f.set_width(rct.width()-100);
|
||
}
|
||
|
||
if (underlined)
|
||
{
|
||
TReport_field* line = new TReport_field(&sec);
|
||
line->set_type('L');
|
||
line->set_pos(rct.left(), rct.bottom());
|
||
line->set_size(rct.width(), 0);
|
||
line->set_border(1);
|
||
line->set_fore_color(COLOR_BLACK);
|
||
sec.add(line);
|
||
}
|
||
|
||
int fr, to, len, spc;
|
||
if (date)
|
||
{
|
||
len = 4;
|
||
fr = 1;
|
||
to = 2;
|
||
spc = 50;
|
||
}
|
||
else
|
||
{
|
||
len = rct.width() / 200;
|
||
fr = underlined ? 0 : 1;
|
||
to = len - (underlined ? 0 : 1);
|
||
spc = underlined ? 0 : 50;
|
||
}
|
||
for (int y = fr; y <= to; y++)
|
||
{
|
||
TReport_field* line = new TReport_field(&sec);
|
||
line->set_type('L');
|
||
line->set_pos(rct.left()+y*rct.width()/len, rct.top()+spc);
|
||
line->set_size(0, rct.height()-spc);
|
||
line->set_border(1);
|
||
line->set_fore_color(COLOR_BLACK);
|
||
sec.add(line);
|
||
}
|
||
}
|
||
|
||
TReport_field& TCU_report::add_gridded_field(TReport_section& sec, int row, int col, int len,
|
||
const char* field, const char* label)
|
||
{
|
||
const bool is_date = len == 10;
|
||
const bool underlined = len>=16 && _row_offset <= 0; // Underlined grid in the header
|
||
TString80 str;
|
||
if (is_date)
|
||
{
|
||
str = "## ## ####";
|
||
len = 5;
|
||
}
|
||
else
|
||
{
|
||
for (int i = 0; i < len; i++)
|
||
{
|
||
if (i) str << ' ';
|
||
str << "#";
|
||
}
|
||
str.rtrim();
|
||
}
|
||
TReport_field& fld = add_labeled_field(sec, row, col, len*2, field, label);
|
||
fld.set_picture(str);
|
||
if (is_date)
|
||
fld.set_horizontal_alignment('C');
|
||
else
|
||
fld.set_horizontal_alignment('R');
|
||
add_field_grid(fld, underlined, is_date);
|
||
|
||
return fld;
|
||
}
|
||
|
||
TReport_field& TCU_report::add_big_text(TReport_section& sec, int row, int col, const char* label, COLOR rgb)
|
||
{
|
||
const TReport_font& fnt_big = best_font("Arial Black", _fnt_prg.size()*3, _fnt_prg.style());
|
||
|
||
TReport_field* txt = new TReport_field(&sec);
|
||
txt->set_type('T');
|
||
txt->set_picture(label);
|
||
txt->set_pos(CU_FORM_BORDER+col*100, row*100);
|
||
txt->set_size(strlen(label)*300, 200);
|
||
txt->set_pattern(PAT_HOLLOW);
|
||
txt->set_back_color(COLOR_INVALID);
|
||
txt->set_text_color(rgb);
|
||
txt->set_font(fnt_big);
|
||
|
||
sec.add(txt);
|
||
return *txt;
|
||
}
|
||
|
||
TReport_field& TCU_report::add_break(TReport_section& sec, int row, bool small)
|
||
{
|
||
TReport_field* line = new TReport_field(&sec);
|
||
line->set_type('L');
|
||
if (small)
|
||
{
|
||
line->set_pos(CU_FORM_BORDER+CU_HEAD_WIDTH, row*100);
|
||
line->set_size(CU_FORM_WIDTH-CU_HEAD_WIDTH, 0);
|
||
line->set_border(1);
|
||
}
|
||
else
|
||
{
|
||
line->set_pos(CU_FORM_BORDER, row*100);
|
||
line->set_size(CU_FORM_WIDTH, 0);
|
||
line->set_border(2);
|
||
}
|
||
line->set_fore_color(COLOR_BLACK);
|
||
sec.add(line);
|
||
return *line;
|
||
}
|
||
|
||
void TCU_report::add_long_break(TReport_section& sec, int row)
|
||
{ add_break(sec, row, false); }
|
||
|
||
void TCU_report::add_short_break(TReport_section& sec, int row)
|
||
{ add_break(sec, row, true); }
|
||
|
||
void TCU_report::add_band(TReport_section& sec, int row, int height, COLOR rgb)
|
||
{
|
||
TReport_field* rct = new TReport_field(&sec);
|
||
if (rgb == COLOR_INVALID)
|
||
rgb = CU_BACKGROUND;
|
||
rct->set_pos(CU_FORM_BORDER+CU_HEAD_WIDTH, row *100);
|
||
rct->set_size(CU_FORM_WIDTH-CU_HEAD_WIDTH, height*100);
|
||
if (_quality >= 2)
|
||
{
|
||
rct->set_pattern(PAT_SOLID);
|
||
rct->set_back_color(rgb);
|
||
}
|
||
else
|
||
{
|
||
rct->set_pattern(PAT_HOLLOW);
|
||
rct->set_border(2);
|
||
rct->set_fore_color(rgb);
|
||
rct->set_back_color(COLOR_INVALID);
|
||
}
|
||
sec.add(rct);
|
||
|
||
add_long_break(sec, row);
|
||
}
|
||
|
||
void TCU_report::add_underlined_text(TReport_section& body, int row, const char* text)
|
||
{
|
||
TReport_field& line = add_break(body, _row_offset/100+row+1, true);
|
||
const TReport_rct rct = line.get_rect();
|
||
line.set_pos(rct.left()+100, rct.top()+25);
|
||
line.set_size(rct.width()-200, rct.height());
|
||
add_field_label(line, text, 'C');
|
||
}
|
||
|
||
void TCU_report::create_logo(TReport_section& header)
|
||
{
|
||
add_big_text(header, 4, 0, "CERTIFICAZIONE", COLOR_GRAY).set_vertical_alignment('T');
|
||
add_big_text(header, 6, 0, "UNICA", COLOR_BLACK).set_vertical_alignment('B');
|
||
add_big_text(header, 6,12, "2016", COLOR_LTGRAY).set_vertical_alignment('B');
|
||
|
||
TReport_field* txt = new TReport_field(&header);
|
||
txt->set_type('I');
|
||
txt->set("res/AgenziaEntrate.gif");
|
||
txt->set_pos(CU_FORM_BORDER, 800);
|
||
txt->set_size(1200, 200);
|
||
header.add(txt);
|
||
}
|
||
|
||
void TCU_report::create_B()
|
||
{
|
||
TReport_section& header = section('B', 1);
|
||
header.set_condition("#1=\"B\"");
|
||
|
||
_row_offset = 0;
|
||
estimated_prompt_len(NULL); // Reset font computer
|
||
|
||
create_logo(header);
|
||
add_gridded_field(header, 11, CU_ALIGN_RIGHT, 16, "#2", ""); // Codice fiscale dichiarante
|
||
add_prompt(header, 11, CU_BEFORE_LAST, 7, "Codice fiscale");
|
||
|
||
add_band(header, 13, 27);
|
||
|
||
begin_paragraph(header, 13, 2, "TIPO DI COMUNICAZIONE");
|
||
add_prompted_bool(header, 0, 0, 2, "#10", "Annullamento");
|
||
add_prompted_bool(header, 0, 28, 2, "#11", "Sostituzione");
|
||
end_paragraph(header);
|
||
|
||
begin_paragraph(header, CU_AFTER_LAST, 9, "DATI RELATIVI\nAL SOSTITUTO");
|
||
add_labeled_field(header, 0, 0, 32, "#2", "Codice Fiscale");
|
||
add_labeled_field(header, 1, 0, 36, "#12", "Cognome o Denominazione").set_alternate_field("#14");
|
||
add_labeled_field(header, 1,CU_AFTER_LAST, CU_ALIGN_RIGHT, "#13", "Nome"); // La colonna segue il cognome
|
||
TReport_field& tel = add_labeled_field(header, 2, 0, 16, "#16", "Telefono o fax");
|
||
add_field_sublabel(tel, "prefisso numero");
|
||
tel.set_alternate_field("#17");
|
||
add_labeled_field(header, 2, CU_AFTER_LAST, CU_ALIGN_RIGHT, "#15", "Indirizzo di posta elettronica"); // La colonna segue il telefono
|
||
end_paragraph(header);
|
||
|
||
begin_paragraph(header, CU_AFTER_LAST, 6, "DATI RELATIVI AL RAPPRESENTANTE FIRMATARIO DELLA COMUNICAZIONE");
|
||
add_labeled_field(header, 0, 0, 24, "#18", "Codice Fiscale");
|
||
TReport_field& cc = add_labeled_field(header, 0,32, 3, "#19", "Codice carica", 'C');
|
||
cc.set_type('N'); cc.hide_zeroes(true);
|
||
TReport_field& pi = add_gridded_field(header, 0,CU_ALIGN_RIGHT, 11, "#22", "Codice fiscale societ<65> o ente dichiarante");
|
||
pi.set_type('N'); pi.hide_zeroes(true);
|
||
add_labeled_field(header, 1, 0, 36, "#20", "Cognome");
|
||
add_labeled_field(header, 1,CU_AFTER_LAST, CU_ALIGN_RIGHT, "#21", "Nome");
|
||
end_paragraph(header);
|
||
|
||
begin_paragraph(header, CU_AFTER_LAST, 3, "FIRMA DELLA COMUNICAZIONE");
|
||
|
||
// 2015
|
||
// add_labeled_number(header, 0, 4, 5, "#23", "Numero certificazioni\nlavoro dipendente ed assimilati", 'C');
|
||
// add_labeled_number(header, 0, 14, 5, "#24", "Numero certificazioni\nlavoro autonomo e provvigioni", 'C');
|
||
// 2016
|
||
add_labeled_number(header, 0, 4, 5, "#24", "Numero certificazioni", 'C');
|
||
|
||
add_labeled_field (header, 0, 25, 3, "#25", "Quadro CT", 'C');
|
||
add_prompted_field(header, 0, CU_ALIGN_RIGHT, 24, "", "FIRMA");
|
||
end_paragraph(header);
|
||
|
||
begin_paragraph(header, CU_AFTER_LAST, 7, "IMPEGNO ALLA PRESENTAZIONE TELEMATICA");
|
||
_row_height = 300;
|
||
add_prompted_field(header, 0, 0, 16, "#27", "Codice fiscale dell'intermediario");
|
||
add_break(header, _row_offset/100+3, true);
|
||
end_paragraph(header);
|
||
|
||
begin_paragraph(header, _row_offset/100+3, 2, "Riservato\nall'intermediario");
|
||
add_prompt(header, 0, 0, 30, "Impegno a presentare in via telematica la comunicazione");
|
||
TReport_field& ipt = add_field(header, 0, CU_ALIGN_RIGHT, 2, "#28");
|
||
ipt.set_type('N');
|
||
ipt.set_horizontal_alignment('C');
|
||
ipt.hide_zeroes(true);
|
||
add_break(header, _row_offset/100+2, true);
|
||
add_prompt(header, 1,0, -1, "Data dell'impegno");
|
||
TReport_field& dit = add_gridded_field(header, 1, 10, 10, "#29", "");
|
||
dit.set_type('N');
|
||
dit.hide_zeroes(true);
|
||
add_prompted_field(header,1, CU_ALIGN_RIGHT,24, "", "FIRMA DELL'INTERMEDIARIO", 15);
|
||
add_break(header, _row_offset/100+4, false);
|
||
}
|
||
|
||
void TCU_report::create_D()
|
||
{
|
||
TReport_section& body = section('B', 2);
|
||
body.set_condition("#1=\"D\"");
|
||
body.force_page_break(true);
|
||
|
||
_row_offset = 0;
|
||
create_logo(body);
|
||
|
||
TReport_font fnt_big; fnt_big.create(_fnt_prg.name(), 3*_fnt_prg.size()/2, _fnt_prg.style());
|
||
TReport_field* txt = new TReport_field(&body);
|
||
txt->set_type('T');
|
||
txt->set_picture("CERTIFICAZIONE DI CUI ALL'ART.4, COMMI 6-ter e 6-quater,\n"
|
||
"DEL D.P.R. 22 LUGLIO 1998, n. 322, RELATIVA ALL'ANNO");
|
||
txt->set_pos(CU_FORM_BORDER+28*100, 7*100);
|
||
txt->set_size(7000, 300);
|
||
txt->set_pattern(PAT_HOLLOW);
|
||
txt->set_back_color(COLOR_INVALID);
|
||
txt->set_text_color(COLOR_BLACK);
|
||
txt->set_font(fnt_big);
|
||
body.add(txt);
|
||
|
||
add_boxed_field(body, 8, 68, 4, "2015", "");
|
||
|
||
add_band(body, 12, 35);
|
||
|
||
begin_paragraph(body, 12, 9, "DATI ANAGRAFICI\nDATI RELATIVI\nAL DATORE DI LAVORO,\nENTE PENSIONISTICO O\nALTRO SOSTITUTO\nD'IMPOSTA", 0x3);
|
||
add_labeled_field(body, 0, 0, 16, "#DA001001", "Codice Fiscale");
|
||
add_labeled_field(body, 0, CU_AFTER_LAST, 30, "#DA001002", "Cognome o Denominazione");
|
||
add_labeled_field(body, 0, CU_AFTER_LAST, CU_ALIGN_RIGHT, "#DA001003", "Nome"); // La colonna segue il cognome
|
||
|
||
add_labeled_field(body, 1, 0, 24, "#DA001004", "Comune");
|
||
add_labeled_field(body, 1, CU_AFTER_LAST, 2, "#DA001005", "Prov.");
|
||
add_labeled_field(body, 1, CU_AFTER_LAST, 5, "#DA001006", "Cap");
|
||
add_labeled_field(body, 1, CU_AFTER_LAST, CU_ALIGN_RIGHT, "#DA001007", "Indirizzo");
|
||
|
||
TReport_field& tel = add_labeled_field(body, 2, 0, 16, "#DA001008", "Telefono o fax");
|
||
add_field_sublabel(tel, " prefisso numero");
|
||
add_labeled_field(body, 2, CU_AFTER_LAST, 30, "#DA001009", "Indirizzo di posta elettronica");
|
||
add_labeled_field(body, 2, CU_AFTER_LAST, 6, "#DA001010", "Codice attivit<69>");
|
||
add_labeled_number(body, 2, CU_AFTER_LAST, CU_ALIGN_RIGHT, "#DA001011", "Codice sede");
|
||
end_paragraph(body);
|
||
|
||
begin_paragraph(body, CU_AFTER_LAST, 6, "DATI RELATIVI\nAL DIPENDENTE,\nPENSIONATO O\nALTRO PERCETTORE\nDELLE SOMME", 0x2);
|
||
add_labeled_field(body, 0, 0, 16, "#DA002001", "Codice Fiscale");
|
||
add_labeled_field(body, 0, CU_AFTER_LAST, 30, "#DA002002", "Cognome o Denominazione");
|
||
add_labeled_field(body, 0, CU_AFTER_LAST, CU_ALIGN_RIGHT, "#DA002003", "Nome"); // La colonna segue il cognome
|
||
add_labeled_field(body, 1, 0, 1, "#DA002004", "Sesso\n(M o F)", 'C');
|
||
add_gridded_field(body, 1, CU_AFTER_LAST, 10, "#DA002005", "Data di nascita");
|
||
add_labeled_field(body, 1, 16, 24, "#DA002006", "Comune (o Stato estero) di nascita");
|
||
add_labeled_field(body, 1, CU_AFTER_LAST, 3, "#DA002007", "Prov. nasc.\n(sigla)", 'C');
|
||
add_labeled_field(body, 1, 49, 3, "#DA002008", "Categorie\nparticolari", 'C');
|
||
add_labeled_number(body,1, 55, 3, "#DA002009", "Eventi\neccezionali", 'C');
|
||
add_labeled_number(body,1, 61, 3, "#DA002010", "Casi di esclusione\ndalla precompilata", 'C');
|
||
end_paragraph(body);
|
||
|
||
begin_paragraph(body, CU_AFTER_LAST, 8, "");
|
||
add_underlined_text(body, 0, "DOMICILIO FISCALE ALL'1/1/2014");
|
||
add_labeled_field(body, 0, 0, 50, "#DA002020", "Comune");
|
||
add_labeled_field(body, 0, CU_AFTER_LAST, 3, "#DA002021", "Provincia (sigla)");
|
||
add_labeled_field(body, 0, CU_ALIGN_RIGHT, 6, "#DA002022", "Codice comune");
|
||
add_underlined_text(body, 4, "DOMICILIO FISCALE ALL'1/1/2015");
|
||
add_labeled_field(body, 1, 0, 50, "#DA002023", "Comune");
|
||
add_labeled_field(body, 1, CU_AFTER_LAST, 3, "#DA002024", "Provincia (sigla)");
|
||
add_labeled_field(body, 1, CU_ALIGN_RIGHT, 6, "#DA002025", "Codice comune");
|
||
end_paragraph(body);
|
||
|
||
begin_paragraph(body, CU_AFTER_LAST, 3, "DATI RELATIVI\nAL RAPPRESENTANTE", 0x2);
|
||
add_labeled_field(body, 0, 0, 16, "#DA002030", "Codice Fiscale");
|
||
end_paragraph(body);
|
||
|
||
begin_paragraph(body, CU_AFTER_LAST, 6, "RISERVATO\nAI PERCIPIENTI ESTERI", 0x2);
|
||
add_labeled_field(body, 0, 0, 16, "#DA002040", "Codice di identificazione fiscale estero");
|
||
add_labeled_field(body, 0, CU_AFTER_LAST, CU_ALIGN_RIGHT, "#DA002041", "Localit<EFBFBD> di residenza estera");
|
||
add_labeled_field(body, 1, 0, 50, "#DA002042", "Via e numero civico");
|
||
|
||
// 2015
|
||
//add_labeled_field(body, 1, CU_ALIGN_RIGHT, 5, "#DA002043", "Codice Stato estero", 'C');
|
||
// 2016
|
||
add_labeled_field(body, 1, CU_AFTER_LAST, 5, "#DA002043", "Non residenti\nShumacker", 'C');
|
||
add_labeled_field(body, 1, CU_ALIGN_RIGHT, 5, "#DA002044", "Codice Stato estero", 'C');
|
||
|
||
end_paragraph(body);
|
||
begin_paragraph(body, CU_AFTER_LAST, 3, "");
|
||
add_gridded_field(body, 0, 0, 10, "#DA003001", "DATA");
|
||
add_labeled_field(body, 0, 15, CU_ALIGN_RIGHT, "", "FIRMA DEL SOSTITUTO DI IMPOSTA", 'C');
|
||
end_paragraph(body);
|
||
}
|
||
|
||
void TCU_report::create_H()
|
||
{
|
||
TReport_section& body = section('B', 3);
|
||
body.set_condition("#1=\"H\"");
|
||
body.force_page_break(true);
|
||
_row_offset = 0;
|
||
|
||
add_prompt (body, 2, 0, 14, "Codice fiscale del percipiente");
|
||
add_boxed_field(body, 2,CU_AFTER_LAST, 16, "#4", "", 0x1);
|
||
|
||
add_boxed_field(body, 2, 74, 2, "#3", "", 0x3);
|
||
add_prompt(body, 2, CU_BEFORE_LAST, -1, "Mod. N.");
|
||
|
||
const TReport_font& fnt_big = best_font(_fnt_prg.name(), 3*_fnt_prg.size()/2, _fnt_prg.style());
|
||
TReport_field* title = new TReport_field(&body);
|
||
title->set_pos(CU_FORM_BORDER+CU_HEAD_WIDTH, 300);
|
||
title->set_size(CU_FORM_WIDTH-CU_HEAD_WIDTH, 200);
|
||
title->set_horizontal_alignment('C');
|
||
title->set_vertical_alignment('C');
|
||
title->set_picture("CERTIFICAZIONE LAVORO AUTONOMO, PROVVIGIONI E REDDITI DIVERSI");
|
||
title->set_font(fnt_big);
|
||
body.add(title);
|
||
add_band(body, 5, _syntetic ? 44: 58);
|
||
|
||
const int tab0 = 2, tab1 = 6, tab2 = 27, tab3 = CU_ALIGN_RIGHT;
|
||
|
||
begin_paragraph(body, 5, 3, "DATI RELATIVI ALLE SOMME EROGATE\nTIPOLOGIA REDDITUALE", 0x3);
|
||
add_labeled_field(body, 0, tab0, 2, "#AU001001", "Causale");
|
||
end_paragraph(body);
|
||
|
||
begin_paragraph(body, -1, 18, "DATI FISCALI");
|
||
add_labeled_number(body, 0, tab1-1, 4, "#AU001002", "Anno", 'C');
|
||
add_labeled_bool (body, 0, CU_AFTER_LAST, 2, "#AU001003", "Anticipazione");
|
||
add_labeled_number(body, 0, tab2, CU_EURO_LEN, "#AU001004", "Ammontare lordo corrisposto", 'C');
|
||
add_labeled_number(body, 0, tab3, CU_EURO_LEN, "#AU001005", "Somme non soggette a ritenuta\nper regime convenzionale", 'C');
|
||
|
||
add_labeled_number(body, 1, tab0, 2, "#AU001006", "Codice");
|
||
add_labeled_number(body, 1, tab1, CU_EURO_LEN, "#AU001007", "Altre somme non soggette a ritenuta", 'C');
|
||
add_labeled_number(body, 1, tab2, CU_EURO_LEN, "#AU001008", "Imponibile", 'C');
|
||
add_labeled_number(body, 1, tab3, CU_EURO_LEN, "#AU001009", "Ritenute a titolo di acconto", 'C');
|
||
|
||
add_labeled_number(body, 2, tab1, CU_EURO_LEN, "#AU001010", "Ritenute a titolo d'imposta", 'C');
|
||
add_labeled_number(body, 2, tab2, CU_EURO_LEN, "#AU001011", "Ritenute sospese", 'C');
|
||
add_labeled_number(body, 2, tab3, CU_EURO_LEN, "#AU001012", "Addizionale regionale a titolo d'acconto", 'C');
|
||
|
||
add_labeled_number(body, 3, tab1, CU_EURO_LEN, "#AU001013", "Addizionale regionale a titolo d'imposta", 'C');
|
||
add_labeled_number(body, 3, tab2, CU_EURO_LEN, "#AU001014", "Addizionale regionale sospesa", 'C');
|
||
add_labeled_number(body, 3, tab3, CU_EURO_LEN, "#AU001015", "Addizionale comunale a titolo d'acconto", 'C');
|
||
|
||
add_labeled_number(body, 4, tab1, CU_EURO_LEN, "#AU001016", "Addizionale comunale a titolo d'imposta", 'C');
|
||
add_labeled_number(body, 4, tab2, CU_EURO_LEN, "#AU001017", "Addizionale comunale sospesa", 'C');
|
||
add_labeled_number(body, 4, tab3, CU_EURO_LEN, "#AU001018", "Imponibile anni precedenti", 'C');
|
||
|
||
add_labeled_number(body, 5, tab1, CU_EURO_LEN, "#AU001019", "Ritenute operate anni precedenti", 'C');
|
||
add_labeled_number(body, 5, tab2, CU_EURO_LEN, "#AU001020", "Spese rimborsate", 'C');
|
||
add_labeled_number(body, 5, tab3, CU_EURO_LEN, "#AU001021", "Ritenute rimborsate", 'C');
|
||
end_paragraph(body);
|
||
|
||
// 2016
|
||
begin_paragraph(body, -1, 12, "DATI PREVIDENZIALI");
|
||
add_labeled_field (body, 0, tab1, CU_EURO_LEN, "#AU001029", "Codice fiscale Ente previdenziale", 'C');
|
||
add_labeled_field (body, 0, tab2, 38, "#AU001030", "Denominazione Ente previdenziale", 'C');
|
||
add_labeled_field (body, 1, tab1, CU_EURO_LEN/2, "#AU001031", "Codice\nEnte previdenziale", 'C');
|
||
add_labeled_field (body, 1, tab2, CU_EURO_LEN, "#AU001032", "Codice azienda", 'C');
|
||
add_labeled_field (body, 1, tab3, CU_EURO_LEN/2, "#AU001033", "Categoria", 'C');
|
||
add_labeled_number(body, 2, tab1, CU_EURO_LEN, "#AU001034", "Contributi previdenziali\na carico del soggetto erogante", 'C');
|
||
add_labeled_number(body, 2, tab2, CU_EURO_LEN, "#AU001035", "Contributi previdenziali\na carico del percipiente", 'C');
|
||
add_labeled_bool (body, 2, tab3, CU_EURO_LEN/4, "#AU001036", "Altri contributi");
|
||
add_labeled_number(body, 3, tab1, CU_EURO_LEN, "#AU001037", "Importo altri contributi", 'C');
|
||
add_labeled_number(body, 3, tab2, CU_EURO_LEN, "#AU001038", "Contributi dovuti", 'C');
|
||
add_labeled_number(body, 3, tab3, CU_EURO_LEN, "#AU001039", "Contributi versati", 'C');
|
||
end_paragraph(body);
|
||
|
||
if (!_syntetic)
|
||
{
|
||
begin_paragraph(body, -1, 3, "FALLIMENTO E LIQUIDAZIONE COATTA AMMINISTRATIVA");
|
||
add_labeled_number(body, 0, tab1, CU_EURO_LEN, "#AU001041", "Somme corrisposte prima della data del fallimento");
|
||
add_labeled_number(body, 0, tab2, CU_EURO_LEN, "#AU001042", "Somme corrisposte dal curatore/commissario");
|
||
end_paragraph(body);
|
||
|
||
begin_paragraph(body, -1, 8, "REDDITI EROGATI DA ALTRI SOGGETTI");
|
||
_row_height = 200; // Override AFTER begin_paragraph
|
||
add_labeled_field (body, 0, tab2, CU_EURO_LEN, "#AU001052", "Codice fiscale", 'C');
|
||
add_labeled_number(body, 0, tab3, CU_EURO_LEN, "#AU001053", "Imponibile", 'C');
|
||
add_labeled_number(body, 1, tab1, CU_EURO_LEN, "#AU001054", "Ritenute a titolo di acconto", 'C');
|
||
add_labeled_number(body, 1, tab2, CU_EURO_LEN, "#AU001055", "Ritenute a titolo d'imposta", 'C');
|
||
add_labeled_number(body, 1, tab3, CU_EURO_LEN, "#AU001056", "Ritenute sospese", 'C');
|
||
add_labeled_number(body, 2, tab1, CU_EURO_LEN, "#AU001057", "Addizionale regionale a titolo d'acconto", 'C');
|
||
add_labeled_number(body, 2, tab2, CU_EURO_LEN, "#AU001058", "Addizionale regionale a titolo d'imposta", 'C');
|
||
add_labeled_number(body, 2, tab3, CU_EURO_LEN, "#AU001059", "Addizionale regionale sospesa", 'C');
|
||
add_labeled_number(body, 3, tab1, CU_EURO_LEN, "#AU001060", "Addizionale comunale a titolo d'acconto", 'C');
|
||
add_labeled_number(body, 3, tab2, CU_EURO_LEN, "#AU001061", "Addizionale comunale a titolo d'imposta", 'C');
|
||
add_labeled_number(body, 3, tab3, CU_EURO_LEN, "#AU001062", "Addizionale comunale sospesa", 'C');
|
||
end_paragraph(body);
|
||
|
||
begin_paragraph(body, -1, 3, "Casi particolari Operazioni starordinarie");
|
||
add_labeled_field (body, 0, tab1, CU_EURO_LEN, "#AU001071", "Codice fiscale\n(sezione lavoro autonome e redditi diversi)", 'C');
|
||
add_labeled_field (body, 0, tab2, CU_EURO_LEN, "#AU001072", "Codice fiscale\n(sezione pignoramento presso terzi)", 'C');
|
||
add_labeled_field (body, 0, tab3, CU_EURO_LEN, "#AU001073", "Codice fiscale\n(sezione indennit<69> di esproprio)", 'C');
|
||
end_paragraph(body);
|
||
} // ordinario
|
||
|
||
begin_paragraph(body, -1, 5, "Somme liquidate a seguito di pignoramento presso terzi");
|
||
_row_height = 300;
|
||
add_labeled_field (body, 0, tab1, CU_EURO_LEN, "#AU001101", "Codice fiscale del debitore principale", 'C');
|
||
add_labeled_number(body, 0, tab2, CU_EURO_LEN-4, "#AU001102", "Somme erogate", 'C');
|
||
add_labeled_bool (body, 0, CU_ALIGN_RIGHT, 2, "#AU001104", "Ritenute non operate");
|
||
add_labeled_number(body, 0, CU_BEFORE_LAST, CU_EURO_LEN-4, "#AU001103", "Ritenute operate", 'C');
|
||
_row_offset -= 100;
|
||
add_labeled_field (body, 1, tab1, CU_EURO_LEN, "#AU001105", "", 'C');
|
||
add_labeled_number(body, 1, tab2, CU_EURO_LEN-4, "#AU001106", "", 'C');
|
||
add_labeled_bool (body, 1, CU_ALIGN_RIGHT, 2, "#AU001108", "");
|
||
add_labeled_number(body, 1, CU_BEFORE_LAST, CU_EURO_LEN-4, "#AU001107", "", 'C');
|
||
end_paragraph(body);
|
||
|
||
begin_paragraph(body, -1, 6, "Somme corrisposte a titolo di indennit<69> di esproprio, altre indennit<69> e interessi");
|
||
_row_height = 200; // Override AFTER begin_paragraph
|
||
_row_offset -= 100;
|
||
add_prompt(body, 0, tab1, 30, "INDENNITA' DI ESPROPRIO E DI RISARCIMENTO DEL DANNO");
|
||
add_prompt(body, 0, 48, 20, "ALTRE INDENNITA' E INTERESSI");
|
||
add_labeled_number(body, 1, tab1, CU_EURO_LEN-4, "#AU001131", "Somme corrisposte", 'C');
|
||
add_labeled_number(body, 1, CU_AFTER_LAST, CU_EURO_LEN-6, "#AU001132", "Ritenute operate", 'C');
|
||
add_labeled_number(body, 1, CU_ALIGN_RIGHT, CU_EURO_LEN-6, "#AU001134", "Ritenute operate", 'C');
|
||
add_labeled_number(body, 1, CU_BEFORE_LAST, CU_EURO_LEN-4, "#AU001133", "Somme corrisposte", 'C');
|
||
add_short_break(body, _row_offset/100+4);
|
||
_row_offset -= 100;
|
||
add_prompt(body, 2, tab1, 30, "INDENNITA' DI ESPROPRIO E DI RISARCIMENTO DEL DANNO");
|
||
add_prompt(body, 2, 48, 20, "ALTRE INDENNITA' E INTERESSI");
|
||
add_labeled_number(body, 3, tab1, CU_EURO_LEN-4, "#AU001135", "Somme corrisposte", 'C');
|
||
add_labeled_number(body, 3, CU_AFTER_LAST, CU_EURO_LEN-6, "#AU001136", "Ritenute operate", 'C');
|
||
add_labeled_number(body, 3, CU_ALIGN_RIGHT, CU_EURO_LEN-6, "#AU001138", "Ritenute operate", 'C');
|
||
add_labeled_number(body, 3, CU_BEFORE_LAST, CU_EURO_LEN-4, "#AU001137", "Somme corrisposte", 'C');
|
||
end_paragraph(body);
|
||
}
|
||
|
||
TCU_report::TCU_report(int quality, bool syntetic) : _quality(quality), _syntetic(syntetic)
|
||
{
|
||
set_lpi(6);
|
||
set_cpi(10);
|
||
_fnt_rep.create("Courier New", 12, 0);
|
||
set_font(_fnt_rep);
|
||
_fnt_lbl.create("Arial", _fnt_rep.size()/2, 0);
|
||
_fnt_sub.create(_fnt_lbl.name(), _fnt_lbl.size(), XVT_FS_BOLD);
|
||
_fnt_prg.create(_fnt_lbl.name(), _fnt_rep.size()/2+1, XVT_FS_BOLD);
|
||
_fnt_prm.create(_fnt_lbl.name(), 2*_fnt_rep.size()/3, 0);
|
||
|
||
if (!_syntetic)
|
||
create_B();
|
||
create_D();
|
||
create_H();
|
||
}
|
||
|
||
void print_cu(const TFilename& datafile, int quality, bool syntetic)
|
||
{
|
||
TCU_report cur(quality, syntetic);
|
||
cur.set_recordset(new TTrasferimentoCU(datafile, 'r'));
|
||
cur.preview();
|
||
xvtil_statbar_set(NULL);
|
||
}
|