From 7c33788533710c0ad4c5134ebe72cbc0193c6016 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 11 Jan 2011 18:23:51 +0000 Subject: [PATCH] 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 --- tc/tc1100.cpp | 78 ++++++++++++++++++++----- tc/tc1100a.ini | 153 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 218 insertions(+), 13 deletions(-) diff --git a/tc/tc1100.cpp b/tc/tc1100.cpp index 5f5608ed0..a8cd1e117 100755 --- a/tc/tc1100.cpp +++ b/tc/tc1100.cpp @@ -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(); diff --git a/tc/tc1100a.ini b/tc/tc1100a.ini index 4982471c4..4d6f277ca 100755 --- a/tc/tc1100a.ini +++ b/tc/tc1100a.ini @@ -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]