Patch level : 10.0 882

Files correlati     :  tc1.exe
Ricompilazione Demo : [ ]
Commento            :

Aggiunto l'invio dei corrispettivi normali al trasferimento zucchetti


git-svn-id: svn://10.65.10.50/branches/R_10_00@21420 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2011-01-11 18:23:51 +00:00
parent f8346a8e7e
commit 7c33788533
2 changed files with 218 additions and 13 deletions

View File

@ -120,7 +120,7 @@ class TInvio : public TSkeleton_application
TLog_report * _log;
TRiclassifica_cache * _tabelle;
TRecord_cache* _conti;
long _nrecords, _nrecsfattvend, _nrecsfattacqu, _nrecsmocontab;
long _nrecords, _nrecscorr, _nrecsfattvend, _nrecsfattacqu, _nrecsmocontab;
int _nfiles;
long _nrecsdettaglio;
TString16 _descrdettaglio;
@ -432,6 +432,13 @@ void TInvio_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
const char tipodoc = str[0];
valore = (tipodoc == 'F') ? "1" : "2";
}
else if (code == "_TIPOCORR")
{
valore = str;
if (valore != "SC" && valore != "RF")
valore = "CN";
}
else if (code == "_DIVERSI")
{
valore = (app().finemov() ? "X" : " ");
@ -502,6 +509,20 @@ void TInvio_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
}
}
else if (code.starts_with("_TCONTO"))
{
const TRectype & mov = cur.curr(LF_MOV);
TToken_string key(mov.get(MOV_NUMREG));
key.add(1);
const TRectype & rmov = cache().get(LF_RMOV,key);
const char t = rmov.get_char(RMV_TIPOC);
const int gr = rmov.get_int(RMV_GRUPPO);
const int co = rmov.get_int(RMV_CONTO);
const long so = rmov.get_long(RMV_SOTTOCONTO);
valore = bill2ricl(t, gr, co, so, false);
}
else if (code == "_CFPI")
{
const TRectype & rmov = cur.curr(LF_RMOV);
@ -605,6 +626,12 @@ void TInvio::i_zucchetti_testa()
_nrecords += _nrecsfattvend+2;
_nfiles++;
}
_nrecscorr = i_zucchetti_moviva('C', FALSE);
if (_nrecscorr > 0)
{
_nrecords += _nrecscorr+2;
_nfiles++;
}
_nrecsfattacqu = i_zucchetti_moviva('A', FALSE);
if (_nrecsfattacqu > 0)
{
@ -768,10 +795,15 @@ long TInvio::i_zucchetti_moviva(const char acqven, const bool invio)
rel.add(LF_RMOVIVA, "NUMREG==NUMREG", 1);
rel.add("REG", "CODTAB[1,4]==ANNOIVA|CODTAB[5,7]==REG", 1);
TString filtro = "(23->PROTIVA != \"\")&&";
if (acqven == 'V')
const bool vend = acqven == 'V';
const bool corrisp = acqven == 'C';
if (vend)
filtro << "(REG->I0 == 1)";
else
filtro << "(REG->I0 == 2)";
if (corrisp)
filtro << "(REG->I0 == 1)&&(REG->B0 != \"\")";
else
filtro << "(REG->I0 == 2)";
TCursor cur(&rel, "", 2, &da, &a);
cur.setfilter(filtro, true);
const long cur_items = cur.items();
@ -780,21 +812,32 @@ long TInvio::i_zucchetti_moviva(const char acqven, const bool invio)
{
TProgind pi(cur_items, rel.file().description(), true, true);
if (invio)
i_zucchetti_testa_dettaglio(acqven == 'V' ? "FATTVEND" : "FATTACQU", acqven == 'V' ? _nrecsfattvend : _nrecsfattacqu);
{
if (vend)
i_zucchetti_testa_dettaglio("FATTVEND", _nrecsfattvend);
else
if (corrisp)
i_zucchetti_testa_dettaglio("CORRNORM", _nrecscorr);
else
i_zucchetti_testa_dettaglio("FATTACQU", _nrecsfattacqu);
}
cur.freeze();
TRectype& cur_rec = cur.curr();
for (cur = 0; cur.pos() < cur_items; ++(cur))
{
if (!pi.addstatus(1))
break;
if (invio)
if (!corrisp)
{
TRecord_text rec;
rec.set_type("30");
_trasfile->autoload(rec, cur);
_trasfile->write(rec);
}
totrec++;
if (invio)
{
TRecord_text rec;
rec.set_type("30");
_trasfile->autoload(rec, cur);
_trasfile->write(rec);
}
totrec++;
}
const long numreg = cur.curr().get_long(MOV_NUMREG);
bool continua = TRUE;
while (continua)
@ -806,7 +849,7 @@ long TInvio::i_zucchetti_moviva(const char acqven, const bool invio)
{
TRectype& cur_rec_righe = cur.curr(LF_RMOVIVA);
TRecord_text recrighe;
recrighe.set_type("31");
recrighe.set_type(corrisp ? "40" : "31");
cur.save_status();
_totale = !(cur.next_match(LF_RMOVIVA, "NUMREG"));
cur.restore_status();
@ -819,7 +862,15 @@ long TInvio::i_zucchetti_moviva(const char acqven, const bool invio)
}
}
if (invio)
i_zucchetti_coda_dettaglio(acqven == 'V' ? "FATTVEND" : "FATTACQU", acqven == 'V' ? _nrecsfattvend : _nrecsfattacqu);
{
if (vend)
i_zucchetti_coda_dettaglio("FATTVEND", _nrecsfattvend);
else
if (corrisp)
i_zucchetti_coda_dettaglio("CORRNORM", _nrecscorr);
else
i_zucchetti_coda_dettaglio("FATTACQU", _nrecsfattacqu);
}
}
return totrec;
}
@ -890,6 +941,7 @@ void TInvio::invio_zucchetti()
if (_msk->get_bool(F_MOVIVA))
{
i_zucchetti_moviva('V');
i_zucchetti_moviva('C');
i_zucchetti_moviva('A');
}
i_zucchetti_coda();

View File

@ -718,6 +718,159 @@ TYPE(16) = STRINGA
POSITION(16) = 72
LENGTH(16) = 128
//righe corrispettivi normali,corrispettivi ventilati
[RECORD 40]
NAME(1) = TIPO DETTAGLIO RIGHE MOVIVA (RIGHE FATTURA)
TYPE(1) = STRINGA
POSITION(1) = 0
LENGTH(1) = 3
MESSAGE(1)=_FISSO,!D40
NAME(2) = ATTIVITA IVA
TYPE(2) = NUMERO
POSITION(2) = 3
LENGTH(2) = 2
MESSAGE(2) = _ATTIVITA
NAME(3) = ANNO REGISTRAZIONE
TYPE(3) = NUMERO
POSITION(3) = 5
LENGTH(3) = 4
MESSAGE(3) = _ANNO
FIELD(3) = 23->DATAREG
NAME(4) = MESE REGISTRAZIONE
TYPE(4) = NUMERO
POSITION(4) = 9
LENGTH(4) = 2
MESSAGE(4) = _MESE
FIELD(4) = 23->DATAREG
NAME(5) = ANNO COMPETENZA
TYPE(5) = NUMERO
POSITION(5) = 11
LENGTH(5) = 4
MESSAGE(5) = _ANNO
FIELD(5) = 23->DATACOMP
NAME(6) = MESE COMPETENZA
TYPE(6) = NUMERO
POSITION(6) = 15
LENGTH(6) = 2
MESSAGE(6) = _MESE
FIELD(6) = 23->DATACOMP
NAME(7) = SEZIONE
TYPE(7) = NUMERO
POSITION(7) = 17
LENGTH(7) = 2
MESSAGE(7) = _ATTIVITA
NAME(8) = TIPO CORRISPETTIVO
TYPE(8) = STRINGA
POSITION(8) = 19
LENGTH(8) = 1
FIELD(8) = 23->TIPODOC
MESSAGE(8) = _TIPOCORR
NAME(9) = DATA REGISTRAZIONE
TYPE(9) = DATA
POSITION(9) = 21
LENGTH(9) = 8
FIELD(9) = 23->DATAREG
NAME(10) = CODICE IVA
TYPE(10) = STRINGA
POSITION(10) = 29
LENGTH(10) = 2
FIELD(10)= 25->CODIVA
MESSAGE(10) = _IVA
FILLER(10) = '0'
NAME(11) = IMPORTO IMPONIBILE EURO
TYPE(11) = IMPORTO
POSITION(11) = 31
LENGTH(11) = 11
FIELD(11)= 25->IMPONIBILE
MESSAGE(11) = _IMPORTO
NAME(12) = SEGNO IMPONIBILE
TYPE(12) = STRINGA
POSITION(12) = 42
LENGTH(12) = 1
MESSAGE(12) = _SEGNO,25,IMPONIBILE
NAME(13) = NUMERO DOCUMENTI DAL
TYPE(13) = NUMERO
POSITION(13) = 43
LENGTH(13) = 6
NAME(14) = NUMERO DOCUMENTI DAL
TYPE(14) = NUMERO
POSITION(14) = 49
LENGTH(14) = 6
NAME(15) = CODICE NORMA
TYPE(15) = STRINGA
POSITION(15) = 55
LENGTH(15) = 2
FIELD(15) = 25->CODIVA
MESSAGE(15)= _NORMA
FILLER(15) = '0'
NAME(16) = CENTRO DI COSTO
TYPE(16) = STRINGA
POSITION(8) = 57
LENGTH(8) = 4
NAME(17) = CONTROPARTITA
TYPE(17) = NUMERO
POSITION(17) = 61
LENGTH(17) = 6
MESSAGE(17)= _CONTO,25,TIPOC
NAME(18) = CENTRO DI COSTO
TYPE(18) = STRINGA
POSITION(18) = 67
LENGTH(18) = 4
NAME(19) = CASSA
TYPE(19) = NUMERO
POSITION(19) = 71
LENGTH(19) = 6
MESSAGE(19)= _TCONTO,25,TIPOC
NAME(20) = CODICE CEE
TYPE(20) = STRINGA
POSITION(20) = 77
LENGTH(20) = 2
NAME(21) = CORRISP A CALENDARIO
TYPE(21) = STRINGA
POSITION(21) = 79
LENGTH(21) = 1
NAME(22) = CODICE CLIFO
TYPE(22) = STRINGA
POSITION(22) = 80
LENGTH(22) = 6
NAME(23) = TIPO CODIFICA
TYPE(23) = STRINGA
POSITION(23) = 86
LENGTH(23) = 1
NAME(24) = CODICE CODIFICA
TYPE(24) = STRINGA
POSITION(24) = 87
LENGTH(24) = 16
NAME(16) = FILLER
TYPE(16) = STRINGA
POSITION(16) = 103
LENGTH(16) = 97
//movimento contabile di prima nota
[RECORD 50]