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:
parent
510a8ef8fd
commit
ce9c4477b8
@ -1,3 +1,3 @@
|
||||
135
|
||||
0
|
||||
$rieprett|||174|0|Riepiloghi e rettifiche INTRA|||
|
||||
$rieprett|1|1|174|0|Riepiloghi e rettifiche INTRA|||
|
||||
|
@ -1,6 +1,6 @@
|
||||
135
|
||||
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
|
||||
ANNO|2|4|0|Anno
|
||||
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
|
||||
CODSERV|1|5|0|Codice prestazione di servizio
|
||||
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
|
||||
ISOPAG|1|2|0|Codice Iso Paese di pagamento
|
||||
1
|
||||
TIPO+ANNO+PERIODO+NUMRIG|
|
||||
MODINCPAG|1|1|0|Modalità di incasso <B>onifico, <A>ccredito o <X> Altro
|
||||
ISOINCPAG|1|2|0|Codice Iso Paese di pagamento
|
||||
2
|
||||
ANNO+PERIODO+NUMRIG|
|
||||
ANNO+PERIODO+TIPO+SEZIONE+NUMRIG|X
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
void put(real num, int pos, int dim, int dec = 0);
|
||||
void put(long num, int pos, int dim);
|
||||
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);
|
||||
TRecord_intra();
|
||||
};
|
||||
@ -102,10 +102,14 @@ void TRecord_intra::reset(const TIntra_context& ic)
|
||||
{
|
||||
spaces();
|
||||
put("EUROX", 1, 5);
|
||||
|
||||
const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm());
|
||||
TString16 cod;
|
||||
|
||||
cod.format("%c|%ld", ditta.get_char(NDT_TIPOA), ditta.get_long(NDT_CODANAGR));
|
||||
|
||||
const TRectype& anagr = cache().get(LF_ANAG, cod);
|
||||
|
||||
put(anagr.get(ANA_PAIV), 6, 11);
|
||||
put(ic._progr, 17, 6);
|
||||
}
|
||||
@ -118,7 +122,7 @@ void TRecord_intra::reset_data()
|
||||
}
|
||||
|
||||
// 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);
|
||||
|
||||
@ -136,12 +140,13 @@ void TRecord_intra::genera_testata(const TIntra_context& ic)
|
||||
put(cod, 35, 11);
|
||||
|
||||
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 << ditta.get_char("TIPOSOGDEL") << '|';
|
||||
cod << ditta.get("CODSOGDEL");
|
||||
cod << ditta.get_char(NDT_TIPOSOGDEL) << '|';
|
||||
cod << ditta.get(NDT_CODSOGDEL);
|
||||
if (cod.len() >= 3)
|
||||
{
|
||||
const TRectype& sogdel = cache().get(LF_ANAG, cod);
|
||||
@ -150,10 +155,11 @@ void TRecord_intra::genera_testata(const TIntra_context& ic)
|
||||
else
|
||||
put("", 48, 11, "Z");
|
||||
|
||||
put(ic._righe_riep, 59, 5);
|
||||
put(ic._totale_riep, 64, 13, _ndec);
|
||||
put(ic._righe_rett, 77, 5);
|
||||
put(ic._totale_rett, 82, 13, _ndec);
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
put(progr[i], 59 + i * 18, 5);
|
||||
put(tot[i], 64 + i * 18, 13, _ndec);
|
||||
}
|
||||
}
|
||||
|
||||
// Scrive un intero record del file riepiloghi/rettifiche
|
||||
@ -161,184 +167,190 @@ void TRecord_intra::put(const TRectype& rec, TIntra_context& ic)
|
||||
{
|
||||
reset_data();
|
||||
|
||||
put(rec.get_long("NUMRIG"), 24, 5);
|
||||
const char tipointra = rec.get_char("TIPOINTRA");
|
||||
const char tipo = rec.get_char("TIPO");
|
||||
const int sezione = rec.get_int(RIEPINTRA_SEZIONE);
|
||||
const TString & tipo = rec.get(RIEPINTRA_TIPO);
|
||||
|
||||
CHECK(tipointra == ic._tipointra, "Tipo Intra non previsto");
|
||||
|
||||
if (tipointra == 'B')
|
||||
put((long) sezione, 23, 1);
|
||||
put(rec.get_long(RIEPINTRA_NUMRIG), 24, 5); //?
|
||||
if (tipo == "A")
|
||||
{
|
||||
switch (tipo)
|
||||
switch (sezione)
|
||||
{
|
||||
case 'A':
|
||||
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_real("AMMVALUTA"), 56, 13);
|
||||
put(rec.get_char("NATURA"), 69);
|
||||
put(rec.get("NOMENCL").mid(0, 4), 70, 4, "Z"); //il campo viene spezzato in 3 pezzi
|
||||
put(rec.get("NOMENCL").mid(4, 2), 74, 2, "Z");
|
||||
put(rec.get("NOMENCL").mid(6, 2), 76, 2, "Z");
|
||||
if (ic._freq == 'M')
|
||||
{
|
||||
put(rec.get_real("MASSAKG"), 78, 10, 0);
|
||||
put(rec.get_real("MASSAUMS"), 88, 10, 0);
|
||||
put(rec.get_real("VALSTAT"), 98, 13, _ndec);
|
||||
put(rec.get_char("CONSEGNA"), 111);
|
||||
put(rec.get_char("TRASPORTO"), 112);
|
||||
put(rec.get("PAESE"), 113, 2);
|
||||
put(rec.get("PAESEORIG"), 115, 2);
|
||||
put(rec.get("PROV"), 117, 2);
|
||||
}
|
||||
else
|
||||
put("", 78, 100);
|
||||
case 1:
|
||||
put(rec.get(RIEPINTRA_STATO), 29, 2);
|
||||
put(rec.get(RIEPINTRA_PIVA), 31, 12);
|
||||
put(rec.get_real(RIEPINTRA_AMMLIRE), 43, 13, _ndec);
|
||||
put(rec.get_real(RIEPINTRA_AMMVALUTA), 56, 13);
|
||||
put(rec.get_char(RIEPINTRA_NATURA), 69);
|
||||
put(rec.get(RIEPINTRA_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(RIEPINTRA_NOMENCL).mid(6, 2), 76, 2, "Z");
|
||||
if (ic._freq == 'M')
|
||||
{
|
||||
put(rec.get_real(RIEPINTRA_MASSAKG), 78, 10, 0);
|
||||
put(rec.get_real(RIEPINTRA_MASSAUMS), 88, 10, 0);
|
||||
put(rec.get_real(RIEPINTRA_VALSTAT), 98, 13, _ndec);
|
||||
put(rec.get_char(RIEPINTRA_CONSEGNA), 111);
|
||||
put(rec.get_char(RIEPINTRA_TRASPORTO), 112);
|
||||
put(rec.get(RIEPINTRA_PAESE), 113, 2);
|
||||
put(rec.get(RIEPINTRA_PAESEORIG), 115, 2);
|
||||
put(rec.get(RIEPINTRA_PROV), 117, 2);
|
||||
}
|
||||
else
|
||||
put("", 78, 100);
|
||||
break;
|
||||
case 'B':
|
||||
{
|
||||
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')
|
||||
case 2:
|
||||
{
|
||||
put(rec.get_real("MASSAKG"), 65, 10);
|
||||
put(rec.get_real("MASSAUMS"), 75, 10);
|
||||
put(rec.get_real("VALSTAT"), 85, 13, _ndec);
|
||||
put(rec.get_char("CONSEGNA"), 98);
|
||||
put(rec.get_char("TRASPORTO"), 99);
|
||||
put(rec.get("PAESE"), 100, 2);
|
||||
put(rec.get("PROV"), 102, 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(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;
|
||||
case 'D':
|
||||
{
|
||||
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(abs(rec.get_real("AMMLIRE")), 49, 13, _ndec);
|
||||
put(rec.get("NATURA"), 62, 1);
|
||||
put(rec.get("NOMENCL"), 63, 8, "Z"); // il campo NON viene spezzato in 3 pezzi
|
||||
case 3:
|
||||
put(rec.get(RIEPINTRA_STATO), 29, 2);
|
||||
put(rec.get(RIEPINTRA_PIVA), 31, 12);
|
||||
put(rec.get_real(RIEPINTRA_AMMLIRE), 43, 13, _ndec);
|
||||
put(rec.get_real(RIEPINTRA_AMMVALUTA), 56, 13);
|
||||
// put(numero fattura, 69, 15); facoltativo
|
||||
// put(data fattura, 84, 6); facoltativo
|
||||
put(rec.get(RIEPINTRA_CODSERV), 90, 6);
|
||||
put(rec.get_char(RIEPINTRA_MODEROG), 96);
|
||||
put(rec.get_char(RIEPINTRA_MODINCPAG), 97);
|
||||
put(rec.get(RIEPINTRA_ISOINCPAG), 98, 2);
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm());
|
||||
|
||||
put(ditta.get(NDT_UFFDOG), 29, 6);
|
||||
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')
|
||||
put(abs(rec.get_real("VALSTAT")), 71, 13, _ndec);
|
||||
else
|
||||
put("", 71, 13);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
NFCHECK("Record di tipo sconosciuto: %c", tipo);
|
||||
if (rec.get_real(RIEPINTRA_SEGNORETT) == "+")
|
||||
ammlire = -ammlire;
|
||||
put(rec.get_real(RIEPINTRA_AMMLIRE), 62, 13, _ndec);
|
||||
put(rec.get_real(RIEPINTRA_AMMVALUTA), 75, 13);
|
||||
// put(numero fattura, 88, 15); facoltativo
|
||||
// put(data fattura, 103, 6); facoltativo
|
||||
put(rec.get(RIEPINTRA_CODSERV), 109, 6);
|
||||
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;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (tipo)
|
||||
switch (sezione)
|
||||
{
|
||||
case 'A':
|
||||
put('3', 23);
|
||||
put(rec.get("STATO"), 29, 2);
|
||||
put(rec.get("PIVA"), 31, 12);
|
||||
put(rec.get_real("AMMLIRE"), 43, 13, _ndec);
|
||||
put(rec.get_real("AMMVALUTA"), 56, 13);
|
||||
// put(numero fattura, 69, 15);
|
||||
// put(data fattura, 84, 6);
|
||||
// put(codice servizio, 90, 6);
|
||||
// put(modalità di erogazione, 96);
|
||||
// put(modalità di incasso, 97);
|
||||
// put(codice paese di pagamento, 98, 2);
|
||||
case 1:
|
||||
put(rec.get(RIEPINTRA_STATO), 29, 2);
|
||||
put(rec.get(RIEPINTRA_PIVA), 31, 12);
|
||||
put(rec.get_real(RIEPINTRA_AMMLIRE), 43, 13, _ndec);
|
||||
put(rec.get_char(RIEPINTRA_NATURA), 56);
|
||||
put(rec.get(RIEPINTRA_NOMENCL), 57, 8, "Z"); //il campo NON viene spezzato in 3 pezzi
|
||||
if (ic._freq == 'M')
|
||||
{
|
||||
put(rec.get_real(RIEPINTRA_MASSAKG), 65, 10);
|
||||
put(rec.get_real(RIEPINTRA_MASSAUMS), 75, 10);
|
||||
put(rec.get_real(RIEPINTRA_VALSTAT), 85, 13, _ndec);
|
||||
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;
|
||||
case 'B':
|
||||
{
|
||||
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"), 62, 13, _ndec);
|
||||
put(rec.get_real("AMMVALUTA"), 75, 13);
|
||||
// put(numero fattura, 88, 15);
|
||||
// put(data fattura, 103, 6);
|
||||
// put(codice servizio, 109, 6);
|
||||
// put(modalità di erogazione, 115);
|
||||
// put(modalità di incasso, 116);
|
||||
// put(codice paese di pagamento, 117, 2);
|
||||
}
|
||||
break;
|
||||
case 'C':
|
||||
put('3', 23);
|
||||
put(rec.get("STATO"), 29, 2);
|
||||
put(rec.get("PIVA"), 31, 12);
|
||||
put(rec.get_real("AMMLIRE"), 43, 13, _ndec);
|
||||
// put(numero fattura, 56, 15);
|
||||
// put(data fattura, 71, 6);
|
||||
// put(codice servizio, 77, 6);
|
||||
// put(modalità di erogazione, 83);
|
||||
// put(modalità di incasso,84);
|
||||
// put(codice paese di pagamento, 85, 2);
|
||||
case 3:
|
||||
put(rec.get(RIEPINTRA_STATO), 29, 2);
|
||||
put(rec.get(RIEPINTRA_PIVA), 31, 12);
|
||||
put(rec.get_real(RIEPINTRA_AMMLIRE), 43, 13, _ndec);
|
||||
// put(numero fattura, 56, 15); facoltativo
|
||||
// put(data fattura, 71, 6); facoltativo
|
||||
put(rec.get(RIEPINTRA_CODSERV), 77, 6);
|
||||
put(rec.get_char(RIEPINTRA_MODEROG), 83);
|
||||
put(rec.get_char(RIEPINTRA_MODINCPAG), 84);
|
||||
put(rec.get(RIEPINTRA_ISOINCPAG), 85, 2);
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm());
|
||||
|
||||
put(ditta.get(NDT_UFFDOG), 29, 6);
|
||||
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 (rec.get_real(RIEPINTRA_SEGNORETT) == "+")
|
||||
ammlire = -ammlire;
|
||||
put(ammlire, 2, 13, _ndec);
|
||||
// put(numero fattura, 75, 15); facoltativo
|
||||
// put(data fattura, 90, 6); facoltativo
|
||||
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;
|
||||
case 'D':
|
||||
{
|
||||
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);
|
||||
default:
|
||||
NFCHECK("sezione sconosciuta: %d", sezione);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -362,17 +374,20 @@ TRecord_intra::TRecord_intra() : TString(132), _ndec(0)
|
||||
|
||||
class TInvioIntra1_2_mask : public TIntra_mask
|
||||
{
|
||||
long _progr[4];
|
||||
long _totale[4];
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
virtual short type_field() const { return F_TIPO; }
|
||||
virtual short period_field() const { return F_PERIODO_M; }
|
||||
virtual int anno() const { return get_int(F_ANNO); }
|
||||
|
||||
TRecnotype calcola_totale(TCursor& cur, real& tot) const;
|
||||
void calcola_repiloghi(const TRectype & rec);
|
||||
void proponi_numero();
|
||||
|
||||
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") {}
|
||||
};
|
||||
@ -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);
|
||||
}
|
||||
|
||||
TRecnotype TInvioIntra1_2_mask::calcola_totale(TCursor& cur, real& tot) const
|
||||
void TInvioIntra1_2_mask::calcola_repiloghi(const TRectype & rec)
|
||||
{
|
||||
TWait_cursor arrow;
|
||||
const TRecnotype items = cur.items();
|
||||
cur.freeze();
|
||||
int sezione = rec.get_int(RIEPINTRA_SEZIONE);
|
||||
real r = rec.get_real(RIEPINTRA_AMMLIRE).round(0); // Arrotonda all'Euro i valori intermedi
|
||||
long val = atol(r.string());
|
||||
|
||||
tot = ZERO;
|
||||
|
||||
const TRectype& rec = cur.curr();
|
||||
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;
|
||||
if ((sezione == 2 || sezione == 4) && rec.get_char("SEGNORETT") == '-')
|
||||
val = -val; // Rettifiche negative
|
||||
_totale[--sezione] += val;
|
||||
}
|
||||
|
||||
void TInvioIntra1_2_mask::genera(char tipointra, char tipo)
|
||||
void TInvioIntra1_2_mask::genera(char tipointra, char tipo, bool reset)
|
||||
{
|
||||
TIntra_context ic;
|
||||
|
||||
ic._tipointra = tipointra;
|
||||
ic._tipo = tipo;
|
||||
ic._anno = anno();
|
||||
ic._freq = frequenza(ic._anno);
|
||||
@ -491,7 +494,7 @@ void TInvioIntra1_2_mask::genera(char tipointra, char tipo)
|
||||
ird.put("CODTAB", codtab);
|
||||
const bool exist = ird.read() == NOERR;
|
||||
|
||||
if (exist)
|
||||
if (reset && exist)
|
||||
{
|
||||
const char* ac = tipo == 'A' ? TR("acquisti") : TR("cessioni");
|
||||
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);
|
||||
TRectype filter(LF_RIEPRETT);
|
||||
|
||||
filter.put("TIPOINTRA", ic._tipointra);
|
||||
filter.put("TIPO", ic._tipo);
|
||||
filter.put("ANNO", ic._anno);
|
||||
filter.put("PERIODO", periodo_str());
|
||||
TCursor riep(&rel, "", 1, &filter, &filter);
|
||||
|
||||
ic._righe_riep = calcola_totale(riep, ic._totale_riep);
|
||||
|
||||
filter.put("TIPO", char(ic._tipo+1));
|
||||
TCursor rett(&rel, "", 1, &filter, &filter);
|
||||
|
||||
ic._righe_rett = calcola_totale(rett, ic._totale_rett);
|
||||
|
||||
TCursor riep(&rel, "", 2, &filter, &filter);
|
||||
const TRectype & rieprec = riep.curr();
|
||||
const long items = riep.items();
|
||||
TFilename name = get(F_PATH);
|
||||
TString filename(get(F_CODUA));
|
||||
|
||||
filename << format("%02d%02d%02d", today.day(), today.month(), get_int(F_NUMERO));
|
||||
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);
|
||||
|
||||
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);
|
||||
return;
|
||||
}
|
||||
|
||||
const long total = ic._righe_riep + ic._righe_rett;
|
||||
|
||||
TProgress_monitor pi(total, TR("Generazione Intra 1/2"), false);
|
||||
TRecord_intra rec;
|
||||
rec.genera_testata(ic);
|
||||
rec.genera_testata(ic, _progr, _totale);
|
||||
out << rec;
|
||||
|
||||
rec.reset_data();
|
||||
for (riep = 0L; riep.pos() < ic._righe_riep; ++riep)
|
||||
{
|
||||
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;
|
||||
}
|
||||
TString8 codtab; codtab.format("%c%04d%02d", ic._tipo, ic._anno, ic._periodo);
|
||||
TTable ird("IRD");
|
||||
|
||||
set(F_NUMERO, ic._progr + 1);
|
||||
|
||||
codtab.format("%c%04d%02d", ic._tipo, ic._anno, ic._periodo);
|
||||
|
||||
ird.put("CODTAB", codtab);
|
||||
ird.put("I2", ic._righe_riep);
|
||||
ird.put("I3", ic._righe_rett);
|
||||
ird.put("R0", ic._totale_riep);
|
||||
ird.put("R1", ic._totale_rett);
|
||||
ird.put("I0", ic._progr + 1);
|
||||
ird.put("I2", _progr[0]);
|
||||
ird.put("I3", _progr[1]);
|
||||
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();
|
||||
set(F_NUMERO, ic._progr + 1);
|
||||
set(F_NUMERO, ic._progr + 1);
|
||||
|
||||
TString msg("Generato il file ");
|
||||
|
||||
msg << name;
|
||||
message_box(name);
|
||||
message_box(msg);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -589,17 +620,20 @@ void TInvioIntra1_2_app::main_loop()
|
||||
while (m.run() == K_ENTER)
|
||||
{
|
||||
const char tip = m.tipo();
|
||||
|
||||
if (tip == 'T')
|
||||
{
|
||||
m.genera('B', 'C');
|
||||
m.genera('B', 'C', true);
|
||||
m.genera('B', 'A');
|
||||
m.genera('S', 'C');
|
||||
m.genera('S', 'A');
|
||||
m.update_testata('A');
|
||||
}
|
||||
else
|
||||
{
|
||||
m.genera('B', tip);
|
||||
m.genera('B', tip, true);
|
||||
m.genera('S', tip);
|
||||
m.update_testata('C');
|
||||
}
|
||||
}
|
||||
m.save();
|
||||
|
@ -650,12 +650,12 @@ void TInvioIntra12_13_mask::genera()
|
||||
rec_z.fill();
|
||||
out << rec_z;
|
||||
|
||||
/* TString8 codtab; codtab.format("A%04d%01", get_int(F_ANNO));
|
||||
TRectype & rird = (TRectype &)cache().get("IRD", codtab);
|
||||
TString8 codtab; codtab.format("A%04d%01", get_int(F_ANNO));
|
||||
TRectype & rird = (TRectype &)cache().get("IRD", codtab);
|
||||
|
||||
ic._progr = get_long(F_NUMERO);
|
||||
rird.put("I4", ic._progr);
|
||||
rird.rewrite_write(); */
|
||||
rird.put("I6", ic._progr);
|
||||
rird.rewrite_write();
|
||||
|
||||
TString msg("Generato il file ");
|
||||
|
||||
|
@ -56,6 +56,14 @@ protected:
|
||||
virtual bool changing_mask(int mode) { return FALSE; }
|
||||
virtual bool user_destroy();
|
||||
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:
|
||||
};
|
||||
@ -295,9 +303,13 @@ bool TImmissione_mask::on_sheet_field_event(TOperable_field& o, TField_event e,
|
||||
if (e == fe_modify)
|
||||
{
|
||||
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);
|
||||
|
||||
@ -333,6 +345,50 @@ TImmissione_mask::TImmissione_mask()
|
||||
// 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)
|
||||
{
|
||||
const char tipo = rec.get_char("TIPOMOV");
|
||||
|
@ -2,26 +2,27 @@
|
||||
#define F_DITTA_DESCR 302
|
||||
|
||||
#define F_NUM_REG 303
|
||||
#define F_DATA_DOC 304
|
||||
#define F_NUM_DOC 305
|
||||
#define F_NUM_REG_INS 304
|
||||
#define F_DATA_DOC 305
|
||||
#define F_NUM_DOC 306
|
||||
|
||||
#define F_DATA_REG 306
|
||||
#define F_DATA_INT 307
|
||||
#define F_TIPO_MOV 308
|
||||
#define F_DATA_REG 307
|
||||
#define F_DATA_INT 308
|
||||
#define F_TIPO_MOV 309
|
||||
|
||||
#define F_TIPO_CF 310
|
||||
#define F_CLIFO 311
|
||||
#define F_RAGSOC 312
|
||||
#define F_TIPO_CF 320
|
||||
#define F_CLIFO 321
|
||||
#define F_RAGSOC 322
|
||||
|
||||
#define F_STATO 315
|
||||
#define F_PARTITA_IVA 316
|
||||
#define F_STATO 325
|
||||
#define F_PARTITA_IVA 326
|
||||
|
||||
#define F_TOT_DOC 320
|
||||
#define F_TOT_IMM 321
|
||||
#define F_DIF 322
|
||||
#define F_TOT_DOC 330
|
||||
#define F_TOT_IMM 331
|
||||
#define F_DIF 332
|
||||
|
||||
#define F_VALUTA 330
|
||||
#define F_CAMBIO 331
|
||||
#define F_VALUTA 340
|
||||
#define F_CAMBIO 341
|
||||
|
||||
#define F_RIGHE 350
|
||||
|
||||
|
@ -36,15 +36,37 @@ BEGIN
|
||||
DISPLAY "Numero" NUMREG
|
||||
DISPLAY "Data@10" DATAREG
|
||||
DISPLAY "C/A" TIPOMOV
|
||||
DISPLAY "Totale documento@R" TOTDOC
|
||||
DISPLAY "Totale documento" TOTDOC
|
||||
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||
OUTPUT F_NUM_REG NUMREG
|
||||
OUTPUT F_NUM_REG_INS NUMREG
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "G"
|
||||
KEY 1
|
||||
FIELD NUMREG
|
||||
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
|
||||
BEGIN
|
||||
PROMPT 34 3 "Documento numero "
|
||||
@ -179,7 +201,7 @@ BEGIN
|
||||
FIELD CAMBIO
|
||||
END
|
||||
|
||||
SPREADSHEET F_RIGHE 78 -3
|
||||
SPREADSHEET F_RIGHE -1 -3
|
||||
BEGIN
|
||||
PROMPT 0 10 ""
|
||||
ITEM "Tipo@7"
|
||||
@ -264,7 +286,6 @@ BEGIN
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_NOMENCLATURA CODTAB
|
||||
FIELD NOMENCL
|
||||
VALIDATE FIXLEN_FUNC 8
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP GR_BENI
|
||||
FLAGS "Z"
|
||||
|
@ -161,7 +161,7 @@ protected:
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m);
|
||||
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:
|
||||
};
|
||||
|
||||
@ -183,12 +183,12 @@ bool TRiepiloghi_intra::user_destroy()
|
||||
|
||||
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;
|
||||
|
||||
_msk->autosave(*_rel);
|
||||
TRectype filter(_rel->curr());
|
||||
filter.zero("NUMRIG");
|
||||
filter.zero(RIEPINTRA_NUMRIG);
|
||||
|
||||
TCursor cur(_rel, "", 1, &filter, &filter);
|
||||
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)
|
||||
{
|
||||
check_existent_disk(m);
|
||||
// check_existent_disk(m);
|
||||
m.enable(F_VALUTA);
|
||||
}
|
||||
|
||||
void TRiepiloghi_intra::init_modify_mode(TMask& m)
|
||||
{
|
||||
check_existent_disk(m);
|
||||
// check_existent_disk(m);
|
||||
m.enable(F_VALUTA);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
void TRiepiloghi_intra::init_query_mode(TMask& m)
|
||||
@ -240,6 +240,7 @@ void TRiepiloghi_intra::init_query_mode(TMask& m)
|
||||
m.disable(F_VALUTA);
|
||||
}
|
||||
|
||||
/*
|
||||
void TRiepiloghi_intra::check_existent_disk(const TMask& m)
|
||||
{
|
||||
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);
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
int in0600(int argc, char* argv[])
|
||||
{
|
||||
|
@ -1,17 +1,18 @@
|
||||
#define F_DITTA 301
|
||||
#define F_DITTA_DESCR 302
|
||||
|
||||
#define F_TIPO 303
|
||||
#define F_ANNO 304
|
||||
#define F_PERIODO_M 305
|
||||
#define F_PERIODO_T 306
|
||||
#define F_PERIODO_A 307
|
||||
#define F_STATO 308
|
||||
#define F_TIPO_CF 309
|
||||
#define F_PARTITA_IVA 310
|
||||
#define F_PARTITA_DESC 311
|
||||
#define F_NUM_RIG 312
|
||||
#define F_RIEPILOGHI 313
|
||||
#define F_SEZIONE 303
|
||||
#define F_TIPO 304
|
||||
#define F_ANNO 305
|
||||
#define F_PERIODO_M 306
|
||||
#define F_PERIODO_T 307
|
||||
#define F_PERIODO_A 308
|
||||
#define F_STATO 309
|
||||
#define F_TIPO_CF 310
|
||||
#define F_PARTITA_IVA 311
|
||||
#define F_PARTITA_DESC 312
|
||||
#define F_NUM_RIG 313
|
||||
#define F_RIEPILOGHI 314
|
||||
|
||||
#define F_NATURA_TRANS 321
|
||||
#define F_NATURA_DESCR 322
|
||||
@ -34,6 +35,12 @@
|
||||
#define F_TRASPORTO_DESC 358
|
||||
#define F_PERIODO_H 359
|
||||
#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_ACQUISTI 2
|
||||
#define GR_BENI 3
|
||||
#define GR_SERVIZI 4
|
||||
|
@ -101,32 +101,26 @@ BEGIN
|
||||
WARNING "Anno non valido"
|
||||
END
|
||||
|
||||
LIST F_TIPOINTRA 1 7
|
||||
LIST F_SEZIONE 1 7
|
||||
BEGIN
|
||||
PROMPT 46 3 "Tipo Intra "
|
||||
ITEM "B|Beni" MESSAGE ENABLE,-GR_BENI|DISABLE,GR_SERVIZI
|
||||
ITEM "S|Servizi" MESSAGE DISABLE,-GR_BENI|ENABLE,GR_SERVIZI
|
||||
KEY 1
|
||||
FIELD TIPOINTRA
|
||||
PROMPT 46 3 "Sezione "
|
||||
ITEM "1|Beni" MESSAGE ENABLE,GR_BENI@|DISABLE,GR_SERVIZI@
|
||||
ITEM "3|Servizi" MESSAGE DISABLE,GR_BENI@|ENABLE,GR_SERVIZI@
|
||||
FIELD SEZIONE
|
||||
END
|
||||
|
||||
LIST F_TIPO 1 10
|
||||
BEGIN
|
||||
PROMPT 67 3 "Tipo riepilogo "
|
||||
ITEM "C|Cessioni"
|
||||
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@
|
||||
KEY 1
|
||||
ITEM "C|Cessioni" 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@
|
||||
FIELD TIPO
|
||||
END
|
||||
|
||||
NUBER F_NUM_RIG 7
|
||||
BEGIN
|
||||
PROMPT 1 4 "Riga di riepilogo "
|
||||
USE LF_RIEPRETT
|
||||
INPUT TIPOINTRA F_TIPO SELECT
|
||||
INPUT TIPO F_TIPO SELECT
|
||||
USE LF_RIEPRETT SELECT (SEZIONE=="1")||(SEZIONE=="3")
|
||||
INPUT ANNO F_ANNO SELECT
|
||||
INPUT PERIODO F_PERIODO_H SELECT
|
||||
INPUT NUMRIG F_NUM_RIG
|
||||
@ -192,7 +186,6 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
STRING F_NATURA_TRANS 1
|
||||
BEGIN
|
||||
PROMPT 1 8 "Natura transazione "
|
||||
@ -205,6 +198,7 @@ BEGIN
|
||||
OUTPUT F_NATURA_DESCR S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD NATURA
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
MEMO F_NATURA_DESCR 50 3
|
||||
@ -238,6 +232,7 @@ BEGIN
|
||||
MESSAGE DIRTY,F_NOMENCLATURA3
|
||||
FIELD NOMENCL[1,4]
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA2 2
|
||||
@ -248,6 +243,7 @@ BEGIN
|
||||
VALIDATE REQIF_FUNC 1 F_NOMENCLATURA3
|
||||
MESSAGE DIRTY,F_NOMENCLATURA3
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
NUMBER F_NOMENCLATURA3 2
|
||||
@ -258,6 +254,7 @@ BEGIN
|
||||
CHECKTYPE NORMAL
|
||||
FIELD NOMENCL[7,8]
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
STRING F_NOMENCL_DESC 40
|
||||
@ -279,6 +276,7 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CONSEGNA
|
||||
WARNING "Condizione di consegna assente"
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
STRING F_CONSEGNA_DESC 50
|
||||
@ -299,6 +297,7 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD TRASPORTO
|
||||
WARNING "Modo di trasporto assente"
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
STRING F_TRASPORTO_DESC 50
|
||||
@ -311,13 +310,13 @@ END
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 13 "Paese di destinazione"
|
||||
GROUP GR_CESSIONI
|
||||
GROUP GR_CESSIONI GR_BENI
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 13 "Paese di provenienza"
|
||||
GROUP GR_ACQUISTI
|
||||
GROUP GR_ACQUISTI GR_BENI
|
||||
END
|
||||
|
||||
STRING F_PAESE 2
|
||||
@ -331,6 +330,7 @@ BEGIN
|
||||
OUTPUT F_PAESE CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD PAESE
|
||||
GROUP GR_BENI
|
||||
WARNING "Paese assente"
|
||||
END
|
||||
|
||||
@ -341,19 +341,20 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "U"
|
||||
FIELD PAESEORIG
|
||||
GROUP GR_BENI
|
||||
WARNING "Paese di origine assente"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 46 13 "Provincia d'origine "
|
||||
GROUP GR_CESSIONI
|
||||
GROUP GR_CESSIONI GR_BENI
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 46 13 "Prov. destinazione "
|
||||
GROUP GR_ACQUISTI
|
||||
GROUP GR_ACQUISTI GR_BENI
|
||||
END
|
||||
|
||||
STRING F_PROV 2
|
||||
@ -363,6 +364,7 @@ BEGIN
|
||||
FIELD PROV
|
||||
CHECTYPE REQUIRED
|
||||
WARNING "Provincia assente"
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
CURRENCY F_AMM_LIRE 18
|
||||
@ -384,6 +386,7 @@ BEGIN
|
||||
OUTPUT F_VALUTA CODTAB
|
||||
FIELD CODVAL
|
||||
FLAGS "GUZ"
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
CURRENCY F_AMM_VALUTA 18
|
||||
@ -392,12 +395,14 @@ BEGIN
|
||||
DRIVENBY F_VALUTA
|
||||
FIELD AMMVALUTA
|
||||
WARNING "Inserire l'ammontare in valuta"
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
CURRENCY F_VALORE_STAT 18
|
||||
BEGIN
|
||||
PROMPT 1 16 "Valore statistico "
|
||||
FIELD VALSTAT
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
NUMBER F_MASSA_KG 18 5
|
||||
@ -405,6 +410,7 @@ BEGIN
|
||||
PROMPT 1 17 "Massa netta in Kg "
|
||||
PICTURE ".5"
|
||||
FIELD MASSAKG
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
STRING F_UMS 2
|
||||
@ -419,6 +425,76 @@ BEGIN
|
||||
PICTURE ".5"
|
||||
FIELD MASSAUMS
|
||||
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
|
||||
|
||||
BUTTON F_RIEPILOGHI 20 2
|
||||
|
@ -87,6 +87,7 @@ bool TRettifiche_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
break;
|
||||
default:
|
||||
const int pos = id2pos(dlg);
|
||||
|
||||
if (pos >= 0)
|
||||
set(dlg + F_STATO - O_STATO, fld(pos).get());
|
||||
break;
|
||||
@ -201,8 +202,7 @@ void TRettifiche_intra::init_modify_mode(TMask& m)
|
||||
const char* TRettifiche_intra::get_next_key()
|
||||
{
|
||||
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());
|
||||
TCursor cur(_rel, "", 1, &curr, &curr);
|
||||
const long items = cur.items();
|
||||
@ -213,8 +213,6 @@ const char* TRettifiche_intra::get_next_key()
|
||||
last_row = curr.get_int("NUMRIG");
|
||||
}
|
||||
_str.cut(0);
|
||||
_str.add(F_TIPO);
|
||||
_str.add(curr.get("TIPO"));
|
||||
_str.add(F_ANNO);
|
||||
_str.add(curr.get("ANNO"));
|
||||
_str.add(F_PERIODO_M);
|
||||
|
@ -11,6 +11,7 @@
|
||||
#define O_PARTITA_IVA 110
|
||||
#define O_PARTITA_DESC 111
|
||||
#define O_NUM_RIG 112
|
||||
#define O_SEZIONE 113
|
||||
|
||||
#define O_NATURA_TRANS 121
|
||||
#define O_NOMENCLATURA 122
|
||||
@ -37,3 +38,13 @@
|
||||
#define F_VALUTA 225
|
||||
#define F_VALORE_STAT 226
|
||||
#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
|
||||
|
@ -79,15 +79,24 @@ BEGIN
|
||||
ITEM "01|Annuale"
|
||||
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
|
||||
PROMPT 63 4 "Riga "
|
||||
USE LF_RIEPRETT
|
||||
INPUT TIPO O_TIPO SELECT
|
||||
USE LF_RIEPRETT SELECT (SEZIONE==#OSEZIONE)&&(TIPO==#O_TIPO)
|
||||
INPUT ANNO O_ANNO SELECT
|
||||
INPUT PERIODO O_PERIODO_M
|
||||
INPUT NUMRIG O_NUM_RIG
|
||||
DISPLAY "Tipo" TIPO
|
||||
DISPLAY "Sezione" SEZIONE
|
||||
DISPLAY "Anno" ANNO
|
||||
DISPLAY "Periodo" PERIODO
|
||||
DISPLAY "Numero" NUMRIG
|
||||
@ -102,6 +111,8 @@ BEGIN
|
||||
OUTPUT O_PERIODO_T PERIODO
|
||||
OUTPUT O_NUM_RIG NUMRIG
|
||||
OUTPUT O_STATO STATO
|
||||
// OUTPUT O_TIPO TIPO
|
||||
OUTPUT O_SEZIONE SEZIONE
|
||||
OUTPUT O_PARTITA_IVA PIVA
|
||||
OUTPUT O_NATURA_TRANS NATURA
|
||||
OUTPUT O_NOMENCLATURA NOMENCL
|
||||
@ -199,11 +210,8 @@ END
|
||||
LIST F_TIPO 1 10
|
||||
BEGIN
|
||||
PROMPT 2 12 "Tipo "
|
||||
ITEM "D|Cessioni"
|
||||
MESSAGE "C",F_TIPO_CF|"C",O_TIPO
|
||||
ITEM "B|Acquisti"
|
||||
MESSAGE "F",F_TIPO_CF|"A",O_TIPO
|
||||
KEY 1
|
||||
ITEM "A|Cessioni" MESSAGE "C",F_TIPO_CF|"C",O_TIPO|SHOW,GR_CESSIONI@|HIDE,GR_ACQUISTI@
|
||||
ITEM "C|Acquisti" MESSAGE "F",F_TIPO_CF|"A",O_TIPO|HIDE,GR_CESSIONI@|SHOW,GR_ACQUISTI@
|
||||
FIELD TIPO
|
||||
END
|
||||
|
||||
@ -242,10 +250,19 @@ BEGIN
|
||||
KEY 1
|
||||
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
|
||||
BEGIN
|
||||
PROMPT 63 12 "Riga "
|
||||
USE LF_RIEPRETT
|
||||
USE LF_RIEPRETT (SEZIONE=="2")||(SEZIONE=="4")
|
||||
INPUT TIPO F_TIPO SELECT
|
||||
INPUT ANNO F_ANNO SELECT
|
||||
INPUT PERIODO F_PERIODO_M
|
||||
@ -322,6 +339,7 @@ BEGIN
|
||||
DISPLAY "Descrizione@70" S0
|
||||
OUTPUT F_NATURA_TRANS CODTAB
|
||||
FIELD NATURA
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
NUMBER F_NOMENCLATURA 8
|
||||
@ -334,6 +352,7 @@ BEGIN
|
||||
OUTPUT F_NOMENCLATURA CODTAB
|
||||
FIELD NOMENCL
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
LIST F_SEGNO 1
|
||||
@ -361,6 +380,7 @@ BEGIN
|
||||
OUTPUT F_VALUTA CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
FIELD CODVAL
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
CURRENCY F_AMM_VALUTA 18
|
||||
@ -368,17 +388,88 @@ BEGIN
|
||||
PROMPT 59 16 ""
|
||||
DRIVENBY F_VALUTA
|
||||
FIELD AMMVALUTA
|
||||
GROUP GR_BENI
|
||||
END
|
||||
|
||||
CURRENCY F_VALORE_STAT 18
|
||||
BEGIN
|
||||
PROMPT 2 17 "Valore statistico "
|
||||
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
|
||||
|
||||
NUMBER F_NUMREG 7
|
||||
BEGIN
|
||||
PROMPT 53 17 "Numero movimento "
|
||||
PROMPT 2 22 "Numero movimento "
|
||||
FIELD NUMREG
|
||||
FLAGS "D"
|
||||
END
|
||||
|
@ -18,9 +18,8 @@
|
||||
|
||||
TIntra_context::TIntra_context()
|
||||
{
|
||||
_tipointra = 'B';
|
||||
_tipo = 'C'; _freq = 'T'; _anno = 1999; _periodo = 1;
|
||||
_progr = _righe_riep = _righe_rett = 0L;
|
||||
_progr = 0L;
|
||||
|
||||
// Intra 12/13
|
||||
_tInvioIntra = _Intra12;
|
||||
@ -33,36 +32,25 @@ TIntra_context::TIntra_context()
|
||||
// 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)
|
||||
a = d.year();
|
||||
if (a < d.year())
|
||||
a = today.year();
|
||||
if (a < today.year())
|
||||
{
|
||||
TLocalisamfile riep(LF_RIEPRETT);
|
||||
riep.put("TIPO", t);
|
||||
riep.put("ANNO", a);
|
||||
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 > ' ')
|
||||
return freq;
|
||||
return freq;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (t == 'A') ? _freq_acq : _freq_ces;
|
||||
}
|
||||
|
||||
@ -120,18 +108,12 @@ void TIntra_mask::on_firm_change()
|
||||
_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
|
||||
{
|
||||
if (a <= 0)
|
||||
a = anno();
|
||||
if (t < 'A' || t > 'D')
|
||||
if (t < 'A')
|
||||
t = tipo();
|
||||
return _freq.frequenza(a, t);
|
||||
}
|
||||
@ -188,166 +170,126 @@ TIntra_mask::TIntra_mask(const char* name)
|
||||
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;
|
||||
|
||||
public:
|
||||
void destroy() { _arr.destroy(); _ass.destroy(); }
|
||||
void add(const TRectype& row, const TRectype& head, const TRectype& mov);
|
||||
void destroy() { _ass.destroy(); }
|
||||
void add(const TRectype& row, const TRectype& head, int peri, char freq);
|
||||
|
||||
int items() const { return _arr.items(); }
|
||||
int sort() { _arr.sort(); return items(); }
|
||||
|
||||
const TDati_riepilogo& operator[](int r) const
|
||||
{ return (const TDati_riepilogo&)_arr[r]; }
|
||||
};
|
||||
int items() const { return _ass.items(); }
|
||||
int write(int from = 1);
|
||||
};
|
||||
|
||||
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);
|
||||
const TRectype& clifo = cache().get(LF_CLIFO, cod);
|
||||
TString4 codval = head.get(MOV_CODVAL);
|
||||
const TString4 tipointra = row.get(RINTRA_TIPOINTRA);
|
||||
|
||||
TString4 codval = head.get(INTRA_CODVAL);
|
||||
|
||||
if (::is_euro_value(codval))
|
||||
codval.cut(0);
|
||||
|
||||
|
||||
TRectype rec(LF_RIEPRETT);
|
||||
const TString4 tipointra = row.get(RINTRA_TIPOINTRA);
|
||||
const TString4 tipo = head.get(INTRA_TIPOMOV);
|
||||
TToken_string key;
|
||||
|
||||
key.add(head.get(INTRA_TIPOMOV));
|
||||
key.add(tipointra);
|
||||
key.add(clifo.get(CLI_STATOPAIV));
|
||||
key.add(clifo.get(CLI_PAIV));
|
||||
key.add(codval); // Non e' chiaro se raggruppare per valuta!
|
||||
key.add(row.get(RINTRA_NATURA));
|
||||
key.add(row.get(tipointra == "B" ? RINTRA_NOMENCL : RINTRA_CODSERV));
|
||||
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)
|
||||
if (tipointra == "B")
|
||||
{
|
||||
data = new TDati_riepilogo(key, row, codval);
|
||||
_ass.add(key, data);
|
||||
_arr.add(data);
|
||||
key.add(row.get(RINTRA_NOMENCL));
|
||||
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));
|
||||
}
|
||||
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;
|
||||
TIntra_frequency _freq;
|
||||
@ -360,11 +302,10 @@ public:
|
||||
long nc2ft(long numreg_nc) const;
|
||||
int add(const TRectype& rintra, const TRectype& mov, long nr_fattura);
|
||||
int load_manual_rett(char tipo, int anno, int periodo);
|
||||
int sort();
|
||||
const TRectype& operator[](int r) const { return (const TRectype&)_rett[r]; }
|
||||
int write(int from = 1);
|
||||
};
|
||||
|
||||
long TRettifiche::nc2ft(long numreg_nc) const
|
||||
long TRettifiche_Intra::nc2ft(long numreg_nc) const
|
||||
{
|
||||
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!)
|
||||
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))
|
||||
{
|
||||
const TRiga_partite& partita = p->riga(r);
|
||||
@ -396,7 +333,7 @@ long TRettifiche::nc2ft(long numreg_nc) const
|
||||
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();
|
||||
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();
|
||||
}
|
||||
|
||||
long TRettifiche::rett2riep(const TRectype& rett) const
|
||||
long TRettifiche_Intra::rett2riep(const TRectype& rett) const
|
||||
{
|
||||
TString query, filter;
|
||||
|
||||
@ -429,22 +366,23 @@ long TRettifiche::rett2riep(const TRectype& rett) const
|
||||
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());
|
||||
const TDate datareg = mov.get(MOV_DATAREG);
|
||||
|
||||
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);
|
||||
|
||||
rett.put(RIEPINTRA_TIPOINTRA, tipointra);
|
||||
rett.put(RIEPINTRA_TIPO, tipo);
|
||||
rett.put(RIEPINTRA_ANNO, datareg.year());
|
||||
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);
|
||||
|
||||
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_PIVA, clifo.get(CLI_PAIV));
|
||||
rett.put(RIEPINTRA_NATURA, rintra.get(RINTRA_NATURA));
|
||||
if (tipointra == "B")
|
||||
rett.put(RIEPINTRA_NOMENCL, rintra.get(RINTRA_NOMENCL));
|
||||
else
|
||||
rett.put(RIEPINTRA_CODSERV, rintra.get(RINTRA_CODSERV));
|
||||
rett.put(RIEPINTRA_NOMENCL, rintra.get(RINTRA_NOMENCL));
|
||||
rett.put(RIEPINTRA_CONSEGNA, rintra.get(RINTRA_CONSEGNA));
|
||||
rett.put(RIEPINTRA_TRASPORTO, rintra.get(RINTRA_TRASPORTO));
|
||||
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));
|
||||
}
|
||||
|
||||
real euri = rintra.get_real(RINTRA_AMMLIRE);
|
||||
const real euri = rintra.get_real(RINTRA_AMMLIRE);
|
||||
|
||||
rett.put(RIEPINTRA_SEGNORETT, ((tipointra == "S") || (euri > ZERO)) ? '+' : '-');
|
||||
if (tipointra == "B")
|
||||
euri = abs(euri);
|
||||
rett.put(RIEPINTRA_AMMLIRE, euri);
|
||||
rett.put(RIEPINTRA_SEGNORETT, euri > ZERO ? '+' : '-');
|
||||
rett.put(RIEPINTRA_AMMLIRE, abs(euri));
|
||||
if (codval.full())
|
||||
{
|
||||
rett.put(RIEPINTRA_CODVAL, codval);
|
||||
real impval = rintra.get_real(RINTRA_AMMVALUTA);
|
||||
const real impval = rintra.get_real(RINTRA_AMMVALUTA);
|
||||
|
||||
if (tipointra == "B")
|
||||
impval = abs(impval);
|
||||
rett.put(RIEPINTRA_AMMVALUTA, impval);
|
||||
rett.put(RIEPINTRA_AMMVALUTA, abs(impval));
|
||||
}
|
||||
|
||||
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_NUMREG, mov.get(MOV_NUMREG));
|
||||
|
||||
rett.put(RIEPINTRA_CODSERV, rintra.get(RINTRA_CODSERV));
|
||||
rett.put(RIEPINTRA_MODEROG, rintra.get(RINTRA_MODEROG));
|
||||
rett.put(RIEPINTRA_MODINCPAG, rintra.get(RINTRA_MODINCPAG));
|
||||
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);
|
||||
}
|
||||
|
||||
int TRettifiche::sort()
|
||||
int TRettifiche_Intra::write(int from)
|
||||
{
|
||||
_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);
|
||||
r->put(RIEPINTRA_NUMRIG, i+1);
|
||||
TRectype* rec = (TRectype*) data;
|
||||
|
||||
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
|
||||
{
|
||||
TRiepiloghi _riep;
|
||||
TRettifiche _rett;
|
||||
TRiepiloghi_Intra _riep;
|
||||
TRettifiche_Intra _rett;
|
||||
|
||||
protected:
|
||||
virtual short type_field() const { return R_TIPO; }
|
||||
@ -626,7 +567,7 @@ bool TGenerazione_mask::genera_riepiloghi()
|
||||
if (is_rettifica)
|
||||
_rett.add(row, mov, numreg_ft);
|
||||
else
|
||||
_riep.add(row, head, mov);
|
||||
_riep.add(row, head, peri, freq);
|
||||
rowok = rel.next_match(LF_RINTRA);
|
||||
}
|
||||
}
|
||||
@ -637,64 +578,29 @@ bool TGenerazione_mask::genera_riepiloghi()
|
||||
|
||||
TLocalisamfile riep(LF_RIEPRETT);
|
||||
|
||||
const int riepiloghi = _riep.sort();
|
||||
if (riepiloghi > 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
const int riepiloghi = _riep.items();
|
||||
int last_row = 0;
|
||||
|
||||
// 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;
|
||||
|
||||
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;
|
||||
TISAM_recordset riepset(query);
|
||||
|
||||
for (bool ok = riepset.move_first(); ok; ok = riepset.move_next())
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -9,17 +9,11 @@ typedef enum { _Intra12, _Intra13 } Intratype;
|
||||
|
||||
struct TIntra_context
|
||||
{
|
||||
char _tipointra;
|
||||
char _tipo;
|
||||
long _progr;
|
||||
char _freq;
|
||||
int _anno;
|
||||
int _periodo;
|
||||
long _righe_riep;
|
||||
real _totale_riep;
|
||||
long _righe_rett;
|
||||
real _totale_rett;
|
||||
|
||||
// Intra 12/13
|
||||
Intratype _tInvioIntra;
|
||||
int _nb;
|
||||
@ -55,7 +49,7 @@ protected:
|
||||
virtual int anno() const pure;
|
||||
|
||||
public:
|
||||
char tipo() const;
|
||||
const char tipo() const { return get(type_field())[0]; }
|
||||
int periodo() const;
|
||||
virtual char frequenza(int anno = 0, char tipo = '\0') const;
|
||||
int date2periodo(const TDate& d) const;
|
||||
|
@ -13,11 +13,12 @@ Picture = <ba02>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_01 = "Nomenclatura combinata", "ba3 -0 %noc", ""
|
||||
Item_02 = "Stati CEE", "ba3 -0 %sce", ""
|
||||
Item_03 = "Natura Transazione", "ba3 -0 %int", ""
|
||||
Item_04 = "Condizioni di consegna", "ba3 -0 %icc", ""
|
||||
Item_05 = "Modalita' di trasporto", "ba3 -0 %imt", ""
|
||||
Item_06 = "Classificazione prestazioni dei servizi", "ba3 -0 %cpa", ""
|
||||
Item_02 = "Classificazione prestazioni dei servizi", "ba3 -0 %cpa", ""
|
||||
Item_03 = "Stati CEE", "ba3 -0 %sce", ""
|
||||
Item_04 = "Natura Transazione", "ba3 -0 %int", ""
|
||||
Item_05 = "Condizioni di consegna", "ba3 -0 %icc", ""
|
||||
Item_06 = "Modalita' di trasporto", "ba3 -0 %imt", ""
|
||||
Item_07 = "Classificazione prestazioni dei servizi", "ba3 -0 %cpa", ""
|
||||
|
||||
[INMENU_003]
|
||||
Caption = "Stampa Tabelle"
|
||||
@ -25,11 +26,12 @@ Picture = <ba03>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_01 = "Nomenclatura combinata", "ba3 -1 %noc", ""
|
||||
Item_02 = "Stati CEE", "ba3 -1 %sce", ""
|
||||
Item_03 = "Natura Transazione", "ba3 -1 %int", ""
|
||||
Item_04 = "Condizioni di consegna", "ba3 -1 %icc", ""
|
||||
Item_05 = "Modalita' di trasporto", "ba3 -1 %imt", ""
|
||||
Item_06 = "Classificazione prestazioni dei servizi", "ba3 -1 %cpa", ""
|
||||
Item_02 = "Nomenclatura combinata", "ba3 -1 %noc", ""
|
||||
Item_03 = "Stati CEE", "ba3 -1 %sce", ""
|
||||
Item_04 = "Natura Transazione", "ba3 -1 %int", ""
|
||||
Item_05 = "Condizioni di consegna", "ba3 -1 %icc", ""
|
||||
Item_06 = "Modalita' di trasporto", "ba3 -1 %imt", ""
|
||||
Item_07 = "Classificazione prestazioni dei servizi", "ba3 -1 %cpa", ""
|
||||
|
||||
[INMENU_004]
|
||||
Caption = "Gestione movimenti"
|
||||
|
@ -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">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
</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 1F;2">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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 12F;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 12F;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" />
|
||||
</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="" />
|
||||
@ -58,17 +70,29 @@
|
||||
<source>I2</source>
|
||||
</field>
|
||||
<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 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>
|
||||
</field>
|
||||
<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 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>
|
||||
</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 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="" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user