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:
parent
6135d9e03f
commit
9c0dbd5406
292
fe/fe0100.cpp
292
fe/fe0100.cpp
@ -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
113
fe/fe0100.rep
Normal 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>
|
@ -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 ""
|
||||
|
Loading…
x
Reference in New Issue
Block a user