Patch level :

Files correlati     : fe0.exe fe0100.rep fe0100a.msk
Ricompilazione Demo : [ ]
Commento            :
Implementato report stampa record inviati.
Corretta gestitione righe immesse manualmente


git-svn-id: svn://10.65.10.50/branches/R_10_00@22469 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-10-28 15:12:48 +00:00
parent 6135d9e03f
commit 9c0dbd5406
3 changed files with 291 additions and 122 deletions

View File

@ -646,6 +646,10 @@ public:
void add_control_rec(int zero_o_nove, int num_inv = 1, int tot_inv = 1);
bool split(const TFilename& name, const TRecnotype maxalleg = 15000);
int anno() const { return _anno; }
void set_ragsoc(const TString& ragsoc) { row(-1).overwrite(ragsoc, 1000); }
const TString& ragsoc() const { return row(-1).mid(1000, 50); }
TDati_rilevanti_set(int anno);
TDati_rilevanti_set(const TFilename& file);
};
@ -950,130 +954,150 @@ public:
bool TDati_rilevanti_rep::get_usr_val(const TString& name, TVariant& var) const
{
if (name.starts_with("#FLD"))
{
const char* fld = (const char*)name + 4;
const TDati_rilevanti_set& set = *(TDati_rilevanti_set*)recordset();
if (fld[1] != '.')
const int tipo = set.rec_type()[0] - '0';
if (name == "ANNO")
{
const int t = atoi(set.rec_type());
if ((t >= 0 && t <= 5) || t == 9)
{
TString8 n;
n.format("%d.%s", t, fld);
var = set.get(n);
}
else
{
var.set_null();
return true;
}
}
else
var = set.get(fld);
return !var.is_null();
} else
if (name.starts_with("#ANNO"))
{
const TDati_rilevanti_set& set = *(TDati_rilevanti_set*)recordset();
var.set(set.anno());
return true;
}
if (name == "TIPO")
{
var.set(tipo);
return true;
}
if (name == "COFI")
{
switch (tipo)
{
case 1: var = set.get("1.2"); break;
case 4: var = set.get("4.3"); break;
default: var.set_null(); break;
}
return true;
}
if (name == "PAIV")
{
switch (tipo)
{
case 2: var = set.get("2.2"); break;
case 4: var = set.get("4.2"); break;
default: var.set_null(); break;
}
return true;
}
if (name == "RAGSOC")
{
var.set(set.ragsoc());
return true;
}
if (name == "DATAREG")
{
switch (tipo)
{
case 1: var = set.get("1.3"); break;
case 2: var = set.get("2.3"); break;
case 3: var = set.get("3.12"); break;
case 4: var = set.get("4.4"); break;
case 5: var = set.get("5.12"); break;
default: var.set_null(); break;
}
return true;
}
if (name == "NUMDOC")
{
switch (tipo)
{
case 2: var = set.get("2.4"); break;
case 3: var = set.get("3.13"); break;
case 4: var = set.get("4.5"); break;
case 5: var = set.get("5.13"); break;
default: var.set_null(); break;
}
return true;
}
if (name == "IMPORTO")
{
switch (tipo)
{
case 1: var = set.get("1.5"); break;
case 2: var = set.get("2.6"); break;
case 3: var = set.get("3.15"); break;
case 4: var = set.get("4.6"); break;
case 5: var = set.get("5.14"); break;
default: var.set_null(); break;
}
return true;
}
if (name == "IMPOSTA")
{
switch (tipo)
{
case 2: var = set.get("2.7"); break;
case 3: var = set.get("3.16"); break;
case 4: var = set.get("4.7"); break;
case 5: var = set.get("5.15"); break;
default: var.set_null(); break;
}
return true;
}
if (name == "DATARETT")
{
switch (tipo)
{
case 4: var = set.get("4.8"); break;
case 5: var = set.get("5.16"); break;
default: var.set_null(); break;
}
return true;
}
if (name == "NUMRETT")
{
switch (tipo)
{
case 4: var = set.get("4.9"); break;
case 5: var = set.get("5.17"); break;
default: var.set_null(); break;
}
return true;
}
if (name == "SIMPORTO")
{
switch (tipo)
{
case 4: var = set.get("4.10"); break;
case 5: var = set.get("5.18"); break;
default: var.set_null(); break;
}
return true;
}
if (name == "SIMPOSTA")
{
switch (tipo)
{
case 4: var = set.get("4.11"); break;
case 5: var = set.get("5.19"); break;
default: var.set_null(); break;
}
return true;
}
return TReport::get_usr_val(name, var);
}
TDati_rilevanti_rep::TDati_rilevanti_rep(const TFilename& file)
{
load("fe0100");
TDati_rilevanti_set* set = new TDati_rilevanti_set(file);
// Elimina testata e coda
set->destroy(0);
set->destroy(set->items()-1);
set_recordset(set);
TReport_font small_font, big_font;
big_font.create(font().name(), font().size()*2, XVT_FS_BOLD);
small_font.create(font().name(), font().size()/2, XVT_FS_NONE);
TReport_section& h2 = section('H', 2);
h2.group_by("#FLD1");
TReport_field* fld = new TReport_field(&h2);
fld->set_type('S');
fld->set_horizontal_alignment('C');
fld->set_field("\"Operazioni rilevanti \"+ #ANNO + \" Sezione \"+#FLD1");
fld->set_pos(100, 50);
fld->set_width(92*100);
fld->set_height(200);
fld->set_border(1);
fld->set_font(big_font);
h2.add(fld);
h2.force_page_break(true);
TString16 col;
for (int t = 0; t <= 6; t++)
{
TReport_section& b = section('B', t+1);
if (t == 6) t = 9;
col.format("#FLD1==%d", t);
b.set_condition(col);
int x = 100, y = 100;
for (int f = 1; ; f++)
{
col.format("%d.%d", t, f);
const TRecordset_column_info& info = set->column_info(col);
if (info._width > 60)
break;
const int width = info._type == DT ? 1000 : info._width*100;
if ((x+width) > 92*100)
{
x = 100;
y += 100;
}
// Sfondo grigio del campo
fld = new TReport_field(&b);
fld->set_type('T');
fld->set_pos(x-75, y);
fld->set_width(width+75);
fld->set_height(95);
fld->set_pattern(PAT_SOLID);
fld->set_back_color(XVT_MAKE_COLOR(240,240,240));
fld->set_text_color(COLOR_LTGRAY);
fld->set_picture(col.format("%d", f));
fld->set_font(small_font);
b.add(fld);
// Campo vero e proprio
fld = new TReport_field(&b);
fld->set_id(f);
col.format("#FLD%d", f);
fld->set_field(col);
fld->set_pos(x, y);
fld->set_width(width);
fld->set_height(100);
switch (info._type)
{
case _datefld:
fld->set_type('D');
break;
case _intzerofld:
case _longzerofld:
{
const TString pic(info._width, '@');
fld->set_picture(pic);
}
case _intfld:
case _longfld:
case _realfld:
fld->set_type('N');
fld->set_horizontal_alignment('R');
break;
default:
fld->set_type('S');
break;
}
fld->set_vertical_alignment('B');
b.add(fld);
x += fld->get_rect().width() + 100;
}
b.set_height(y+100);
}
}
@ -1624,13 +1648,17 @@ bool TDati_rilevanti_msk::elabora_alleg()
bool TDati_rilevanti_msk::send_nota_variazione(const TRectype& alleg, TDati_rilevanti_set& operaz)
{
const TAnagrafica anag(alleg);
real imponibile = alleg.get_real(ALL_IMPORTO);
real imposta = alleg.get_real(ALL_IMPOSTA);
if (imponibile.is_zero() && imposta.is_zero())
return false;
const TAnagrafica anag(alleg);
if (!anag.ok())
return false;
operaz.set_ragsoc(anag.ragione_sociale());
const char tipocf = alleg.get_char(ALL_TIPOCF);
char segno_imponibile = tipocf == 'C' ? 'D' : 'C'; // Normalmente sono negative e quindi a debito del dichiarante
char segno_imposta = segno_imponibile;
@ -1695,10 +1723,17 @@ bool TDati_rilevanti_msk::send_nota_variazione(const TRectype& alleg, TDati_rile
bool TDati_rilevanti_msk::send_fatt(const TRectype& alleg, TDati_rilevanti_set& operaz)
{
const TAnagrafica anag(alleg);
const real importo = alleg.get_real(ALL_IMPORTO);
const real imposta = alleg.get_real(ALL_IMPOSTA);
if (importo.is_zero() && imposta.is_zero())
return false;
const TAnagrafica anag(alleg);
if (!anag.ok())
return false;
operaz.set_ragsoc(anag.ragione_sociale());
const TString& paiv = anag.partita_IVA();
if (anag.stato_estero() > 0)
@ -2234,7 +2269,7 @@ bool TDati_rilevanti_msk::on_field_event(TOperable_field& o, TField_event e, lon
}
break;
case DLG_DELREC:
if (e == fe_button)
if (e == fe_button && jolly == 0 && o.active())
{
recall_alleg();
enable_buttons(); // Disabilita bottone
@ -2296,6 +2331,14 @@ bool TDati_rilevanti_msk::on_field_event(TOperable_field& o, TField_event e, lon
case F_RIGHE:
if (e == fe_init)
load_sheet(); else
if (e == se_query_modify)
{
TSheet_field& s = (TSheet_field&)o;
TToken_string& row = s.row(jolly);
const TRecnotype progr = row.get_long(0);
s.sheet_mask().enable(DLG_DELREC, progr >= MANUAL_ROW);
s.sheet_mask().enable(DLG_USER, progr < MANUAL_ROW);
} else
if (e == se_notify_modify)
{
set_dirty( true);
@ -2313,11 +2356,15 @@ bool TDati_rilevanti_msk::on_field_event(TOperable_field& o, TField_event e, lon
TSheet_field& s = (TSheet_field&)o;
TToken_string& row = s.row(jolly);
row.add(nuovo_progr(), s.cid2index(A_RIGA));
row.add(TDate(TODAY), s.cid2index(A_DATAREG));
row.add(1, s.cid2index(A_MODPAG));
} else
if (e == se_query_del)
return false;
{
TSheet_field& s = (TSheet_field&)o;
TToken_string& row = s.row(jolly);
const TRecnotype progr = row.get_long(0);
return progr >= MANUAL_ROW;
}
break;
case A_CODCF:
case A_OCFPI:
@ -2331,15 +2378,18 @@ bool TDati_rilevanti_msk::on_field_event(TOperable_field& o, TField_event e, lon
}
break;
case DLG_USER:
if (e == fe_button)
if (e == fe_button || e == fe_init)
{
const long numreg = o.mask().get_long(A_RIGA);
if (numreg > 0 && numreg < MANUAL_ROW)
const bool enab = (numreg > 0 && numreg < MANUAL_ROW);
if (e == fe_button && enab)
{
TRectype mov(LF_MOV);
mov.put(MOV_NUMREG, numreg);
mov.edit();
}
else
o.enable(enab);
}
break;
default:

113
fe/fe0100.rep Normal file
View File

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="fe0100" lpi="6">
<font face="Courier New" size="8" />
<section type="Head" pattern="1">
<field x="1" type="Stringa" valign="center" align="center" width="112" height="3" pattern="1">
<font face="Courier New" bold="1" size="24" />
<source>"Dati rilevanti " + ANNO + " tipo " + TIPO</source>
</field>
<field border="3" x="1" y="3" type="Linea" width="112" height="0" pattern="1" />
<field border="2" x="1" y="3" type="Linea" height="3" pattern="1" />
<field border="2" x="19" y="3" type="Linea" height="3" pattern="1" />
<field border="2" x="46" y="3" type="Linea" height="3" pattern="1" />
<field border="2" x="58" y="3" type="Linea" height="3" pattern="1" />
<field border="2" x="76" y="3" type="Linea" height="3" pattern="1" />
<field border="2" x="90" y="3" type="Linea" height="3" pattern="1" />
<field border="2" x="101" y="3" type="Linea" height="3" pattern="1" />
<field border="2" x="113" y="3" type="Linea" height="3" pattern="1" />
<field border="3" x="1" y="6" type="Linea" width="112" height="0" pattern="1" />
<field x="2" y="3.5" type="Testo" width="16" id="101" pattern="1" text="Codice Fiscale">
<source>COFI</source>
</field>
<field x="2" y="4.5" type="Testo" width="16" id="102" pattern="1" text="Partita IVA" />
<field x="20" y="3.5" type="Testo" width="25" height="2" id="201" pattern="1" text="Ragione Sociale" />
<field x="47" y="3.5" type="Testo" width="10" id="301" pattern="1" text="Data Reg." />
<field x="47" y="4.5" type="Testo" width="10" id="302" pattern="1" text="Num. Doc." />
<field x="59" y="3.5" type="Testo" width="16" id="401" pattern="1" text="Mod. Pagamento" />
<field x="59" y="4.5" type="Testo" width="16" id="402" pattern="1" text="Tipo Operazione" />
<field x="77" y="3.5" type="Testo" align="right" width="12" id="501" pattern="1" text="Importo" />
<field x="77" y="4.5" type="Testo" align="right" width="12" id="502" pattern="1" text="Imposta" />
<field x="93" y="3.5" type="Testo" width="10" height="2" id="601" pattern="1" text="Segno" />
<field x="102" y="3.5" type="Testo" width="10" id="601" pattern="1" text="Data rett." />
<field x="102" y="4.5" type="Testo" width="10" id="602" pattern="1" text="Num. Rett." />
</section>
<section type="Head" level="1" pattern="1" />
<section type="Head" level="2" height="1" page_break="1" pattern="1">
<groupby>TIPO</groupby>
<font face="Courier New" bold="1" size="8" />
</section>
<section type="Body" pattern="1" />
<section type="Body" level="1" pattern="1">
<field border="2" x="1" type="Linea" height="3" pattern="1" />
<field border="2" x="19" type="Linea" height="3" pattern="1" />
<field border="2" x="46" type="Linea" height="3" pattern="1" />
<field border="2" x="58" type="Linea" height="3" pattern="1" />
<field border="2" x="76" type="Linea" height="3" pattern="1" />
<field border="2" x="90" type="Linea" height="3" pattern="1" />
<field border="2" x="101" type="Linea" height="3" pattern="1" />
<field border="2" x="113" type="Linea" height="3" pattern="1" />
<field border="2" x="1" y="3" type="Linea" width="112" height="0" pattern="1" />
<field x="2" y="0.5" type="Stringa" width="16" id="101" pattern="1">
<source>COFI</source>
</field>
<field x="2" y="1.5" type="Stringa" width="16" id="102" pattern="1">
<source>PAIV</source>
</field>
<field x="20" y="0.5" type="Stringa" width="25" height="2" id="201" pattern="1">
<source>RAGSOC</source>
</field>
<field x="47" y="0.5" type="Data" width="10" id="301" pattern="1">
<source>DATAREG</source>
</field>
<field x="47" y="1.5" type="Stringa" width="10" id="302" pattern="1">
<source>NUMDOC</source>
</field>
<field x="59" y="0.5" type="Array" width="16" id="401" pattern="1">
<source>MODPAG</source>
<list>
<li Value="Non Frazionato" Code="1" />
<li Value="Frazionato" Code="2" />
<li Value="Periodico" Code="3" />
</list>
</field>
<field x="59" y="1.5" type="Array" width="16" id="402" pattern="1">
<source>TIPOPE</source>
<list>
<li Value="Vendita" Code="1" />
<li Value="Acquisto" Code="2" />
</list>
</field>
<field x="77" y="0.5" type="Numero" align="right" width="12" id="501" pattern="1" text="############">
<source>IMPORTO</source>
</field>
<field x="77" y="1.5" type="Numero" align="right" width="12" id="502" pattern="1" text="############">
<source>IMPOSTA</source>
</field>
<field x="102" y="0.5" type="Data" width="10" id="601" pattern="1">
<source>DATARETT</source>
</field>
<field x="102" y="1.5" type="Stringa" width="10" id="602" pattern="1">
<source>NUMRETT</source>
</field>
<field x="91" y="0.5" type="Array" align="right" width="7" id="701" pattern="1">
<source>SIMPORTO</source>
<list>
<li />
<li Value="Credito" Code="C" />
<li Value="Debito" Code="D" />
</list>
</field>
<field x="91" y="1.5" type="Array" align="right" width="7" id="702" pattern="1">
<source>SIMPOSTA</source>
<list>
<li />
<li Value="Credito" Code="C" />
<li Value="Debito" Code="D" />
</list>
</field>
</section>
<section type="Foot" pattern="1" />
<section type="Foot" level="1" pattern="1" />
<section type="Foot" level="2" pattern="1" />
<sql>USE ALLEG</sql>
</report>

View File

@ -418,6 +418,12 @@ BEGIN
PICTURE TOOL_LINK
END
BUTTON DLG_DELREC 2 2
BEGIN
PROMPT 2 1 "Elimina"
PICTURE TOOL_DELREC
END
BUTTON DLG_CANCEL 2 2
BEGIN
PROMPT 4 1 ""