Patch level : 12.0 1059

Files correlati     : f135.dir f135.trr in0.exe in0500a.msk in0600a.msk
                      in0700a.msk inmenu.men nstird.rep batbcpa.msk
                      bastcpa.msk bastcpa.rep

Commento        :

Aggiornamento intra fase 2

Interno :

Inserimento movimenti generazione riepiloghi
Mancano inserimento riepiloghi invii
This commit is contained in:
Alessandro Bonazzi 2021-04-28 23:24:58 +02:00
parent 510a8ef8fd
commit ce9c4477b8
17 changed files with 813 additions and 589 deletions

View File

@ -1,3 +1,3 @@
135 135
0 0
$rieprett|||174|0|Riepiloghi e rettifiche INTRA||| $rieprett|1|1|174|0|Riepiloghi e rettifiche INTRA|||

View File

@ -1,6 +1,6 @@
135 135
30 30
TIPOINTRA|1|1|0|<B>eni o <S>ervizi SEZIONE|2|1|0|<1> Beni, <2> Rettifiche beni, <3> Servizi, <4> Rettifiche servizi
TIPO|1|1|0|<A>cquisti o <C>essioni , rettifiche <B> acquisti o <D> cessioni TIPO|1|1|0|<A>cquisti o <C>essioni , rettifiche <B> acquisti o <D> cessioni
ANNO|2|4|0|Anno ANNO|2|4|0|Anno
PERIODO|9|2|0|Periodo (Mese[1,12] / Trimestre[1,4] / Anno [1.,1]) PERIODO|9|2|0|Periodo (Mese[1,12] / Trimestre[1,4] / Anno [1.,1])
@ -28,7 +28,8 @@ FREQUENZA|1|1|0|Frequenza (<M>ensile, <T>rimestrale, <A>nnuale)
NUMREG|3|7|0|Eventuale movimento di prima nota collegato NUMREG|3|7|0|Eventuale movimento di prima nota collegato
CODSERV|1|5|0|Codice prestazione di servizio CODSERV|1|5|0|Codice prestazione di servizio
MODEROG|1|1|0|Modalità di erogazione <I>mmediata o <R> a più riprese MODEROG|1|1|0|Modalità di erogazione <I>mmediata o <R> a più riprese
MODINC|1|1|0|Modalità di incasso <B>onifico, <A>ccredito o <X> Altro MODINCPAG|1|1|0|Modalità di incasso <B>onifico, <A>ccredito o <X> Altro
ISOPAG|1|2|0|Codice Iso Paese di pagamento ISOINCPAG|1|2|0|Codice Iso Paese di pagamento
1 2
TIPO+ANNO+PERIODO+NUMRIG| ANNO+PERIODO+NUMRIG|
ANNO+PERIODO+TIPO+SEZIONE+NUMRIG|X

View File

@ -30,7 +30,7 @@ public:
void put(real num, int pos, int dim, int dec = 0); void put(real num, int pos, int dim, int dec = 0);
void put(long num, int pos, int dim); void put(long num, int pos, int dim);
void put(char chr, int pos); void put(char chr, int pos);
void genera_testata(const TIntra_context& ic); void genera_testata(const TIntra_context& ic, long progr[], long tot[]);
void put(const TRectype& rec, TIntra_context& ic); void put(const TRectype& rec, TIntra_context& ic);
TRecord_intra(); TRecord_intra();
}; };
@ -102,10 +102,14 @@ void TRecord_intra::reset(const TIntra_context& ic)
{ {
spaces(); spaces();
put("EUROX", 1, 5); put("EUROX", 1, 5);
const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm()); const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm());
TString16 cod; TString16 cod;
cod.format("%c|%ld", ditta.get_char(NDT_TIPOA), ditta.get_long(NDT_CODANAGR)); cod.format("%c|%ld", ditta.get_char(NDT_TIPOA), ditta.get_long(NDT_CODANAGR));
const TRectype& anagr = cache().get(LF_ANAG, cod); const TRectype& anagr = cache().get(LF_ANAG, cod);
put(anagr.get(ANA_PAIV), 6, 11); put(anagr.get(ANA_PAIV), 6, 11);
put(ic._progr, 17, 6); put(ic._progr, 17, 6);
} }
@ -118,7 +122,7 @@ void TRecord_intra::reset_data()
} }
// Scrive la testata con le informazioni della ditta // Scrive la testata con le informazioni della ditta
void TRecord_intra::genera_testata(const TIntra_context& ic) void TRecord_intra::genera_testata(const TIntra_context& ic, long progr[], long tot[])
{ {
reset(ic); reset(ic);
@ -136,12 +140,13 @@ void TRecord_intra::genera_testata(const TIntra_context& ic)
put(cod, 35, 11); put(cod, 35, 11);
const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm()); const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm());
put(ditta.get_bool("PRESELEN") ? '1' : '0', 46);
put(ditta.get_bool("CESSIVA") ? '1' : '0', 47); put(ditta.get_bool(NDT_PRESELEN) ? '1' : '0', 46);
put(ditta.get_bool(NDT_CESSIVA) ? '1' : '0', 47);
cod.cut(0); cod.cut(0);
cod << ditta.get_char("TIPOSOGDEL") << '|'; cod << ditta.get_char(NDT_TIPOSOGDEL) << '|';
cod << ditta.get("CODSOGDEL"); cod << ditta.get(NDT_CODSOGDEL);
if (cod.len() >= 3) if (cod.len() >= 3)
{ {
const TRectype& sogdel = cache().get(LF_ANAG, cod); const TRectype& sogdel = cache().get(LF_ANAG, cod);
@ -150,10 +155,11 @@ void TRecord_intra::genera_testata(const TIntra_context& ic)
else else
put("", 48, 11, "Z"); put("", 48, 11, "Z");
put(ic._righe_riep, 59, 5); for (int i = 0; i < 4; i++)
put(ic._totale_riep, 64, 13, _ndec); {
put(ic._righe_rett, 77, 5); put(progr[i], 59 + i * 18, 5);
put(ic._totale_rett, 82, 13, _ndec); put(tot[i], 64 + i * 18, 13, _ndec);
}
} }
// Scrive un intero record del file riepiloghi/rettifiche // Scrive un intero record del file riepiloghi/rettifiche
@ -161,184 +167,190 @@ void TRecord_intra::put(const TRectype& rec, TIntra_context& ic)
{ {
reset_data(); reset_data();
put(rec.get_long("NUMRIG"), 24, 5); const int sezione = rec.get_int(RIEPINTRA_SEZIONE);
const char tipointra = rec.get_char("TIPOINTRA"); const TString & tipo = rec.get(RIEPINTRA_TIPO);
const char tipo = rec.get_char("TIPO");
CHECK(tipointra == ic._tipointra, "Tipo Intra non previsto"); put((long) sezione, 23, 1);
put(rec.get_long(RIEPINTRA_NUMRIG), 24, 5); //?
if (tipointra == 'B') if (tipo == "A")
{ {
switch (tipo) switch (sezione)
{ {
case 'A': case 1:
put('1', 23); put(rec.get(RIEPINTRA_STATO), 29, 2);
put(rec.get("STATO"), 29, 2); put(rec.get(RIEPINTRA_PIVA), 31, 12);
put(rec.get("PIVA"), 31, 12); put(rec.get_real(RIEPINTRA_AMMLIRE), 43, 13, _ndec);
put(rec.get_real("AMMLIRE"), 43, 13, _ndec); put(rec.get_real(RIEPINTRA_AMMVALUTA), 56, 13);
put(rec.get_real("AMMVALUTA"), 56, 13); put(rec.get_char(RIEPINTRA_NATURA), 69);
put(rec.get_char("NATURA"), 69); put(rec.get(RIEPINTRA_NOMENCL).mid(0, 4), 70, 4, "Z"); //il campo viene spezzato in 3 pezzi
put(rec.get("NOMENCL").mid(0, 4), 70, 4, "Z"); //il campo viene spezzato in 3 pezzi put(rec.get(RIEPINTRA_NOMENCL).mid(4, 2), 74, 2, "Z");
put(rec.get("NOMENCL").mid(4, 2), 74, 2, "Z"); put(rec.get(RIEPINTRA_NOMENCL).mid(6, 2), 76, 2, "Z");
put(rec.get("NOMENCL").mid(6, 2), 76, 2, "Z"); if (ic._freq == 'M')
if (ic._freq == 'M') {
{ put(rec.get_real(RIEPINTRA_MASSAKG), 78, 10, 0);
put(rec.get_real("MASSAKG"), 78, 10, 0); put(rec.get_real(RIEPINTRA_MASSAUMS), 88, 10, 0);
put(rec.get_real("MASSAUMS"), 88, 10, 0); put(rec.get_real(RIEPINTRA_VALSTAT), 98, 13, _ndec);
put(rec.get_real("VALSTAT"), 98, 13, _ndec); put(rec.get_char(RIEPINTRA_CONSEGNA), 111);
put(rec.get_char("CONSEGNA"), 111); put(rec.get_char(RIEPINTRA_TRASPORTO), 112);
put(rec.get_char("TRASPORTO"), 112); put(rec.get(RIEPINTRA_PAESE), 113, 2);
put(rec.get("PAESE"), 113, 2); put(rec.get(RIEPINTRA_PAESEORIG), 115, 2);
put(rec.get("PAESEORIG"), 115, 2); put(rec.get(RIEPINTRA_PROV), 117, 2);
put(rec.get("PROV"), 117, 2); }
} else
else put("", 78, 100);
put("", 78, 100);
break; break;
case 'B': case 2:
{
put('2', 23);
if (ic._freq == 'M')
put(rec.get("PERETT"), 29, 2, "RZ");
else
put("", 29, 2, "RZ");
if (ic._freq == 'T')
put(rec.get("PERETT")[1], 31);
else
put('0', 31);
put(rec.get("ANNORETT").right(2), 32, 2, "RZ");
put(rec.get("STATO"), 34, 2);
put(rec.get("PIVA"), 36, 12);
put(rec.get("SEGNORETT"), 48, 1);
put(rec.get_real("AMMLIRE"), 49, 13, _ndec);
put(rec.get_real("AMMVALUTA"), 62, 13);
put(rec.get_char("NATURA"), 75);
put(rec.get("NOMENCL").mid(0, 4), 76, 4, "Z"); //il campo viene spezzato in 3 pezzi
put(rec.get("NOMENCL").mid(4, 2), 80, 2, "Z");
put(rec.get("NOMENCL").mid(6, 2), 82, 2, "Z");
if (ic._freq == 'M')
put(rec.get_real("VALSTAT"), 84, 13, _ndec);
else
put("", 84, 13);
}
break;
case 'C':
put('1', 23);
put(rec.get("STATO"), 29, 2);
put(rec.get("PIVA"), 31, 12);
put(rec.get_real("AMMLIRE"), 43, 13, _ndec);
put(rec.get_char("NATURA"), 56);
put(rec.get("NOMENCL"), 57, 8, "Z"); //il campo NON viene spezzato in 3 pezzi
if (ic._freq == 'M')
{ {
put(rec.get_real("MASSAKG"), 65, 10); if (ic._freq == 'M')
put(rec.get_real("MASSAUMS"), 75, 10); put(rec.get(RIEPINTRA_PERETT), 29, 2, "RZ");
put(rec.get_real("VALSTAT"), 85, 13, _ndec); else
put(rec.get_char("CONSEGNA"), 98); put("", 29, 2, "RZ");
put(rec.get_char("TRASPORTO"), 99); if (ic._freq == 'T')
put(rec.get("PAESE"), 100, 2); put(rec.get(RIEPINTRA_PERETT)[1], 31);
put(rec.get("PROV"), 102, 2); else
put('0', 31);
put(rec.get(RIEPINTRA_ANNORETT).right(2), 32, 2, "RZ");
put(rec.get(RIEPINTRA_STATO), 34, 2);
put(rec.get(RIEPINTRA_PIVA), 36, 12);
put(rec.get(RIEPINTRA_SEGNORETT), 48, 1);
put(rec.get_real(RIEPINTRA_AMMLIRE), 49, 13, _ndec);
put(rec.get_real(RIEPINTRA_AMMVALUTA), 62, 13);
put(rec.get_char(RIEPINTRA_NATURA), 75);
put(rec.get(RIEPINTRA_NOMENCL).mid(0, 4), 76, 4, "Z"); //il campo viene spezzato in 3 pezzi
put(rec.get(RIEPINTRA_NOMENCL).mid(4, 2), 80, 2, "Z");
put(rec.get(RIEPINTRA_NOMENCL).mid(6, 2), 82, 2, "Z");
if (ic._freq == 'M')
put(rec.get_real(RIEPINTRA_VALSTAT), 84, 13, _ndec);
else
put("", 84, 13);
} }
else
put("", 65, 100);
break; break;
case 'D': case 3:
{ put(rec.get(RIEPINTRA_STATO), 29, 2);
put('2', 23); put(rec.get(RIEPINTRA_PIVA), 31, 12);
if (ic._freq == 'M') put(rec.get_real(RIEPINTRA_AMMLIRE), 43, 13, _ndec);
put(rec.get("PERETT"), 29, 2, "RZ"); put(rec.get_real(RIEPINTRA_AMMVALUTA), 56, 13);
else // put(numero fattura, 69, 15); facoltativo
put("", 29, 2, "RZ"); // put(data fattura, 84, 6); facoltativo
if (ic._freq == 'T') put(rec.get(RIEPINTRA_CODSERV), 90, 6);
put(rec.get("PERETT")[1], 31); put(rec.get_char(RIEPINTRA_MODEROG), 96);
else put(rec.get_char(RIEPINTRA_MODINCPAG), 97);
put('0', 31); put(rec.get(RIEPINTRA_ISOINCPAG), 98, 2);
put(rec.get("ANNORETT").right(2), 32, 2, "RZ"); break;
put(rec.get("STATO"), 34, 2); case 4:
put(rec.get("PIVA"), 36, 12); {
put(rec.get("SEGNORETT"), 48, 1); const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm());
put(abs(rec.get_real("AMMLIRE")), 49, 13, _ndec);
put(rec.get("NATURA"), 62, 1); put(ditta.get(NDT_UFFDOG), 29, 6);
put(rec.get("NOMENCL"), 63, 8, "Z"); // il campo NON viene spezzato in 3 pezzi put(rec.get(RIEPINTRA_ANNORETT).right(2), 35, 2, "RZ");
// put(protocollo rettifica, 37, 6, "RZ");
// put(progressivo rettifica, 43, 5, "RZ");
put(rec.get(RIEPINTRA_STATO), 48, 2);
put(rec.get(RIEPINTRA_PIVA), 50, 12);
real ammlire = rec.get_real(RIEPINTRA_AMMLIRE);
if (ic._freq == 'M') if (rec.get_real(RIEPINTRA_SEGNORETT) == "+")
put(abs(rec.get_real("VALSTAT")), 71, 13, _ndec); ammlire = -ammlire;
else put(rec.get_real(RIEPINTRA_AMMLIRE), 62, 13, _ndec);
put("", 71, 13); put(rec.get_real(RIEPINTRA_AMMVALUTA), 75, 13);
} // put(numero fattura, 88, 15); facoltativo
break; // put(data fattura, 103, 6); facoltativo
default: put(rec.get(RIEPINTRA_CODSERV), 109, 6);
NFCHECK("Record di tipo sconosciuto: %c", tipo); put(rec.get_char(RIEPINTRA_MODEROG), 115);
put(rec.get_char(RIEPINTRA_MODINCPAG), 116);
put(rec.get(RIEPINTRA_ISOINCPAG), 117, 2);
}
break;
default:
NFCHECK("sezione sconosciuta: %d", sezione);
break; break;
} }
} }
else else
{ {
switch (tipo) switch (sezione)
{ {
case 'A': case 1:
put('3', 23); put(rec.get(RIEPINTRA_STATO), 29, 2);
put(rec.get("STATO"), 29, 2); put(rec.get(RIEPINTRA_PIVA), 31, 12);
put(rec.get("PIVA"), 31, 12); put(rec.get_real(RIEPINTRA_AMMLIRE), 43, 13, _ndec);
put(rec.get_real("AMMLIRE"), 43, 13, _ndec); put(rec.get_char(RIEPINTRA_NATURA), 56);
put(rec.get_real("AMMVALUTA"), 56, 13); put(rec.get(RIEPINTRA_NOMENCL), 57, 8, "Z"); //il campo NON viene spezzato in 3 pezzi
// put(numero fattura, 69, 15); if (ic._freq == 'M')
// put(data fattura, 84, 6); {
// put(codice servizio, 90, 6); put(rec.get_real(RIEPINTRA_MASSAKG), 65, 10);
// put(modalità di erogazione, 96); put(rec.get_real(RIEPINTRA_MASSAUMS), 75, 10);
// put(modalità di incasso, 97); put(rec.get_real(RIEPINTRA_VALSTAT), 85, 13, _ndec);
// put(codice paese di pagamento, 98, 2); put(rec.get_char(RIEPINTRA_CONSEGNA), 98);
put(rec.get_char(RIEPINTRA_TRASPORTO), 99);
put(rec.get(RIEPINTRA_PAESE), 100, 2);
put(rec.get(RIEPINTRA_PROV), 102, 2);
}
else
put("", 65, 100);
break;
case 2:
{
if (ic._freq == 'M')
put(rec.get(RIEPINTRA_PERETT), 29, 2, "RZ");
else
put("", 29, 2, "RZ");
if (ic._freq == 'T')
put(rec.get(RIEPINTRA_PERETT)[1], 31);
else
put('0', 31);
put(rec.get(RIEPINTRA_ANNORETT).right(2), 32, 2, "RZ");
put(rec.get(RIEPINTRA_STATO), 34, 2);
put(rec.get(RIEPINTRA_PIVA), 36, 12);
put(rec.get(RIEPINTRA_SEGNORETT), 48, 1);
put(abs(rec.get_real(RIEPINTRA_AMMLIRE)), 49, 13, _ndec);
put(rec.get(RIEPINTRA_NATURA), 62, 1);
put(rec.get(RIEPINTRA_NOMENCL), 63, 8, "Z"); // il campo NON viene spezzato in 3 pezzi
if (ic._freq == 'M')
put(abs(rec.get_real(RIEPINTRA_VALSTAT)), 71, 13, _ndec);
else
put("", 71, 13);
}
break; break;
case 'B': case 3:
{ put(rec.get(RIEPINTRA_STATO), 29, 2);
put('4', 23); put(rec.get(RIEPINTRA_PIVA), 31, 12);
// put(sezione doganale, 29, 6); put(rec.get_real(RIEPINTRA_AMMLIRE), 43, 13, _ndec);
put(rec.get("ANNORETT").right(2), 35, 2, "RZ"); // put(numero fattura, 56, 15); facoltativo
// put(protocollo rettifica, 37, 6, "RZ"); // put(data fattura, 71, 6); facoltativo
// put(progressivo rettifica, 43, 5, "RZ"); put(rec.get(RIEPINTRA_CODSERV), 77, 6);
put(rec.get("STATO"), 48, 2); put(rec.get_char(RIEPINTRA_MODEROG), 83);
put(rec.get("PIVA"), 50, 12); put(rec.get_char(RIEPINTRA_MODINCPAG), 84);
put(rec.get_real("AMMLIRE"), 62, 13, _ndec); put(rec.get(RIEPINTRA_ISOINCPAG), 85, 2);
put(rec.get_real("AMMVALUTA"), 75, 13); break;
// put(numero fattura, 88, 15); case 4:
// put(data fattura, 103, 6); {
// put(codice servizio, 109, 6); const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm());
// put(modalità di erogazione, 115);
// put(modalità di incasso, 116); put(ditta.get(NDT_UFFDOG), 29, 6);
// put(codice paese di pagamento, 117, 2); put(rec.get(RIEPINTRA_ANNORETT).right(2), 35, 2, "RZ");
} // put(protocollo rettifica, 37, 6, "RZ");
break; // put(progressivo rettifica, 43, 5, "RZ");
case 'C': put(rec.get(RIEPINTRA_STATO), 48, 2);
put('3', 23); put(rec.get(RIEPINTRA_PIVA), 50, 12);
put(rec.get("STATO"), 29, 2);
put(rec.get("PIVA"), 31, 12); real ammlire = rec.get_real(RIEPINTRA_AMMLIRE);
put(rec.get_real("AMMLIRE"), 43, 13, _ndec);
// put(numero fattura, 56, 15); if (rec.get_real(RIEPINTRA_SEGNORETT) == "+")
// put(data fattura, 71, 6); ammlire = -ammlire;
// put(codice servizio, 77, 6); put(ammlire, 2, 13, _ndec);
// put(modalità di erogazione, 83); // put(numero fattura, 75, 15); facoltativo
// put(modalità di incasso,84); // put(data fattura, 90, 6); facoltativo
// put(codice paese di pagamento, 85, 2); put(rec.get(RIEPINTRA_CODSERV), 96, 6);
put(rec.get_char(RIEPINTRA_MODEROG), 102);
put(rec.get_char(RIEPINTRA_MODINCPAG), 103);
put(rec.get(RIEPINTRA_ISOINCPAG), 104, 2);
}
break; break;
case 'D': default:
{ NFCHECK("sezione sconosciuta: %d", sezione);
put('4', 23);
// put(sezione doganale, 29, 6);
put(rec.get("ANNORETT").right(2), 35, 2, "RZ");
// put(protocollo rettifica, 37, 6, "RZ");
// put(progressivo rettifica, 43, 5, "RZ");
put(rec.get("STATO"), 48, 2);
put(rec.get("PIVA"), 50, 12);
put(rec.get_real("AMMLIRE"), 2, 13, _ndec);
// put(numero fattura, 75, 15);
// put(data fattura, 90, 6);
// put(codice servizio, 96, 6);
// put(modalità di erogazione, 102);
// put(modalità di incasso, 103);
}
break;
default:
NFCHECK("Record di tipo sconosciuto: %c", tipo);
break; break;
} }
} }
@ -362,17 +374,20 @@ TRecord_intra::TRecord_intra() : TString(132), _ndec(0)
class TInvioIntra1_2_mask : public TIntra_mask class TInvioIntra1_2_mask : public TIntra_mask
{ {
long _progr[4];
long _totale[4];
protected: protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
virtual short type_field() const { return F_TIPO; } virtual short type_field() const { return F_TIPO; }
virtual short period_field() const { return F_PERIODO_M; } virtual short period_field() const { return F_PERIODO_M; }
virtual int anno() const { return get_int(F_ANNO); } virtual int anno() const { return get_int(F_ANNO); }
void calcola_repiloghi(const TRectype & rec);
TRecnotype calcola_totale(TCursor& cur, real& tot) const;
void proponi_numero(); void proponi_numero();
public: public:
void genera(char tipointra, char tipo); void genera(char tipointra, char tipo, bool reset = false);
void update_testata(char tipo);
TInvioIntra1_2_mask::TInvioIntra1_2_mask() : TIntra_mask("in0200a") {} TInvioIntra1_2_mask::TInvioIntra1_2_mask() : TIntra_mask("in0200a") {}
}; };
@ -452,33 +467,21 @@ bool TInvioIntra1_2_mask::on_field_event(TOperable_field& o, TField_event e, lon
return TIntra_mask::on_field_event(o, e, jolly); return TIntra_mask::on_field_event(o, e, jolly);
} }
TRecnotype TInvioIntra1_2_mask::calcola_totale(TCursor& cur, real& tot) const void TInvioIntra1_2_mask::calcola_repiloghi(const TRectype & rec)
{ {
TWait_cursor arrow; int sezione = rec.get_int(RIEPINTRA_SEZIONE);
const TRecnotype items = cur.items(); real r = rec.get_real(RIEPINTRA_AMMLIRE).round(0); // Arrotonda all'Euro i valori intermedi
cur.freeze(); long val = atol(r.string());
tot = ZERO; if ((sezione == 2 || sezione == 4) && rec.get_char("SEGNORETT") == '-')
val = -val; // Rettifiche negative
const TRectype& rec = cur.curr(); _totale[--sezione] += val;
for (cur = 0L; cur.pos() < items; ++cur)
{
const char tipo = rec.get_char("TIPO");
const real val = rec.get_real("AMMLIRE").round(0); // Arrotonda all'Euro i valori intermedi
// Da chiarire: come sommare le rettifiche negative!
if ((tipo == 'B' || tipo == 'D') && rec.get_char("SEGNORETT") == '-')
tot -= val; // Rettifiche negative
else
tot += val;
}
return items;
} }
void TInvioIntra1_2_mask::genera(char tipointra, char tipo) void TInvioIntra1_2_mask::genera(char tipointra, char tipo, bool reset)
{ {
TIntra_context ic; TIntra_context ic;
ic._tipointra = tipointra;
ic._tipo = tipo; ic._tipo = tipo;
ic._anno = anno(); ic._anno = anno();
ic._freq = frequenza(ic._anno); ic._freq = frequenza(ic._anno);
@ -491,7 +494,7 @@ void TInvioIntra1_2_mask::genera(char tipointra, char tipo)
ird.put("CODTAB", codtab); ird.put("CODTAB", codtab);
const bool exist = ird.read() == NOERR; const bool exist = ird.read() == NOERR;
if (exist) if (reset && exist)
{ {
const char* ac = tipo == 'A' ? TR("acquisti") : TR("cessioni"); const char* ac = tipo == 'A' ? TR("acquisti") : TR("cessioni");
if (!yesno_box(FR("Il file %s del periodo indicato è già stato generato:\n" if (!yesno_box(FR("Il file %s del periodo indicato è già stato generato:\n"
@ -502,71 +505,99 @@ void TInvioIntra1_2_mask::genera(char tipointra, char tipo)
TRelation rel(LF_RIEPRETT); TRelation rel(LF_RIEPRETT);
TRectype filter(LF_RIEPRETT); TRectype filter(LF_RIEPRETT);
filter.put("TIPOINTRA", ic._tipointra);
filter.put("TIPO", ic._tipo);
filter.put("ANNO", ic._anno); filter.put("ANNO", ic._anno);
filter.put("PERIODO", periodo_str()); filter.put("PERIODO", periodo_str());
TCursor riep(&rel, "", 1, &filter, &filter);
ic._righe_riep = calcola_totale(riep, ic._totale_riep); TCursor riep(&rel, "", 2, &filter, &filter);
const TRectype & rieprec = riep.curr();
filter.put("TIPO", char(ic._tipo+1)); const long items = riep.items();
TCursor rett(&rel, "", 1, &filter, &filter);
ic._righe_rett = calcola_totale(rett, ic._totale_rett);
TFilename name = get(F_PATH); TFilename name = get(F_PATH);
TString filename(get(F_CODUA)); TString filename(get(F_CODUA));
filename << format("%02d%02d%02d", today.day(), today.month(), get_int(F_NUMERO)); filename << format("%02d%02d%02d", today.day(), today.month(), get_int(F_NUMERO));
name.add(filename); name.add(filename);
if (name.exist() && yesno_box(FR("Il file %s esiste già: si desiderla sostituirlo ?\n"), (const char*)name))
return;
ofstream out(name, ios::out | ios::app); ofstream out(name, ios::out | ios::app);
if (!out) if (!out.good())
{
cantwrite_box(name);
return;
}
if (reset)
{
_progr[0] = 0L;
_progr[1] = 0L;
_progr[2] = 0L;
_progr[3] = 0L;
_totale[0] = 0L;
_totale[1] = 0L;
_totale[2] = 0L;
_totale[3] = 0L;
}
TProgress_monitor pi(2 * items, TR("Generazione Intra 1/2"), false);
TRecord_intra rec;
for (riep = 0L; pi.add_status() && riep.pos() < items; ++riep)
calcola_repiloghi(rieprec);
rec.genera_testata(ic, _progr, _totale);
out << rec;
for (riep = 0L; pi.add_status() && riep.pos() < items; ++riep)
{
rec.put(rieprec, ic);
out << rec;
}
}
void TInvioIntra1_2_mask::update_testata(char tipo)
{
TIntra_context ic;
ic._tipo = tipo;
ic._anno = anno();
ic._freq = frequenza(ic._anno);
ic._periodo = periodo();
ic._progr = get_long(F_NUMERO);
TFilename name = get(F_PATH);
TString filename(get(F_CODUA));
TRecord_intra rec;
filename << format("%02d%02d%02d", today.day(), today.month(), get_int(F_NUMERO));
name.add(filename);
ofstream out(name, ios::out | ios::ate);
if (!out.good())
{ {
cantwrite_box(name); cantwrite_box(name);
return; return;
} }
const long total = ic._righe_riep + ic._righe_rett; rec.genera_testata(ic, _progr, _totale);
TProgress_monitor pi(total, TR("Generazione Intra 1/2"), false);
TRecord_intra rec;
rec.genera_testata(ic);
out << rec; out << rec;
TString8 codtab; codtab.format("%c%04d%02d", ic._tipo, ic._anno, ic._periodo);
rec.reset_data(); TTable ird("IRD");
for (riep = 0L; riep.pos() < ic._righe_riep; ++riep)
{ set(F_NUMERO, ic._progr + 1);
pi.add_status();
rec.put(riep.curr(), ic);
out << rec;
}
rec.reset_data();
for (rett = 0L; rett.pos() < ic._righe_rett; ++rett)
{
pi.add_status();
rec.put(riep.curr(), ic);
out << rec;
}
codtab.format("%c%04d%02d", ic._tipo, ic._anno, ic._periodo);
ird.put("CODTAB", codtab); ird.put("CODTAB", codtab);
ird.put("I2", ic._righe_riep); ird.put("I0", ic._progr + 1);
ird.put("I3", ic._righe_rett); ird.put("I2", _progr[0]);
ird.put("R0", ic._totale_riep); ird.put("I3", _progr[1]);
ird.put("R1", ic._totale_rett); ird.put("I4", _progr[2]);
ird.put("I5", _progr[3]);
ird.put("R2", _totale[0]);
ird.put("R3", _totale[1]);
ird.put("R4", _totale[2]);
ird.put("R5", _totale[3]);
ird.rewrite_write(); ird.rewrite_write();
set(F_NUMERO, ic._progr + 1); set(F_NUMERO, ic._progr + 1);
TString msg("Generato il file "); TString msg("Generato il file ");
msg << name; msg << name;
message_box(name); message_box(msg);
} }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -589,17 +620,20 @@ void TInvioIntra1_2_app::main_loop()
while (m.run() == K_ENTER) while (m.run() == K_ENTER)
{ {
const char tip = m.tipo(); const char tip = m.tipo();
if (tip == 'T') if (tip == 'T')
{ {
m.genera('B', 'C'); m.genera('B', 'C', true);
m.genera('B', 'A'); m.genera('B', 'A');
m.genera('S', 'C'); m.genera('S', 'C');
m.genera('S', 'A'); m.genera('S', 'A');
m.update_testata('A');
} }
else else
{ {
m.genera('B', tip); m.genera('B', tip, true);
m.genera('S', tip); m.genera('S', tip);
m.update_testata('C');
} }
} }
m.save(); m.save();

View File

@ -650,12 +650,12 @@ void TInvioIntra12_13_mask::genera()
rec_z.fill(); rec_z.fill();
out << rec_z; out << rec_z;
/* TString8 codtab; codtab.format("A%04d%01", get_int(F_ANNO)); TString8 codtab; codtab.format("A%04d%01", get_int(F_ANNO));
TRectype & rird = (TRectype &)cache().get("IRD", codtab); TRectype & rird = (TRectype &)cache().get("IRD", codtab);
ic._progr = get_long(F_NUMERO); ic._progr = get_long(F_NUMERO);
rird.put("I4", ic._progr); rird.put("I6", ic._progr);
rird.rewrite_write(); */ rird.rewrite_write();
TString msg("Generato il file "); TString msg("Generato il file ");

View File

@ -56,6 +56,14 @@ protected:
virtual bool changing_mask(int mode) { return FALSE; } virtual bool changing_mask(int mode) { return FALSE; }
virtual bool user_destroy(); virtual bool user_destroy();
virtual bool protected_record(TRectype & rec); virtual bool protected_record(TRectype & rec);
// @cmember Inizializza la maschera per il modo ricerca
virtual void init_query_mode(TMask&);
// @cmember Inizializza la maschera per il modo ricerca ed inserimento (chiama <mf TRelation_application::init_query_mode>)
virtual void init_query_insert_mode(TMask& m);
// @cmember Inizializza la maschera per il modo inserimento
virtual void init_insert_mode(TMask&);
// @cmember Inizializza la maschera per il modo modifica
virtual void init_modify_mode(TMask&);
public: public:
}; };
@ -295,9 +303,13 @@ bool TImmissione_mask::on_sheet_field_event(TOperable_field& o, TField_event e,
if (e == fe_modify) if (e == fe_modify)
{ {
TMask& m = o.mask(); TMask& m = o.mask();
if (!o.empty()) const TString & val = o.get();
if (val.len() != 8)
return error_box(TR("La lunghezza del codice nomenclatura combinata deve essere 8"));
if (val.full())
{ {
const TRectype& nom = cache().get("%NOC", o.get()); const TRectype& nom = cache().get("%NOC", val);
m.set(F_UMS, nom.get("S5"), 0x1); m.set(F_UMS, nom.get("S5"), 0x1);
@ -333,6 +345,50 @@ TImmissione_mask::TImmissione_mask()
// Applicazione principale // Applicazione principale
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
void TImmissione_intra::init_query_mode(TMask& m)
{
TRelation_application::init_query_mode(m);
m.show(F_NUM_REG);
m.hide(F_NUM_REG_INS);
}
void TImmissione_intra::init_query_insert_mode(TMask& m)
{
m.hide(F_NUM_REG);
m.show(F_NUM_REG_INS);
}
void TImmissione_intra::init_insert_mode(TMask& m)
{
TRelation_application::init_insert_mode(m);
m.show(F_NUM_REG);
m.hide(F_NUM_REG_INS);
const TRectype & mov = cache().get(LF_MOV, m.get(F_NUM_REG));
const TString & tipocf = mov.get(MOV_TIPO);
const long codcf = mov.get_long(MOV_CODCF);
m.set(F_TIPO_MOV, tipocf == "F" ? "A" : "C");
m.set(F_CLIFO, codcf);
m.enable(F_TIPO_MOV, codcf == 0L);
m.enable(F_CLIFO, codcf == 0L);
m.enable(F_RAGSOC, codcf == 0L);
}
void TImmissione_intra::init_modify_mode(TMask& m)
{
TRelation_application::init_modify_mode(m);
m.show(F_NUM_REG);
m.hide(F_NUM_REG_INS);
const long codcf = m.get_long(F_CLIFO);
m.enable(F_TIPO_MOV, codcf == 0L);
m.enable(F_CLIFO, codcf == 0L);
m.enable(F_RAGSOC, codcf == 0L);
}
bool TImmissione_intra::protected_record(TRectype & rec) bool TImmissione_intra::protected_record(TRectype & rec)
{ {
const char tipo = rec.get_char("TIPOMOV"); const char tipo = rec.get_char("TIPOMOV");

View File

@ -2,26 +2,27 @@
#define F_DITTA_DESCR 302 #define F_DITTA_DESCR 302
#define F_NUM_REG 303 #define F_NUM_REG 303
#define F_DATA_DOC 304 #define F_NUM_REG_INS 304
#define F_NUM_DOC 305 #define F_DATA_DOC 305
#define F_NUM_DOC 306
#define F_DATA_REG 306 #define F_DATA_REG 307
#define F_DATA_INT 307 #define F_DATA_INT 308
#define F_TIPO_MOV 308 #define F_TIPO_MOV 309
#define F_TIPO_CF 310 #define F_TIPO_CF 320
#define F_CLIFO 311 #define F_CLIFO 321
#define F_RAGSOC 312 #define F_RAGSOC 322
#define F_STATO 315 #define F_STATO 325
#define F_PARTITA_IVA 316 #define F_PARTITA_IVA 326
#define F_TOT_DOC 320 #define F_TOT_DOC 330
#define F_TOT_IMM 321 #define F_TOT_IMM 331
#define F_DIF 322 #define F_DIF 332
#define F_VALUTA 330 #define F_VALUTA 340
#define F_CAMBIO 331 #define F_CAMBIO 341
#define F_RIGHE 350 #define F_RIGHE 350

View File

@ -36,15 +36,37 @@ BEGIN
DISPLAY "Numero" NUMREG DISPLAY "Numero" NUMREG
DISPLAY "Data@10" DATAREG DISPLAY "Data@10" DATAREG
DISPLAY "C/A" TIPOMOV DISPLAY "C/A" TIPOMOV
DISPLAY "Totale documento@R" TOTDOC DISPLAY "Totale documento" TOTDOC
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
OUTPUT F_NUM_REG NUMREG OUTPUT F_NUM_REG NUMREG
OUTPUT F_NUM_REG_INS NUMREG
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FLAGS "G" FLAGS "G"
KEY 1 KEY 1
FIELD NUMREG FIELD NUMREG
END END
NUMBER F_NUM_REG_INS 7
BEGIN
PROMPT 1 3 "Numero registrazione "
USE MOV SELECT (LF_CAUSALI->INTRACOM=="X")&&(LF_INTRA->NUMREG="")
JOIN LF_INTRA INTO NUMREG==NUMREG
JOIN LF_CAUSALI INTO CODCAUS==CODCAUS
JOIN LF_CLIFO INTO TIPOCF==TIPO CODCF==CODCF
INPUT NUMREG F_NUM_REG
DISPLAY "Numero" NUMREG
DISPLAY "Data@10" DATAREG
DISPLAY "C/A" TIPOMOV
DISPLAY "Totale documento" TOTDOC
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
OUTPUT F_NUM_REG_INS NUMREG
OUTPUT F_NUM_REG NUMREG
CHECKTYPE REQUIRED
FLAGS "GH"
KEY 1
FIELD NUMREG
END
DATA F_DATA_DOC DATA F_DATA_DOC
BEGIN BEGIN
PROMPT 34 3 "Documento numero " PROMPT 34 3 "Documento numero "
@ -179,7 +201,7 @@ BEGIN
FIELD CAMBIO FIELD CAMBIO
END END
SPREADSHEET F_RIGHE 78 -3 SPREADSHEET F_RIGHE -1 -3
BEGIN BEGIN
PROMPT 0 10 "" PROMPT 0 10 ""
ITEM "Tipo@7" ITEM "Tipo@7"
@ -264,7 +286,6 @@ BEGIN
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_NOMENCLATURA CODTAB OUTPUT F_NOMENCLATURA CODTAB
FIELD NOMENCL FIELD NOMENCL
VALIDATE FIXLEN_FUNC 8
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
GROUP GR_BENI GROUP GR_BENI
FLAGS "Z" FLAGS "Z"

View File

@ -161,7 +161,7 @@ protected:
virtual void init_insert_mode(TMask& m); virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m); virtual void init_modify_mode(TMask& m);
virtual bool save_and_new() const { return TRUE; }; virtual bool save_and_new() const { return TRUE; };
virtual void check_existent_disk(const TMask& m); // virtual void check_existent_disk(const TMask& m);
public: public:
}; };
@ -183,12 +183,12 @@ bool TRiepiloghi_intra::user_destroy()
bool TRiepiloghi_intra::get_next_key(TToken_string& k) bool TRiepiloghi_intra::get_next_key(TToken_string& k)
{ {
if (_msk->get(F_ANNO).empty() || _msk->get(F_PARTITA_IVA).empty()) if (_msk->get(F_ANNO).empty()) // || _msk->get(F_PARTITA_IVA).empty())
return false; return false;
_msk->autosave(*_rel); _msk->autosave(*_rel);
TRectype filter(_rel->curr()); TRectype filter(_rel->curr());
filter.zero("NUMRIG"); filter.zero(RIEPINTRA_NUMRIG);
TCursor cur(_rel, "", 1, &filter, &filter); TCursor cur(_rel, "", 1, &filter, &filter);
const long r = cur.items(); const long r = cur.items();
@ -205,19 +205,19 @@ bool TRiepiloghi_intra::get_next_key(TToken_string& k)
void TRiepiloghi_intra::init_insert_mode(TMask& m) void TRiepiloghi_intra::init_insert_mode(TMask& m)
{ {
check_existent_disk(m); // check_existent_disk(m);
m.enable(F_VALUTA); m.enable(F_VALUTA);
} }
void TRiepiloghi_intra::init_modify_mode(TMask& m) void TRiepiloghi_intra::init_modify_mode(TMask& m)
{ {
check_existent_disk(m); // check_existent_disk(m);
m.enable(F_VALUTA); m.enable(F_VALUTA);
} }
int TRiepiloghi_intra::write(const TMask& m) int TRiepiloghi_intra::write(const TMask& m)
{ {
_rel->curr().put("FREQUENZA", ((TRiepiloghi_mask &) m).frequenza(m.get_int(F_ANNO))); _rel->curr().put(RIEPINTRA_FREQUENZA, ((TRiepiloghi_mask &) m).frequenza(m.get_int(F_ANNO)));
return TRelation_application::write(m); return TRelation_application::write(m);
} }
void TRiepiloghi_intra::init_query_mode(TMask& m) void TRiepiloghi_intra::init_query_mode(TMask& m)
@ -240,6 +240,7 @@ void TRiepiloghi_intra::init_query_mode(TMask& m)
m.disable(F_VALUTA); m.disable(F_VALUTA);
} }
/*
void TRiepiloghi_intra::check_existent_disk(const TMask& m) void TRiepiloghi_intra::check_existent_disk(const TMask& m)
{ {
int anno = m.get_int(F_ANNO); int anno = m.get_int(F_ANNO);
@ -262,6 +263,7 @@ void TRiepiloghi_intra::check_existent_disk(const TMask& m)
warning_box(FR("E' già stato generato scambi.cee per il periodo %d dell'anno %d"), periodo,anno); warning_box(FR("E' già stato generato scambi.cee per il periodo %d dell'anno %d"), periodo,anno);
} }
*/
int in0600(int argc, char* argv[]) int in0600(int argc, char* argv[])
{ {

View File

@ -1,17 +1,18 @@
#define F_DITTA 301 #define F_DITTA 301
#define F_DITTA_DESCR 302 #define F_DITTA_DESCR 302
#define F_TIPO 303 #define F_SEZIONE 303
#define F_ANNO 304 #define F_TIPO 304
#define F_PERIODO_M 305 #define F_ANNO 305
#define F_PERIODO_T 306 #define F_PERIODO_M 306
#define F_PERIODO_A 307 #define F_PERIODO_T 307
#define F_STATO 308 #define F_PERIODO_A 308
#define F_TIPO_CF 309 #define F_STATO 309
#define F_PARTITA_IVA 310 #define F_TIPO_CF 310
#define F_PARTITA_DESC 311 #define F_PARTITA_IVA 311
#define F_NUM_RIG 312 #define F_PARTITA_DESC 312
#define F_RIEPILOGHI 313 #define F_NUM_RIG 313
#define F_RIEPILOGHI 314
#define F_NATURA_TRANS 321 #define F_NATURA_TRANS 321
#define F_NATURA_DESCR 322 #define F_NATURA_DESCR 322
@ -34,6 +35,12 @@
#define F_TRASPORTO_DESC 358 #define F_TRASPORTO_DESC 358
#define F_PERIODO_H 359 #define F_PERIODO_H 359
#define F_UMS 360 #define F_UMS 360
#define F_CODSERV 361
#define F_MODEROG 362
#define F_MODINCPAG 363
#define F_STATOINCPAG 364
#define GR_CESSIONI 1 #define GR_CESSIONI 1
#define GR_ACQUISTI 2 #define GR_ACQUISTI 2
#define GR_BENI 3
#define GR_SERVIZI 4

View File

@ -101,32 +101,26 @@ BEGIN
WARNING "Anno non valido" WARNING "Anno non valido"
END END
LIST F_TIPOINTRA 1 7 LIST F_SEZIONE 1 7
BEGIN BEGIN
PROMPT 46 3 "Tipo Intra " PROMPT 46 3 "Sezione "
ITEM "B|Beni" MESSAGE ENABLE,-GR_BENI|DISABLE,GR_SERVIZI ITEM "1|Beni" MESSAGE ENABLE,GR_BENI@|DISABLE,GR_SERVIZI@
ITEM "S|Servizi" MESSAGE DISABLE,-GR_BENI|ENABLE,GR_SERVIZI ITEM "3|Servizi" MESSAGE DISABLE,GR_BENI@|ENABLE,GR_SERVIZI@
KEY 1 FIELD SEZIONE
FIELD TIPOINTRA
END END
LIST F_TIPO 1 10 LIST F_TIPO 1 10
BEGIN BEGIN
PROMPT 67 3 "Tipo riepilogo " PROMPT 67 3 "Tipo riepilogo "
ITEM "C|Cessioni" ITEM "C|Cessioni" MESSAGE "C",F_TIPO_CF|SHOW,GR_CESSIONI@|HIDE,GR_ACQUISTI@
MESSAGE "C",F_TIPO_CF|SHOW,GR_CESSIONI@|HIDE,GR_ACQUISTI@ ITEM "A|Acquisti" MESSAGE "F",F_TIPO_CF|SHOW,GR_ACQUISTI@|HIDE,GR_CESSIONI@
ITEM "A|Acquisti"
MESSAGE "F",F_TIPO_CF|SHOW,GR_ACQUISTI@|HIDE,GR_CESSIONI@
KEY 1
FIELD TIPO FIELD TIPO
END END
NUBER F_NUM_RIG 7 NUBER F_NUM_RIG 7
BEGIN BEGIN
PROMPT 1 4 "Riga di riepilogo " PROMPT 1 4 "Riga di riepilogo "
USE LF_RIEPRETT USE LF_RIEPRETT SELECT (SEZIONE=="1")||(SEZIONE=="3")
INPUT TIPOINTRA F_TIPO SELECT
INPUT TIPO F_TIPO SELECT
INPUT ANNO F_ANNO SELECT INPUT ANNO F_ANNO SELECT
INPUT PERIODO F_PERIODO_H SELECT INPUT PERIODO F_PERIODO_H SELECT
INPUT NUMRIG F_NUM_RIG INPUT NUMRIG F_NUM_RIG
@ -192,7 +186,6 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
STRING F_NATURA_TRANS 1 STRING F_NATURA_TRANS 1
BEGIN BEGIN
PROMPT 1 8 "Natura transazione " PROMPT 1 8 "Natura transazione "
@ -205,6 +198,7 @@ BEGIN
OUTPUT F_NATURA_DESCR S0 OUTPUT F_NATURA_DESCR S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD NATURA FIELD NATURA
GROUP GR_BENI
END END
MEMO F_NATURA_DESCR 50 3 MEMO F_NATURA_DESCR 50 3
@ -238,6 +232,7 @@ BEGIN
MESSAGE DIRTY,F_NOMENCLATURA3 MESSAGE DIRTY,F_NOMENCLATURA3
FIELD NOMENCL[1,4] FIELD NOMENCL[1,4]
WARNING "Nomenclatura combinata assente" WARNING "Nomenclatura combinata assente"
GROUP GR_BENI
END END
STRING F_NOMENCLATURA2 2 STRING F_NOMENCLATURA2 2
@ -248,6 +243,7 @@ BEGIN
VALIDATE REQIF_FUNC 1 F_NOMENCLATURA3 VALIDATE REQIF_FUNC 1 F_NOMENCLATURA3
MESSAGE DIRTY,F_NOMENCLATURA3 MESSAGE DIRTY,F_NOMENCLATURA3
WARNING "Nomenclatura combinata assente" WARNING "Nomenclatura combinata assente"
GROUP GR_BENI
END END
NUMBER F_NOMENCLATURA3 2 NUMBER F_NOMENCLATURA3 2
@ -258,6 +254,7 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
FIELD NOMENCL[7,8] FIELD NOMENCL[7,8]
WARNING "Nomenclatura combinata assente" WARNING "Nomenclatura combinata assente"
GROUP GR_BENI
END END
STRING F_NOMENCL_DESC 40 STRING F_NOMENCL_DESC 40
@ -279,6 +276,7 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD CONSEGNA FIELD CONSEGNA
WARNING "Condizione di consegna assente" WARNING "Condizione di consegna assente"
GROUP GR_BENI
END END
STRING F_CONSEGNA_DESC 50 STRING F_CONSEGNA_DESC 50
@ -299,6 +297,7 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD TRASPORTO FIELD TRASPORTO
WARNING "Modo di trasporto assente" WARNING "Modo di trasporto assente"
GROUP GR_BENI
END END
STRING F_TRASPORTO_DESC 50 STRING F_TRASPORTO_DESC 50
@ -311,13 +310,13 @@ END
TEXT DLG_NULL TEXT DLG_NULL
BEGIN BEGIN
PROMPT 1 13 "Paese di destinazione" PROMPT 1 13 "Paese di destinazione"
GROUP GR_CESSIONI GROUP GR_CESSIONI GR_BENI
END END
TEXT DLG_NULL TEXT DLG_NULL
BEGIN BEGIN
PROMPT 1 13 "Paese di provenienza" PROMPT 1 13 "Paese di provenienza"
GROUP GR_ACQUISTI GROUP GR_ACQUISTI GR_BENI
END END
STRING F_PAESE 2 STRING F_PAESE 2
@ -331,6 +330,7 @@ BEGIN
OUTPUT F_PAESE CODTAB OUTPUT F_PAESE CODTAB
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD PAESE FIELD PAESE
GROUP GR_BENI
WARNING "Paese assente" WARNING "Paese assente"
END END
@ -341,19 +341,20 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FLAGS "U" FLAGS "U"
FIELD PAESEORIG FIELD PAESEORIG
GROUP GR_BENI
WARNING "Paese di origine assente" WARNING "Paese di origine assente"
END END
TEXT DLG_NULL TEXT DLG_NULL
BEGIN BEGIN
PROMPT 46 13 "Provincia d'origine " PROMPT 46 13 "Provincia d'origine "
GROUP GR_CESSIONI GROUP GR_CESSIONI GR_BENI
END END
TEXT DLG_NULL TEXT DLG_NULL
BEGIN BEGIN
PROMPT 46 13 "Prov. destinazione " PROMPT 46 13 "Prov. destinazione "
GROUP GR_ACQUISTI GROUP GR_ACQUISTI GR_BENI
END END
STRING F_PROV 2 STRING F_PROV 2
@ -363,6 +364,7 @@ BEGIN
FIELD PROV FIELD PROV
CHECTYPE REQUIRED CHECTYPE REQUIRED
WARNING "Provincia assente" WARNING "Provincia assente"
GROUP GR_BENI
END END
CURRENCY F_AMM_LIRE 18 CURRENCY F_AMM_LIRE 18
@ -384,6 +386,7 @@ BEGIN
OUTPUT F_VALUTA CODTAB OUTPUT F_VALUTA CODTAB
FIELD CODVAL FIELD CODVAL
FLAGS "GUZ" FLAGS "GUZ"
GROUP GR_BENI
END END
CURRENCY F_AMM_VALUTA 18 CURRENCY F_AMM_VALUTA 18
@ -392,12 +395,14 @@ BEGIN
DRIVENBY F_VALUTA DRIVENBY F_VALUTA
FIELD AMMVALUTA FIELD AMMVALUTA
WARNING "Inserire l'ammontare in valuta" WARNING "Inserire l'ammontare in valuta"
GROUP GR_BENI
END END
CURRENCY F_VALORE_STAT 18 CURRENCY F_VALORE_STAT 18
BEGIN BEGIN
PROMPT 1 16 "Valore statistico " PROMPT 1 16 "Valore statistico "
FIELD VALSTAT FIELD VALSTAT
GROUP GR_BENI
END END
NUMBER F_MASSA_KG 18 5 NUMBER F_MASSA_KG 18 5
@ -405,6 +410,7 @@ BEGIN
PROMPT 1 17 "Massa netta in Kg " PROMPT 1 17 "Massa netta in Kg "
PICTURE ".5" PICTURE ".5"
FIELD MASSAKG FIELD MASSAKG
GROUP GR_BENI
END END
STRING F_UMS 2 STRING F_UMS 2
@ -419,6 +425,76 @@ BEGIN
PICTURE ".5" PICTURE ".5"
FIELD MASSAUMS FIELD MASSAUMS
WARNING "Inserire la massa in unità supplementare" WARNING "Inserire la massa in unità supplementare"
GROUP GR_BENI
END
STRING F_CODSERV 5
BEGIN
PROMPT 1 18
FIELD CODSERV
USE %CPA
INPUT CODTAB F_CODSERV
DISPLAY "Classificazione" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODSERV CODTAB
GROUP GR_SERVIZI
END
LIST F_MODEROG 1 15
BEGIN
PROMPT 1 19 "Modalità Erogazione"
ITEM "I|Unica soluzione"
ITEM "R|Più soluzioni"
FIELD MODEROG
GROUP GR_SERVIZI
END
TEXT DLG_NULL
BEGIN
PROMPT 1 20 "Modalità di incasso "
GROUP GR_CESSIONI GR_SERVIZI
FLAGS "G"
END
TEXT DLG_NULL
BEGIN
PROMPT 1 20 "Modalità di pagamento"
GROUP GR_ACQUISTI GR_BENI
FLAGS "G"
END
LIST F_MODINCPAG 1 9
BEGIN
PROMPT 20 20 ""
ITEM "B|Bonifico"
ITEM "A|Accredito"
ITEM "X|Altro"
FIELD MODINCPAG
GROUP GR_SERVIZI
END
TEXT DLG_NULL
BEGIN
PROMPT 1 21 "Stato di incasso "
GROUP GR_CESSIONI GR_SERVIZI
END
TEXT DLG_NULL
BEGIN
PROMPT 1 21 "Stato di pagamento "
GROUP GR_ACQUISTI GR_BENI
END
STRING F_STATOINCPAG 2
BEGIN
PROMPT 20 21 ""
USE %SCE
INPUT CODTAB F_STATOINCPAG
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATOINCPAG CODTAB
FIELD ISOINCPAG
GROUP GR_SERVIZI
END END
BUTTON F_RIEPILOGHI 20 2 BUTTON F_RIEPILOGHI 20 2

View File

@ -87,6 +87,7 @@ bool TRettifiche_mask::on_field_event(TOperable_field& o, TField_event e, long j
break; break;
default: default:
const int pos = id2pos(dlg); const int pos = id2pos(dlg);
if (pos >= 0) if (pos >= 0)
set(dlg + F_STATO - O_STATO, fld(pos).get()); set(dlg + F_STATO - O_STATO, fld(pos).get());
break; break;
@ -201,8 +202,7 @@ void TRettifiche_intra::init_modify_mode(TMask& m)
const char* TRettifiche_intra::get_next_key() const char* TRettifiche_intra::get_next_key()
{ {
TRectype& curr = _rel->curr(); TRectype& curr = _rel->curr();
curr.put("TIPO", _msk->tipo()); curr.put("ANNO", _msk->anno());
curr.put("ANNO", _msk->anno());
curr.put("PERIODO", _msk->periodo_str()); curr.put("PERIODO", _msk->periodo_str());
TCursor cur(_rel, "", 1, &curr, &curr); TCursor cur(_rel, "", 1, &curr, &curr);
const long items = cur.items(); const long items = cur.items();
@ -213,8 +213,6 @@ const char* TRettifiche_intra::get_next_key()
last_row = curr.get_int("NUMRIG"); last_row = curr.get_int("NUMRIG");
} }
_str.cut(0); _str.cut(0);
_str.add(F_TIPO);
_str.add(curr.get("TIPO"));
_str.add(F_ANNO); _str.add(F_ANNO);
_str.add(curr.get("ANNO")); _str.add(curr.get("ANNO"));
_str.add(F_PERIODO_M); _str.add(F_PERIODO_M);

View File

@ -11,6 +11,7 @@
#define O_PARTITA_IVA 110 #define O_PARTITA_IVA 110
#define O_PARTITA_DESC 111 #define O_PARTITA_DESC 111
#define O_NUM_RIG 112 #define O_NUM_RIG 112
#define O_SEZIONE 113
#define O_NATURA_TRANS 121 #define O_NATURA_TRANS 121
#define O_NOMENCLATURA 122 #define O_NOMENCLATURA 122
@ -37,3 +38,13 @@
#define F_VALUTA 225 #define F_VALUTA 225
#define F_VALORE_STAT 226 #define F_VALORE_STAT 226
#define F_NUMREG 229 #define F_NUMREG 229
#define F_SEZIONE 230
#define F_CODSERV 231
#define F_MODEROG 232
#define F_MODINCPAG 233
#define F_STATOINCPAG 234
#define GR_CESSIONI 1
#define GR_ACQUISTI 2
#define GR_BENI 3
#define GR_SERVIZI 4

View File

@ -79,15 +79,24 @@ BEGIN
ITEM "01|Annuale" ITEM "01|Annuale"
END END
NUBER O_NUM_RIG 7 LIST O_SEZIONE 1 7
BEGIN
PROMPT 46 4 "Sezione "
ITEM "1|Beni" MESSAGE ENABLE,GR_BENI@|DISABLE,GR_SERVIZI@
ITEM "3|Servizi" MESSAGE DISABLE,GR_BENI@|ENABLE,GR_SERVIZI@
KEY 1
FLAGS "D"
END
NUMBER O_NUM_RIG 7
BEGIN BEGIN
PROMPT 63 4 "Riga " PROMPT 63 4 "Riga "
USE LF_RIEPRETT USE LF_RIEPRETT SELECT (SEZIONE==#OSEZIONE)&&(TIPO==#O_TIPO)
INPUT TIPO O_TIPO SELECT
INPUT ANNO O_ANNO SELECT INPUT ANNO O_ANNO SELECT
INPUT PERIODO O_PERIODO_M INPUT PERIODO O_PERIODO_M
INPUT NUMRIG O_NUM_RIG INPUT NUMRIG O_NUM_RIG
DISPLAY "Tipo" TIPO DISPLAY "Tipo" TIPO
DISPLAY "Sezione" SEZIONE
DISPLAY "Anno" ANNO DISPLAY "Anno" ANNO
DISPLAY "Periodo" PERIODO DISPLAY "Periodo" PERIODO
DISPLAY "Numero" NUMRIG DISPLAY "Numero" NUMRIG
@ -102,6 +111,8 @@ BEGIN
OUTPUT O_PERIODO_T PERIODO OUTPUT O_PERIODO_T PERIODO
OUTPUT O_NUM_RIG NUMRIG OUTPUT O_NUM_RIG NUMRIG
OUTPUT O_STATO STATO OUTPUT O_STATO STATO
// OUTPUT O_TIPO TIPO
OUTPUT O_SEZIONE SEZIONE
OUTPUT O_PARTITA_IVA PIVA OUTPUT O_PARTITA_IVA PIVA
OUTPUT O_NATURA_TRANS NATURA OUTPUT O_NATURA_TRANS NATURA
OUTPUT O_NOMENCLATURA NOMENCL OUTPUT O_NOMENCLATURA NOMENCL
@ -199,11 +210,8 @@ END
LIST F_TIPO 1 10 LIST F_TIPO 1 10
BEGIN BEGIN
PROMPT 2 12 "Tipo " PROMPT 2 12 "Tipo "
ITEM "D|Cessioni" ITEM "A|Cessioni" MESSAGE "C",F_TIPO_CF|"C",O_TIPO|SHOW,GR_CESSIONI@|HIDE,GR_ACQUISTI@
MESSAGE "C",F_TIPO_CF|"C",O_TIPO ITEM "C|Acquisti" MESSAGE "F",F_TIPO_CF|"A",O_TIPO|HIDE,GR_CESSIONI@|SHOW,GR_ACQUISTI@
ITEM "B|Acquisti"
MESSAGE "F",F_TIPO_CF|"A",O_TIPO
KEY 1
FIELD TIPO FIELD TIPO
END END
@ -242,10 +250,19 @@ BEGIN
KEY 1 KEY 1
END END
LIST F_SEZIONE 1 7
BEGIN
PROMPT 46 12 "Sezione"
ITEM "2|Beni" MESSAGE ENABLE,GR_BENI@|DISABLE,GR_SERVIZI@|"2",O_SEZIONE
ITEM "4|Servizi" MESSAGE DISABLE,GR_BENI@|ENABLE,GR_SERVIZI@|"4",O_SEZIONE
KEY 1
FIELD SEZIONE
END
NUBER F_NUM_RIG 7 NUBER F_NUM_RIG 7
BEGIN BEGIN
PROMPT 63 12 "Riga " PROMPT 63 12 "Riga "
USE LF_RIEPRETT USE LF_RIEPRETT (SEZIONE=="2")||(SEZIONE=="4")
INPUT TIPO F_TIPO SELECT INPUT TIPO F_TIPO SELECT
INPUT ANNO F_ANNO SELECT INPUT ANNO F_ANNO SELECT
INPUT PERIODO F_PERIODO_M INPUT PERIODO F_PERIODO_M
@ -322,6 +339,7 @@ BEGIN
DISPLAY "Descrizione@70" S0 DISPLAY "Descrizione@70" S0
OUTPUT F_NATURA_TRANS CODTAB OUTPUT F_NATURA_TRANS CODTAB
FIELD NATURA FIELD NATURA
GROUP GR_BENI
END END
NUMBER F_NOMENCLATURA 8 NUMBER F_NOMENCLATURA 8
@ -334,6 +352,7 @@ BEGIN
OUTPUT F_NOMENCLATURA CODTAB OUTPUT F_NOMENCLATURA CODTAB
FIELD NOMENCL FIELD NOMENCL
WARNING "Nomenclatura combinata assente" WARNING "Nomenclatura combinata assente"
GROUP GR_BENI
END END
LIST F_SEGNO 1 LIST F_SEGNO 1
@ -361,6 +380,7 @@ BEGIN
OUTPUT F_VALUTA CODTAB OUTPUT F_VALUTA CODTAB
CHECKTYPE NORMAL CHECKTYPE NORMAL
FIELD CODVAL FIELD CODVAL
GROUP GR_BENI
END END
CURRENCY F_AMM_VALUTA 18 CURRENCY F_AMM_VALUTA 18
@ -368,17 +388,88 @@ BEGIN
PROMPT 59 16 "" PROMPT 59 16 ""
DRIVENBY F_VALUTA DRIVENBY F_VALUTA
FIELD AMMVALUTA FIELD AMMVALUTA
GROUP GR_BENI
END END
CURRENCY F_VALORE_STAT 18 CURRENCY F_VALORE_STAT 18
BEGIN BEGIN
PROMPT 2 17 "Valore statistico " PROMPT 2 17 "Valore statistico "
FIELD VALSTAT FIELD VALSTAT
GROUP GR_BENI
END
STRING F_CODSERV 5
BEGIN
PROMPT 1 18
FIELD CODSERV
USE %CPA
INPUT CODTAB F_CODSERV
DISPLAY "Classificazione" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODSERV CODTAB
GROUP GR_SERVIZI
END
LIST F_MODEROG 1 15
BEGIN
PROMPT 1 19 "Modalità Erogazione"
ITEM "I|Unica soluzione"
ITEM "R|Più soluzioni"
FIELD MODEROG
GROUP GR_SERVIZI
END
TEXT DLG_NULL
BEGIN
PROMPT 1 20 "Modalità di incasso "
GROUP GR_CESSIONI GR_SERVIZI
FLAGS "G"
END
TEXT DLG_NULL
BEGIN
PROMPT 1 20 "Modalità di pagamento"
GROUP GR_ACQUISTI GR_BENI
FLAGS "G"
END
LIST F_MODINCPAG 1 9
BEGIN
PROMPT 20 20 ""
ITEM "B|Bonifico"
ITEM "A|Accredito"
ITEM "X|Altro"
FIELD MODINCPAG
GROUP GR_SERVIZI
END
TEXT DLG_NULL
BEGIN
PROMPT 1 21 "Stato di incasso "
GROUP GR_CESSIONI GR_SERVIZI
END
TEXT DLG_NULL
BEGIN
PROMPT 1 21 "Stato di pagamento "
GROUP GR_ACQUISTI GR_BENI
END
STRING F_STATOINCPAG 2
BEGIN
PROMPT 20 21 ""
USE %SCE
INPUT CODTAB F_STATOINCPAG
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATOINCPAG CODTAB
FIELD ISOINCPAG
GROUP GR_SERVIZI
END END
NUMBER F_NUMREG 7 NUMBER F_NUMREG 7
BEGIN BEGIN
PROMPT 53 17 "Numero movimento " PROMPT 2 22 "Numero movimento "
FIELD NUMREG FIELD NUMREG
FLAGS "D" FLAGS "D"
END END

View File

@ -18,9 +18,8 @@
TIntra_context::TIntra_context() TIntra_context::TIntra_context()
{ {
_tipointra = 'B';
_tipo = 'C'; _freq = 'T'; _anno = 1999; _periodo = 1; _tipo = 'C'; _freq = 'T'; _anno = 1999; _periodo = 1;
_progr = _righe_riep = _righe_rett = 0L; _progr = 0L;
// Intra 12/13 // Intra 12/13
_tInvioIntra = _Intra12; _tInvioIntra = _Intra12;
@ -33,36 +32,25 @@ TIntra_context::TIntra_context()
// TIntra_frequency // TIntra_frequency
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
char TIntra_frequency::frequenza(int a, char t) const char TIntra_frequency::frequenza(int a, const char t) const
{ {
switch (t)
{
case 'A': break;
case 'C': break;
case 'B': t = 'A'; break; // Rettifiche su Acquisti
case 'D': t = 'C'; break; // Rettifiche su Cessioni
default : break;
}
const TDate d(TODAY);
if (a <= 0) if (a <= 0)
a = d.year(); a = today.year();
if (a < d.year()) if (a < today.year())
{ {
TLocalisamfile riep(LF_RIEPRETT); TLocalisamfile riep(LF_RIEPRETT);
riep.put("TIPO", t); riep.put("TIPO", t);
riep.put("ANNO", a); riep.put("ANNO", a);
if (riep.read(_isgteq) == NOERR) if (riep.read(_isgteq) == NOERR)
{ {
if (riep.get_char("TIPO") == t && riep.get_int("ANNO") == a) if (riep.get(RIEPINTRA_TIPO) == t && riep.get_int(RIEPINTRA_ANNO) == a)
{ {
const char freq = riep.get_char("FREQUENZA"); const char freq = riep.get_char(RIEPINTRA_FREQUENZA);
if (freq > ' ') if (freq > ' ')
return freq; return freq;
} }
} }
} }
return (t == 'A') ? _freq_acq : _freq_ces; return (t == 'A') ? _freq_acq : _freq_ces;
} }
@ -120,18 +108,12 @@ void TIntra_mask::on_firm_change()
_freq.update(); _freq.update();
} }
char TIntra_mask::tipo() const
{
short id = type_field();
char t = get(id)[0];
return t;
}
char TIntra_mask::frequenza(int a, char t) const char TIntra_mask::frequenza(int a, char t) const
{ {
if (a <= 0) if (a <= 0)
a = anno(); a = anno();
if (t < 'A' || t > 'D') if (t < 'A')
t = tipo(); t = tipo();
return _freq.frequenza(a, t); return _freq.frequenza(a, t);
} }
@ -188,166 +170,126 @@ TIntra_mask::TIntra_mask(const char* name)
on_firm_change(); on_firm_change();
} }
///////////////////////////////////////////////////////////
// TDati_riepilogo
///////////////////////////////////////////////////////////
class TDati_riepilogo : public TSortable
{
TToken_string _key;
TCurrency _ammlire, _ammvaluta;
real _valstat, _massakg, _massaums;
long _numreg;
protected:
virtual TObject* dup() const { return new TDati_riepilogo(*this); }
virtual int compare(const TSortable& s) const;
public:
TDati_riepilogo& operator +=(const TDati_riepilogo& r);
void write(TRectype& rec) const;
const TString& tipo_intra(TString& c) const { _key.get(0, c); return c; }
const TString& stato(TString& c) const { _key.get(1, c); return c; }
const TString& partita_iva(TString& c) const { _key.get(2, c); return c; }
const TString& natura(TString& c) const { _key.get(4, c); return c; }
const TString& nomenclatura(TString& c) const { _key.get(5, c); return c; }
const TString& consegna(TString& c) const { _key.get(6, c); return c; }
const TString& trasporto(TString& c) const { _key.get(7, c); return c; }
const TString& paese(TString& c) const { _key.get(8, c); return c; }
const TString& paese_orig(TString& c) const { _key.get(9, c); return c; }
const TString& provincia(TString& c) const { _key.get(10, c); return c; }
TDati_riepilogo(const TDati_riepilogo& r);
TDati_riepilogo(const TToken_string& key, const TRectype& rec, const TString& codval);
virtual ~TDati_riepilogo() { }
};
int TDati_riepilogo::compare(const TSortable& s) const
{
const TDati_riepilogo& r = (const TDati_riepilogo&)s;
return _key.compare(r._key);
}
TDati_riepilogo& TDati_riepilogo::operator +=(const TDati_riepilogo& r)
{
_ammlire += r._ammlire;
_ammvaluta += r._ammvaluta;
_valstat += r._valstat;
_massakg += r._massakg;
_massaums += r._massaums;
return *this;
}
void TDati_riepilogo::write(TRectype& rec) const
{
TString str;
rec.put("TIPOINTRA", tipo_intra(str));
rec.put("STATO", stato(str));
rec.put("PIVA", partita_iva(str));
rec.put("NATURA", natura(str));
rec.put("NOMENCL", nomenclatura(str));
rec.put("CONSEGNA", consegna(str));
rec.put("TRASPORTO", trasporto(str));
rec.put("PAESE", paese(str));
rec.put("PAESEORIG", paese_orig(str));
rec.put("PROV", provincia(str));
rec.put("AMMLIRE", _ammlire.get_num());
if (_ammvaluta.is_zero() || _ammvaluta.is_firm_value())
{
rec.zero("CODVAL"); // Altrimenti genera falsi codici valuta EUR ...
rec.zero("AMMVALUTA"); // ... con importi nulli
}
else
{
rec.put("CODVAL", _ammvaluta.get_value());
rec.put("AMMVALUTA", _ammvaluta.get_num());
}
rec.put("VALSTAT", _valstat);
rec.put("MASSAKG", _massakg);
rec.put("MASSAUMS", _massaums);
rec.put("NUMREG", _numreg);
}
TDati_riepilogo::TDati_riepilogo(const TDati_riepilogo& r)
: _key(r._key), _valstat(r._valstat),
_ammlire(r._ammlire), _ammvaluta(r._ammvaluta),
_massakg(r._massakg), _massaums(r._massaums)
{ }
TDati_riepilogo::TDati_riepilogo(const TToken_string& key,
const TRectype& rec,
const TString& codval)
: _key(key), _ammlire(rec.get_real("AMMLIRE")),
_ammvaluta(rec.get_real("AMMVALUTA"), codval),
_valstat(rec.get_real("VALSTAT")),
_massakg(rec.get_real("MASSAKG")),
_massaums(rec.get_real("MASSAUMS")),
_numreg(rec.get_long("NUMREG"))
{ }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TRiepiloghi // TRiepiloghi_Intra
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TRiepiloghi : public TObject class TRiepiloghi_Intra : public TObject
{ {
TPointer_array _arr;
TAssoc_array _ass; TAssoc_array _ass;
public: public:
void destroy() { _arr.destroy(); _ass.destroy(); } void destroy() { _ass.destroy(); }
void add(const TRectype& row, const TRectype& head, const TRectype& mov); void add(const TRectype& row, const TRectype& head, int peri, char freq);
int items() const { return _arr.items(); } int items() const { return _ass.items(); }
int sort() { _arr.sort(); return items(); } int write(int from = 1);
};
const TDati_riepilogo& operator[](int r) const
{ return (const TDati_riepilogo&)_arr[r]; }
};
void TRiepiloghi::add(const TRectype& row, const TRectype& head, const TRectype& mov) int TRiepiloghi_Intra::write(int from)
{
TString_array keys;
TLocalisamfile riep(LF_RIEPRETT);
TProgress_monitor pi(items(), TR("Scrittura riepiloghi intra..."), false);
_ass.get_keys(keys);
keys.sort();
FOR_EACH_ARRAY_ITEM(keys, r, k)
{
TString * key = (TString *) k;
TRectype * rec = (TRectype *) _ass.objptr(*key);
pi.addstatus(1L);
rec->put(RIEPINTRA_NUMRIG, r + from);
const int err = rec->write_rewrite(riep);
if (err != NOERR)
error_box(FR("Errore %d durante la scrittura dei riepiloghi riga %d"), err, r + from);
}
return from + items();
}
void TRiepiloghi_Intra::add(const TRectype& row, const TRectype& head, int peri, char freq)
{ {
TString8 cod; cod << head.get_char(INTRA_TIPOCF) << '|' << head.get(INTRA_CODCF); TString8 cod; cod << head.get_char(INTRA_TIPOCF) << '|' << head.get(INTRA_CODCF);
const TRectype& clifo = cache().get(LF_CLIFO, cod); const TRectype& clifo = cache().get(LF_CLIFO, cod);
TString4 codval = head.get(MOV_CODVAL); TString4 codval = head.get(INTRA_CODVAL);
const TString4 tipointra = row.get(RINTRA_TIPOINTRA);
if (::is_euro_value(codval)) if (::is_euro_value(codval))
codval.cut(0); codval.cut(0);
TRectype rec(LF_RIEPRETT);
const TString4 tipointra = row.get(RINTRA_TIPOINTRA);
const TString4 tipo = head.get(INTRA_TIPOMOV);
TToken_string key; TToken_string key;
key.add(head.get(INTRA_TIPOMOV));
key.add(tipointra); key.add(tipointra);
key.add(clifo.get(CLI_STATOPAIV)); key.add(clifo.get(CLI_STATOPAIV));
key.add(clifo.get(CLI_PAIV)); key.add(clifo.get(CLI_PAIV));
key.add(codval); // Non e' chiaro se raggruppare per valuta! key.add(codval); // Non e' chiaro se raggruppare per valuta!
key.add(row.get(RINTRA_NATURA)); key.add(row.get(RINTRA_NATURA));
key.add(row.get(tipointra == "B" ? RINTRA_NOMENCL : RINTRA_CODSERV)); if (tipointra == "B")
key.add(row.get(RINTRA_CONSEGNA));
key.add(row.get(RINTRA_TRASPORTO));
key.add(row.get(RINTRA_PAESE));
key.add(row.get(RINTRA_PAESEORIG)); // Campo solo per Acquisti
key.add(row.get(RINTRA_PROV));
TDati_riepilogo* data = (TDati_riepilogo*)_ass.objptr(key);
if (data == nullptr)
{ {
data = new TDati_riepilogo(key, row, codval); key.add(row.get(RINTRA_NOMENCL));
_ass.add(key, data); key.add(row.get(RINTRA_CONSEGNA));
_arr.add(data); key.add(row.get(RINTRA_TRASPORTO));
key.add(row.get(RINTRA_PAESE));
key.add(row.get(RINTRA_PAESEORIG)); // Campo solo per Acquisti
key.add(row.get(RINTRA_PROV));
} }
else else
{ {
const TDati_riepilogo dr(key, row, codval);
*data += dr; key.add(row.get(RINTRA_CODSERV));
key.add(row.get(RINTRA_MODEROG));
key.add(row.get(RINTRA_MODINCPAG));
key.add(row.get(RINTRA_ISOINCPAG));
}
rec.put(RIEPINTRA_SEZIONE, tipointra == "B" ? 1 : 3);
rec.put(RIEPINTRA_TIPO, tipo);
rec.put(RIEPINTRA_ANNO, head.get_date(INTRA_DATAREG).year());
rec.put(RIEPINTRA_PERIODO, peri);
rec.zero(RIEPINTRA_NUMRIG);
rec.put(RIEPINTRA_STATO, clifo.get(CLI_STATOPAIV));
rec.put(RIEPINTRA_PIVA, clifo.get(CLI_PAIV));
rec.put(RIEPINTRA_NATURA, row.get(RINTRA_NATURA));
rec.put(RIEPINTRA_NOMENCL, row.get(RINTRA_NOMENCL));
rec.put(RIEPINTRA_CONSEGNA, row.get(RINTRA_CONSEGNA));
rec.put(RIEPINTRA_TRASPORTO, row.get(RINTRA_TRASPORTO));
rec.put(RIEPINTRA_PAESE, row.get(RINTRA_PAESE));
rec.put(RIEPINTRA_PAESEORIG, row.get(RINTRA_PAESEORIG));
rec.put(RIEPINTRA_PROV, row.get(RINTRA_PROV));
rec.put(RIEPINTRA_AMMLIRE, row.get(RINTRA_AMMLIRE));
rec.put(RIEPINTRA_AMMVALUTA, row.get(RINTRA_AMMVALUTA));
rec.put(RIEPINTRA_CODVAL, codval);
rec.put(RIEPINTRA_VALSTAT, row.get(RINTRA_VALSTAT));
rec.put(RIEPINTRA_MASSAKG, row.get(RINTRA_MASSAKG));
rec.put(RIEPINTRA_MASSAUMS, row.get(RINTRA_MASSAUMS));
rec.put(RIEPINTRA_FREQUENZA, freq);
rec.put(RIEPINTRA_CODSERV, row.get(RINTRA_CODSERV));
rec.put(RIEPINTRA_MODEROG, row.get(RINTRA_MODEROG));
rec.put(RIEPINTRA_MODINCPAG, row.get(RINTRA_MODINCPAG));
rec.put(RIEPINTRA_ISOINCPAG, row.get(RINTRA_ISOINCPAG));
TRectype * data = (TRectype *)_ass.objptr(key);
if (data == nullptr)
_ass.add(key, rec);
else
{
data->add(RIEPINTRA_AMMLIRE, row.get_real(RINTRA_AMMLIRE));
data->add(RIEPINTRA_AMMVALUTA, row.get_real(RINTRA_AMMVALUTA));
data->add(RIEPINTRA_VALSTAT, row.get_real(RINTRA_VALSTAT));
data->add(RIEPINTRA_MASSAKG, row.get_real(RINTRA_MASSAKG));
data->add(RIEPINTRA_MASSAUMS, row.get_real(RINTRA_MASSAUMS));
} }
} }
class TRettifiche : public TObject class TRettifiche_Intra : public TObject
{ {
TArray _rett; TArray _rett;
TIntra_frequency _freq; TIntra_frequency _freq;
@ -360,11 +302,10 @@ public:
long nc2ft(long numreg_nc) const; long nc2ft(long numreg_nc) const;
int add(const TRectype& rintra, const TRectype& mov, long nr_fattura); int add(const TRectype& rintra, const TRectype& mov, long nr_fattura);
int load_manual_rett(char tipo, int anno, int periodo); int load_manual_rett(char tipo, int anno, int periodo);
int sort(); int write(int from = 1);
const TRectype& operator[](int r) const { return (const TRectype&)_rett[r]; }
}; };
long TRettifiche::nc2ft(long numreg_nc) const long TRettifiche_Intra::nc2ft(long numreg_nc) const
{ {
long numreg_ft = 0L; long numreg_ft = 0L;
@ -373,10 +314,6 @@ long TRettifiche::nc2ft(long numreg_nc) const
games.add_numreg(numreg_nc); // Carica le partite in cui è coinvolta questa nota di credito (sempre e solo una!) games.add_numreg(numreg_nc); // Carica le partite in cui è coinvolta questa nota di credito (sempre e solo una!)
for (TPartita* p = games.first(); p != nullptr && numreg_ft<=0; p = games.next()) for (TPartita* p = games.first(); p != nullptr && numreg_ft<=0; p = games.next())
{ {
#ifdef DBG
if (p->conto().codclifo() == 13201)
int farmoki = 1;
#endif
for (int r = p->prima_fattura(); r >= 0 && r <= p->last(); r = p->succ(r)) for (int r = p->prima_fattura(); r >= 0 && r <= p->last(); r = p->succ(r))
{ {
const TRiga_partite& partita = p->riga(r); const TRiga_partite& partita = p->riga(r);
@ -396,7 +333,7 @@ long TRettifiche::nc2ft(long numreg_nc) const
return numreg_ft; return numreg_ft;
} }
int TRettifiche::load_manual_rett(char tipo, int anno, int periodo) int TRettifiche_Intra::load_manual_rett(char tipo, int anno, int periodo)
{ {
_rett.destroy(); _rett.destroy();
tipo = tipo < 'C' ? 'B' : 'D'; // forzatura tipo = B o D tipo = tipo < 'C' ? 'B' : 'D'; // forzatura tipo = B o D
@ -413,7 +350,7 @@ int TRettifiche::load_manual_rett(char tipo, int anno, int periodo)
return _rett.items(); return _rett.items();
} }
long TRettifiche::rett2riep(const TRectype& rett) const long TRettifiche_Intra::rett2riep(const TRectype& rett) const
{ {
TString query, filter; TString query, filter;
@ -429,22 +366,23 @@ long TRettifiche::rett2riep(const TRectype& rett) const
return nriga; return nriga;
} }
int TRettifiche::add(const TRectype& rintra, const TRectype& mov, long nr_fattura) int TRettifiche_Intra::add(const TRectype& rintra, const TRectype& mov, long nr_fattura)
{ {
CHECKD(rintra.num() == LF_RINTRA, "Record non INTRA ", rintra.num()); CHECKD(rintra.num() == LF_RINTRA, "Record non INTRA ", rintra.num());
const TDate datareg = mov.get(MOV_DATAREG); const TDate datareg = mov.get(MOV_DATAREG);
TRectype rett(LF_RIEPRETT); TRectype rett(LF_RIEPRETT);
const char tipo = mov.get_char(MOV_TIPO)=='F' ? 'B' : 'D'; const char tipo = mov.get_char(INTRA_TIPOMOV);
const TString4 tipointra = rintra.get(RINTRA_TIPOINTRA); const TString4 tipointra = rintra.get(RINTRA_TIPOINTRA);
rett.put(RIEPINTRA_TIPOINTRA, tipointra);
rett.put(RIEPINTRA_TIPO, tipo);
rett.put(RIEPINTRA_ANNO, datareg.year()); rett.put(RIEPINTRA_ANNO, datareg.year());
rett.put(RIEPINTRA_PERIODO, _freq.date2periodo(datareg, tipo)); rett.put(RIEPINTRA_PERIODO, _freq.date2periodo(datareg, tipo));
rett.put(RIEPINTRA_NUMRIG, 0); // Auto rett.zero(RIEPINTRA_NUMRIG); // Auto
TString8 cod; cod << mov.get_char(MOV_TIPO) << '|' << mov.get(MOV_CODCF); rett.put(RIEPINTRA_SEZIONE, tipointra ? 2 : 4);
rett.put(RIEPINTRA_TIPO, tipo);
TString8 cod; cod << mov.get_char(INTRA_TIPOCF) << '|' << mov.get(INTRA_CODCF);
const TRectype& clifo = cache().get(LF_CLIFO, cod); const TRectype& clifo = cache().get(LF_CLIFO, cod);
TString4 codval = mov.get(MOV_CODVALI); TString4 codval = mov.get(MOV_CODVALI);
@ -454,10 +392,7 @@ int TRettifiche::add(const TRectype& rintra, const TRectype& mov, long nr_fattur
rett.put(RIEPINTRA_STATO, clifo.get(CLI_STATOPAIV)); rett.put(RIEPINTRA_STATO, clifo.get(CLI_STATOPAIV));
rett.put(RIEPINTRA_PIVA, clifo.get(CLI_PAIV)); rett.put(RIEPINTRA_PIVA, clifo.get(CLI_PAIV));
rett.put(RIEPINTRA_NATURA, rintra.get(RINTRA_NATURA)); rett.put(RIEPINTRA_NATURA, rintra.get(RINTRA_NATURA));
if (tipointra == "B") rett.put(RIEPINTRA_NOMENCL, rintra.get(RINTRA_NOMENCL));
rett.put(RIEPINTRA_NOMENCL, rintra.get(RINTRA_NOMENCL));
else
rett.put(RIEPINTRA_CODSERV, rintra.get(RINTRA_CODSERV));
rett.put(RIEPINTRA_CONSEGNA, rintra.get(RINTRA_CONSEGNA)); rett.put(RIEPINTRA_CONSEGNA, rintra.get(RINTRA_CONSEGNA));
rett.put(RIEPINTRA_TRASPORTO, rintra.get(RINTRA_TRASPORTO)); rett.put(RIEPINTRA_TRASPORTO, rintra.get(RINTRA_TRASPORTO));
rett.put(RIEPINTRA_PAESE, rintra.get(RINTRA_PAESE)); rett.put(RIEPINTRA_PAESE, rintra.get(RINTRA_PAESE));
@ -467,20 +402,16 @@ int TRettifiche::add(const TRectype& rintra, const TRectype& mov, long nr_fattur
rett.put(RIEPINTRA_PROV, rintra.get(RINTRA_PROV)); rett.put(RIEPINTRA_PROV, rintra.get(RINTRA_PROV));
} }
real euri = rintra.get_real(RINTRA_AMMLIRE); const real euri = rintra.get_real(RINTRA_AMMLIRE);
rett.put(RIEPINTRA_SEGNORETT, ((tipointra == "S") || (euri > ZERO)) ? '+' : '-'); rett.put(RIEPINTRA_SEGNORETT, euri > ZERO ? '+' : '-');
if (tipointra == "B") rett.put(RIEPINTRA_AMMLIRE, abs(euri));
euri = abs(euri);
rett.put(RIEPINTRA_AMMLIRE, euri);
if (codval.full()) if (codval.full())
{ {
rett.put(RIEPINTRA_CODVAL, codval); rett.put(RIEPINTRA_CODVAL, codval);
real impval = rintra.get_real(RINTRA_AMMVALUTA); const real impval = rintra.get_real(RINTRA_AMMVALUTA);
if (tipointra == "B") rett.put(RIEPINTRA_AMMVALUTA, abs(impval));
impval = abs(impval);
rett.put(RIEPINTRA_AMMVALUTA, impval);
} }
rett.put(RIEPINTRA_VALSTAT, abs(rintra.get_real(RINTRA_VALSTAT))); rett.put(RIEPINTRA_VALSTAT, abs(rintra.get_real(RINTRA_VALSTAT)));
@ -488,6 +419,7 @@ int TRettifiche::add(const TRectype& rintra, const TRectype& mov, long nr_fattur
rett.put(RIEPINTRA_MASSAUMS, rintra.get(RINTRA_MASSAUMS)); rett.put(RIEPINTRA_MASSAUMS, rintra.get(RINTRA_MASSAUMS));
rett.put(RIEPINTRA_NUMREG, mov.get(MOV_NUMREG)); rett.put(RIEPINTRA_NUMREG, mov.get(MOV_NUMREG));
rett.put(RIEPINTRA_CODSERV, rintra.get(RINTRA_CODSERV));
rett.put(RIEPINTRA_MODEROG, rintra.get(RINTRA_MODEROG)); rett.put(RIEPINTRA_MODEROG, rintra.get(RINTRA_MODEROG));
rett.put(RIEPINTRA_MODINCPAG, rintra.get(RINTRA_MODINCPAG)); rett.put(RIEPINTRA_MODINCPAG, rintra.get(RINTRA_MODINCPAG));
rett.put(RIEPINTRA_MODEROG, rintra.get(RINTRA_MODEROG)); rett.put(RIEPINTRA_MODEROG, rintra.get(RINTRA_MODEROG));
@ -501,15 +433,24 @@ int TRettifiche::add(const TRectype& rintra, const TRectype& mov, long nr_fattur
return _rett.add(rett); return _rett.add(rett);
} }
int TRettifiche::sort() int TRettifiche_Intra::write(int from)
{ {
_rett.pack(); _rett.pack();
for (int i = 0; i < _rett.items(); i++)
const int items = _rett.items();
TLocalisamfile riep(LF_RIEPRETT);
FOR_EACH_ARRAY_ITEM(_rett, r, data)
{ {
TRectype* r = (TRectype*)_rett.objptr(i); TRectype* rec = (TRectype*) data;
r->put(RIEPINTRA_NUMRIG, i+1);
rec->put(RIEPINTRA_NUMRIG, r + from);
const int err = rec->write_rewrite(riep);
if (err != NOERR)
error_box(FR("Errore %d durante la scrittura dei riepiloghi riga %d"), err, r + from);
} }
return _rett.items(); return from + items;
} }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -518,8 +459,8 @@ int TRettifiche::sort()
class TGenerazione_mask : public TIntra_mask class TGenerazione_mask : public TIntra_mask
{ {
TRiepiloghi _riep; TRiepiloghi_Intra _riep;
TRettifiche _rett; TRettifiche_Intra _rett;
protected: protected:
virtual short type_field() const { return R_TIPO; } virtual short type_field() const { return R_TIPO; }
@ -626,7 +567,7 @@ bool TGenerazione_mask::genera_riepiloghi()
if (is_rettifica) if (is_rettifica)
_rett.add(row, mov, numreg_ft); _rett.add(row, mov, numreg_ft);
else else
_riep.add(row, head, mov); _riep.add(row, head, peri, freq);
rowok = rel.next_match(LF_RINTRA); rowok = rel.next_match(LF_RINTRA);
} }
} }
@ -637,64 +578,29 @@ bool TGenerazione_mask::genera_riepiloghi()
TLocalisamfile riep(LF_RIEPRETT); TLocalisamfile riep(LF_RIEPRETT);
const int riepiloghi = _riep.sort(); const int riepiloghi = _riep.items();
if (riepiloghi > 0) int last_row = 0;
{
TProgress_monitor pi(riepiloghi, TR("Scrittura riepiloghi intra..."), false);
riep.put(RIEPINTRA_TIPO, tipo);
riep.put(RIEPINTRA_ANNO, anno_r);
riep.put(RIEPINTRA_PERIODO, peri);
riep.put(RIEPINTRA_NUMRIG, 1);
int err = riep.read();
for (int r = 0; pi.add_status() && r < riepiloghi; r++)
{
riep.put(RIEPINTRA_TIPO, tipo);
riep.put(RIEPINTRA_ANNO, anno_r);
riep.put(RIEPINTRA_PERIODO, peri);
riep.put(RIEPINTRA_NUMRIG, r+1);
_riep[r].write(riep.curr());
riep.put(RIEPINTRA_FREQUENZA, freq);
const int werr = err == NOERR ? riep.rewrite() : riep.write();
if (werr != NOERR)
return error_box(FR("Errore %d durante la scrittura dei riepiloghi"), werr);
if (err == NOERR)
{
err = riep.next();
if (err == NOERR && riep.get_long("NUMRIG") == 1)
err = _iseof;
}
}
}
// Cancella eventuali altri riepiloghi del periodo if (riepiloghi > 0)
last_row = _riep.write();
const int rettifiche = _rett.items();
if (rettifiche > 0)
last_row = _rett.write(last_row);
// cancella gli altri event
TString query; TString query;
query << "USE " << LF_RIEPRETT query << "USE " << LF_RIEPRETT
<< "\nFROM TIPO=" << tipo << " ANNO=" << anno_r << " PERIODO=" << peri << " NUMRIG=" << long(riepiloghi+1) << "\nFROM TIPO=" << tipo << " ANNO=" << anno_r << " PERIODO=" << peri << " NUMRIG=" << long(last_row + 1)
<< "\nTO TIPO=" << tipo << " ANNO=" << anno_r << " PERIODO=" << peri; << "\nTO TIPO=" << tipo << " ANNO=" << anno_r << " PERIODO=" << peri;
TISAM_recordset riepset(query); TISAM_recordset riepset(query);
for (bool ok = riepset.move_first(); ok; ok = riepset.move_next()) for (bool ok = riepset.move_first(); ok; ok = riepset.move_next())
riepset.cursor()->file().remove(); riepset.cursor()->file().remove();
const int rettifiche = _rett.sort();
if (rettifiche > 0)
{
for (int r = 0; r < rettifiche; r++)
_rett[r].write_rewrite(riep);
}
// Cancella eventuali altre rettifiche del periodo
query.cut(0) << "USE " << LF_RIEPRETT
<< "\nFROM TIPO=" << char(tipo+1) << " ANNO=" << anno_r << " PERIODO=" << peri << " NUMRIG=" << long(rettifiche+1)
<< "\nTO TIPO=" << char(tipo+1) << " ANNO=" << anno_r << " PERIODO=" << peri;
TISAM_recordset rettset(query);
for (bool ok = rettset.move_first(); ok; ok = rettset.move_next())
rettset.cursor()->file().remove();
return true; return true;
} }

View File

@ -9,17 +9,11 @@ typedef enum { _Intra12, _Intra13 } Intratype;
struct TIntra_context struct TIntra_context
{ {
char _tipointra;
char _tipo; char _tipo;
long _progr; long _progr;
char _freq; char _freq;
int _anno; int _anno;
int _periodo; int _periodo;
long _righe_riep;
real _totale_riep;
long _righe_rett;
real _totale_rett;
// Intra 12/13 // Intra 12/13
Intratype _tInvioIntra; Intratype _tInvioIntra;
int _nb; int _nb;
@ -55,7 +49,7 @@ protected:
virtual int anno() const pure; virtual int anno() const pure;
public: public:
char tipo() const; const char tipo() const { return get(type_field())[0]; }
int periodo() const; int periodo() const;
virtual char frequenza(int anno = 0, char tipo = '\0') const; virtual char frequenza(int anno = 0, char tipo = '\0') const;
int date2periodo(const TDate& d) const; int date2periodo(const TDate& d) const;

View File

@ -13,11 +13,12 @@ Picture = <ba02>
Module = 0 Module = 0
Flags = "" Flags = ""
Item_01 = "Nomenclatura combinata", "ba3 -0 %noc", "" Item_01 = "Nomenclatura combinata", "ba3 -0 %noc", ""
Item_02 = "Stati CEE", "ba3 -0 %sce", "" Item_02 = "Classificazione prestazioni dei servizi", "ba3 -0 %cpa", ""
Item_03 = "Natura Transazione", "ba3 -0 %int", "" Item_03 = "Stati CEE", "ba3 -0 %sce", ""
Item_04 = "Condizioni di consegna", "ba3 -0 %icc", "" Item_04 = "Natura Transazione", "ba3 -0 %int", ""
Item_05 = "Modalita' di trasporto", "ba3 -0 %imt", "" Item_05 = "Condizioni di consegna", "ba3 -0 %icc", ""
Item_06 = "Classificazione prestazioni dei servizi", "ba3 -0 %cpa", "" Item_06 = "Modalita' di trasporto", "ba3 -0 %imt", ""
Item_07 = "Classificazione prestazioni dei servizi", "ba3 -0 %cpa", ""
[INMENU_003] [INMENU_003]
Caption = "Stampa Tabelle" Caption = "Stampa Tabelle"
@ -25,11 +26,12 @@ Picture = <ba03>
Module = 0 Module = 0
Flags = "" Flags = ""
Item_01 = "Nomenclatura combinata", "ba3 -1 %noc", "" Item_01 = "Nomenclatura combinata", "ba3 -1 %noc", ""
Item_02 = "Stati CEE", "ba3 -1 %sce", "" Item_02 = "Nomenclatura combinata", "ba3 -1 %noc", ""
Item_03 = "Natura Transazione", "ba3 -1 %int", "" Item_03 = "Stati CEE", "ba3 -1 %sce", ""
Item_04 = "Condizioni di consegna", "ba3 -1 %icc", "" Item_04 = "Natura Transazione", "ba3 -1 %int", ""
Item_05 = "Modalita' di trasporto", "ba3 -1 %imt", "" Item_05 = "Condizioni di consegna", "ba3 -1 %icc", ""
Item_06 = "Classificazione prestazioni dei servizi", "ba3 -1 %cpa", "" Item_06 = "Modalita' di trasporto", "ba3 -1 %imt", ""
Item_07 = "Classificazione prestazioni dei servizi", "ba3 -1 %cpa", ""
[INMENU_004] [INMENU_004]
Caption = "Gestione movimenti" Caption = "Gestione movimenti"

View File

@ -19,22 +19,34 @@
<field x="12" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="2" hide_zero="" text="Mese"> <field x="12" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="2" hide_zero="" text="Mese">
<font face="Courier New" bold="1" size="10" /> <font face="Courier New" bold="1" size="10" />
</field> </field>
<field x="20" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="5" codval="" id="" pattern="2" hide_zero="" text="Disco"> <field x="19" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="9" codval="" id="" pattern="2" hide_zero="" text="Intra 1&#2F;2">
<font face="Courier New" bold="1" size="10" /> <font face="Courier New" bold="1" size="10" />
</field> </field>
<field x="30" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="" pattern="2" hide_zero="" text="Righe riep."> <field x="30" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="" pattern="2" hide_zero="" text="Righe sez.1">
<font face="Courier New" bold="1" size="10" /> <font face="Courier New" bold="1" size="10" />
</field> </field>
<field x="46" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="2" hide_zero="" text="Amm. riepil."> <field x="46" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="2" hide_zero="" text="Amm. sez.1">
<font face="Courier New" bold="1" size="10" /> <font face="Courier New" bold="1" size="10" />
</field> </field>
<field x="61" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="" pattern="2" hide_zero="" text="Righe rett."> <field x="61" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="" pattern="2" hide_zero="" text="Righe sez.2">
<font face="Courier New" bold="1" size="10" /> <font face="Courier New" bold="1" size="10" />
</field> </field>
<field x="78" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="2" hide_zero="" text="Amm. rettif."> <field x="78" y="4" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="2" hide_zero="" text="Amm. sez.2">
<font face="Courier New" bold="1" size="10" /> <font face="Courier New" bold="1" size="10" />
</field> </field>
<field x="20" y="5.5" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="" pattern="2" hide_zero="" text="Intra 12&#2F;13"> <field x="18.5" y="5" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="" pattern="2" hide_zero="" text="Intra 12&#2F;13">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="30" y="5" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="" pattern="2" hide_zero="" text="Righe sez.3">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="46" y="5" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="2" hide_zero="" text="Amm. sez.3">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="61" y="5" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="" pattern="2" hide_zero="" text="Righe sez.4">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="78" y="5" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="2" hide_zero="" text="Amm. sez.4">
<font face="Courier New" bold="1" size="10" /> <font face="Courier New" bold="1" size="10" />
</field> </field>
<field border="2" x="1" y="6.5" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="93" codval="" height="0" id="" pattern="2" hide_zero="" text="" /> <field border="2" x="1" y="6.5" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="93" codval="" height="0" id="" pattern="2" hide_zero="" text="" />
@ -58,17 +70,29 @@
<source>I2</source> <source>I2</source>
</field> </field>
<field x="43" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="2" hide_zero="" text="##@,@@"> <field x="43" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="2" hide_zero="" text="##@,@@">
<source>R0</source> <source>R2</source>
</field> </field>
<field x="67" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="5" codval="" id="" pattern="2" hide_zero="" text=""> <field x="64" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="5" codval="" id="" pattern="2" hide_zero="" text="">
<source>I3</source> <source>I3</source>
</field> </field>
<field x="75" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="2" hide_zero="" text="##@,@@"> <field x="75" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="2" hide_zero="" text="##@,@@">
<source>R1</source> <source>R3</source>
</field> </field>
<field x="20" y="1" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="2" hide_zero="" text=""> <field x="20" y="1" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="2" hide_zero="" text="">
<source>I6</source>
</field>
<field x="35" y="1" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="5" codval="" id="" pattern="2" hide_zero="" text="">
<source>I4</source> <source>I4</source>
</field> </field>
<field x="43" y="1" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="2" hide_zero="" text="##@,@@">
<source>R4</source>
</field>
<field x="64" y="1" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="5" codval="" id="" pattern="2" hide_zero="" text="">
<source>I5</source>
</field>
<field x="75" y="1" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="2" hide_zero="" text="##@,@@">
<source>R5</source>
</field>
</section> </section>
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="" hidden="" height="3" page_break="" can_break="" pattern="1"> <section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="" hidden="" height="3" page_break="" can_break="" pattern="1">
<field border="2" x="1" y="0.5" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="93" codval="" height="0" id="" pattern="2" hide_zero="" text="" /> <field border="2" x="1" y="0.5" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="93" codval="" height="0" id="" pattern="2" hide_zero="" text="" />