From c3564c70ed65a5351b0c453543e659d5481f5183 Mon Sep 17 00:00:00 2001 From: guy Date: Mon, 27 Oct 2014 08:28:19 +0000 Subject: [PATCH] Correzioni invio a Proforma git-svn-id: svn://10.65.10.50/branches/R_10_00@23010 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- tc/tc0700.cpp | 94 ++++++++++++++++++------------- tc/tc0700.h | 18 +++--- tc/tc0701.cpp | 69 ++++++++++++----------- tc/tc0701.h | 4 +- tc/tc9100.cpp | 149 +++++++++++++++++++++++++++----------------------- 5 files changed, 184 insertions(+), 150 deletions(-) diff --git a/tc/tc0700.cpp b/tc/tc0700.cpp index 6c756ffff..a6cbbe41c 100755 --- a/tc/tc0700.cpp +++ b/tc/tc0700.cpp @@ -19,7 +19,6 @@ #include #include -#include "../cg/cglib01.h" #include "../cg/cg2103.h" bool TTS_mask::apply_filter(const TRecordset& righe) const @@ -107,30 +106,38 @@ TRecordset & TTS_campo_sender::movrecset() TRecordset & TTS_campo_sender::rmovrecset(const TRecordset & mov) { - TRecordset * rmov = get_recset(LF_RMOV); + TRecordset* rmov = get_recset(LF_RMOV); if (rmov == NULL) rmov = set_recset(LF_RMOV, ::create_recordset("USE RMOV\nFROM NUMREG=#NUMREG\nTO NUMREG=#NUMREG")); - const TVariant & numreg = mov.get(MOV_NUMREG); - + const TVariant& numreg = mov.get(MOV_NUMREG); if (numreg != rmov->get("#NUMREG")) rmov->set_var("#NUMREG", numreg); - return *rmov; + + const int numrig = rmov->items(); + if (numrig > 80) + { + TString msg; + msg.format(FR("Registrazione con %d righe contabili. (Max. 80)"), numrig); + log(2, msg); + } + + return *rmov; } -TRecordset & TTS_campo_sender::rivarecset(const TRecordset & mov) +TRecordset& TTS_campo_sender::rivarecset(const TRecordset & mov) { - TRecordset * rmoviva = get_recset(LF_RMOVIVA); + TRecordset* rmoviva = get_recset(LF_RMOVIVA); if (rmoviva == NULL) rmoviva = set_recset(LF_RMOVIVA, ::create_recordset("USE RMOVIVA\nFROM NUMREG=#NUMREG\nTO NUMREG=#NUMREG")); - const TVariant & numreg = mov.get(MOV_NUMREG); - + const TVariant& numreg = mov.get(MOV_NUMREG); if (numreg != rmoviva->get("#NUMREG")) rmoviva->set_var("#NUMREG", numreg); - return *rmoviva; + + return *rmoviva; } const TRecordset& TTS_campo_sender::clirecset(const char tipocf, const long codcf) @@ -185,8 +192,7 @@ bool TTS_campo_sender::swap_ritsoc(const TRecordset& mov) bool TTS_campo_sender::mov_regolarizzazione(const TRecordset& mov) { const TString& codcaus = mov.get(MOV_CODCAUS).as_string(); - - return _caus_regolarizzazione.objptr(codcaus) != NULL; + return _caus_regolarizzazione.is_key(codcaus); } bool TTS_campo_sender::mov_intra(const TRecordset& mov) @@ -243,59 +249,71 @@ TMask & TTS_campo_sender::get_mask() return * _mask; } -bool TTS_campo_sender::find_regolarizzazione(TRecordset& mov) +bool TTS_campo_sender::find_regolarizzazione(TRecordset& movset) { bool found = false; - const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string()); - const TString4 causreg = caus.get(CAU_CODCAUREG); - real totdoc = mov.get(MOV_TOTDOC).as_real(); - const real ritfis = mov.get(MOV_RITFIS).as_real(); - const real ritsoc = mov.get(MOV_RITSOC).as_real(); + const TRecnotype pos = movset.current_row(); // Salva la posizione - if (ritfis != ZERO) + const TRectype& mov = ((TISAM_recordset&)movset).cursor()->curr(); + + const TString4 causreg = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS), CAU_CODCAUREG); + real totdoc = mov.get_real(MOV_TOTDOC); + const real ritfis = mov.get_real(MOV_RITFIS); + const real ritsoc = mov.get_real(MOV_RITSOC); + + if (!ritfis.is_zero()) totdoc += ritfis; - if (ritsoc != ZERO) + if (!ritsoc.is_zero()) { - if (swap_ritsoc(mov)) // Somma ritenute sociali con segno + if (swap_ritsoc(movset)) // Somma ritenute sociali con segno totdoc -= ritsoc; else totdoc += ritsoc; } - if (test_swap(mov)) + if (test_swap(movset)) totdoc = -totdoc; - TToken_string key(mov.get(MOV_TIPO).as_string()); - key.add(mov.get(MOV_CODCF).as_int()); + TToken_string key(mov.get(MOV_TIPO)); + key.add(mov.get(MOV_CODCF)); const TRectype & cli = cache().get(LF_CLIFO, key); const TString16 paiv = cli.get(CLI_PAIV); const TString16 cf = cli.get(CLI_COFI); TEsercizi_contabili esc; - const TEsercizio & e = esc.esercizio(esc.date2esc(mov.get(MOV_DATAREG).as_date())); - const TDate to(e.fine()); + const TEsercizio& e = esc.esercizio(esc.date2esc(mov.get_date(MOV_DATAREG))); + const TDate dfin = e.fine(); - for (bool ok = mov.move_next(); ok && ! found; ok = mov.move_next()) + for (bool ok = movset.move_next(); ok && !found; ok = movset.move_next()) { - const TDate dreg = mov.get(MOV_DATAREG).as_date(); - if (dreg >to) + const TDate dreg = mov.get(MOV_DATAREG); + if (dreg > dfin) break; - const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string()); - const TString4 cod = caus.get(CAU_CODCAUS); - found = (causreg.full() && cod == causreg) || (causreg.blank() && (_caus_regolarizzazione.objptr(cod) || caus.get_bool(CAU_SOLOIVA))); - found &= (totdoc == mov.get(MOV_TOTDOC).as_real()); + const TString4 cod = mov.get(MOV_CODCAUS); + const TRectype& caus = cache().get(LF_CAUSALI, cod); + found = (causreg.full() && cod == causreg) || + (causreg.blank() && (_caus_regolarizzazione.objptr(cod) || caus.get_bool(CAU_SOLOIVA))); + if (!found) + continue; // causale incoerente - key = mov.get(MOV_TIPO).as_string(); - key.add(mov.get(MOV_CODCF).as_int()); + const real td = mov.get_real(MOV_TOTDOC); + found = abs(totdoc - td) < 0.01; + if (!found) + continue; // Importo incoerente + + key = mov.get(MOV_TIPO); + key.add(mov.get(MOV_CODCF)); const TRectype & clireg = cache().get(LF_CLIFO, key); const TString16 paivreg = clireg.get(CLI_PAIV); const TString16 cfreg = clireg.get(CLI_COFI); - found &= ((paiv.full() && paiv == paivreg) || (paiv.blank() && cf == cfreg)); - if (found) - break; + found = paiv.full() ? paiv == paivreg : cf == cfreg; + if (found) // partita IVA coerente + break; } + movset.move_to(pos); + return found; } diff --git a/tc/tc0700.h b/tc/tc0700.h index ca08edf45..47b9fb5ee 100755 --- a/tc/tc0700.h +++ b/tc/tc0700.h @@ -28,16 +28,16 @@ public: class TTS_campo_sender : public TTS_sender { - TTS_mask * _mask; + TTS_mask* _mask; TAssoc_array _caus_regolarizzazione; protected: - virtual TRecordset & movrecset(); - virtual TRecordset & rmovrecset(const TRecordset & mov); - virtual TRecordset & rivarecset(const TRecordset & mov); - virtual const TRecordset & clirecset(const char tipocf, const long codcf); - virtual TMask & get_mask(); - virtual const char * mask_name() const {return "tc0700a"; } + virtual TRecordset& movrecset(); + virtual TRecordset& rmovrecset(const TRecordset& mov); + virtual TRecordset& rivarecset(const TRecordset& mov); + virtual const TRecordset& clirecset(const char tipocf, const long codcf); + virtual TMask& get_mask(); + virtual const char* mask_name() const { return "tc0700a"; } protected: virtual bool find_regolarizzazione(TRecordset& mov); @@ -50,14 +50,12 @@ protected: virtual long iva11_reverse(const TRecordset & mov); virtual bool regime_agricolo(const TRecordset& mov) const; - public: virtual void postprocess_movs(TRecordset & mov); virtual bool create(); virtual bool destroy(); - TTS_campo_sender() : TTS_sender(), _mask(NULL) {} - ~TTS_campo_sender() {} + TTS_campo_sender() : _mask(NULL) {} }; diff --git a/tc/tc0701.cpp b/tc/tc0701.cpp index 1b90a1ae2..394dd28b3 100755 --- a/tc/tc0701.cpp +++ b/tc/tc0701.cpp @@ -563,7 +563,10 @@ void TTS_sender::log(int sev, const char* msg) if (sev > 0 && _tsfile != NULL) { TString m; - m << TR("Record") << ' ' << _tsfile->rec_type() << ": " << msg; + if (_numreg > 0) + m.format("Movimento %6ld ", _numreg); + m << TR("Tipo record ") << _tsfile->rec_type(); + m << " : " << msg; _log->log(sev, m); _errors_logged = true; } @@ -603,7 +606,7 @@ bool TTS_sender::add_regol(TRecordset& mov, bool rec_to_add) { rec_to_add = add_optional_rec(mov, rec_to_add); - TString16 codval = mov.get(MOV_CODVALI).as_string(); + TString4 codval = mov.get(MOV_CODVALI).as_string(); real corrvaluta = mov.get(MOV_CORRVALUTA).as_real(); if (codval.blank()) @@ -621,26 +624,24 @@ bool TTS_sender::add_regol(TRecordset& mov, bool rec_to_add) set("TRF-TOTVAL", corrvaluta); } - const TRecnotype pos = mov.current_row(); // Salva la posizione - if (find_regolarizzazione(mov)) { set("TRF-NUM-AUTOFATT", mov.get(MOV_PROTIVA).as_int()); - const TString16 codice = scod2ricl("TSREG", mov.get(MOV_REG)); + const TString& codice = scod2ricl("TSREG", mov.get(MOV_REG)); const long codreg = atol(codice.mid(1)); set("TRF-SERIE-AUTOFATT", codreg); } else { + TString msg; if (is_intra) - log(2, TR("Manca la regolarizzazione del movimento intra")); + msg << TR("Manca la regolarizzazione del movimento intra"); else - log(2, TR("Manca la regolarizzazione del movimento reverse charge")); + msg << TR("Manca la regolarizzazione del movimento reverse charge"); + log(2, msg); } - mov.move_to(pos); // Ripristina posizione - return rec_to_add; } @@ -754,13 +755,13 @@ void TTS_sender::add_diversi(const TRecordset& mov, const bool moviva) { const real importo = rmov.get(RMV_IMPORTO).as_real(); const char sez = rmov.get(RMV_SEZIONE).as_string()[0]; - TImporto i(sez, importo); + TImporto imp(sez, importo); - i.normalize(seznor); + imp.normalize(seznor); field.format("TRF-CONTORIC_%d", k); set(field, contoricl); field.format("TRF-IMP-RIC_%d", k); - set(field, i.valore()); + set(field, imp.valore()); k++; } else @@ -776,8 +777,8 @@ void TTS_sender::add_diversi(const TRecordset& mov, const bool moviva) switch (tiporiga) { case 'T': - first_cli = false; - contoclifor = contoricl; + first_cli = false; + contoclifor = contoricl; case 'I': case 'D': case 'N': @@ -1032,12 +1033,16 @@ void TTS_sender::add_datiiva(const TRecordset& mov) item->imposta() += imposta; } + + const int numrig = _iva.items(); + if (numrig > 8) + { + TString msg; + msg.format(FR("Registrazione con %d righe IVA (Max.8)"), numrig); + log(2, msg); + } + TString80 field; - - if (_iva.items() > 8) - log(2, TR("Registrazione con piu di 8 righe IVA")); - - FOR_EACH_ASSOC_OBJECT(_iva, o, k, it) { TIVA_item & item = (TIVA_item &) *it; @@ -1259,8 +1264,7 @@ void TTS_sender::add_clifor(char tipocf, long codcf) void TTS_sender::add_mov(TRecordset& mov) { - TString msg; msg << TR("Registrazione n.") << ' ' << mov.get(MOV_NUMREG); - log(0, msg); + set_log_numreg(mov.get(MOV_NUMREG).as_int()); if (new_rec("0")) { char tipocf = mov.get(MOV_TIPO).as_string()[0]; @@ -1481,36 +1485,37 @@ bool TTS_sender::destroy() void TTS_sender::main_loop() { - TMask & m = get_mask(); + TMask& m = get_mask(); while (m.run() != K_QUIT) { - const char* const title = TR("Invio a TeamSystem"); _tsfile = new TTS_textset; - _log = new TLog_report(title); + _log = new TLog_report(title()); _errors_logged = false; TRecordset & mov = movrecset(); - TProgind pi(mov.items(), TR("Scansione movimenti"), true, true); + TProgress_monitor pi(mov.items(), TR("Scansione movimenti prima nota")); for (bool ok = mov.move_first(); ok; ok = mov.move_next()) { - if (!pi.addstatus(1)) - break; if (!mov_regolarizzazione(mov)) add_mov(mov); + if (!pi.addstatus(1)) + break; } + set_log_numreg(0); + TReport_book book; book.add(*_log); -#ifdef DBG - TAS400_report rep(*_tsfile); - book.add(rep); -#endif +//#ifdef DBG +// TAS400_report rep(*_tsfile); +// book.add(rep); +//#endif book.preview(); bool save = true; if (_errors_logged) { - save = yesno_box(TR("Sono stati riscontrati uno o piu' errori:\n" + save = noyes_box(TR("Sono stati riscontrati uno o più errori:\n" "Si desidera salvare il file ugualmente?")); } if (save) diff --git a/tc/tc0701.h b/tc/tc0701.h index 2dd54ca7d..ca924c501 100755 --- a/tc/tc0701.h +++ b/tc/tc0701.h @@ -35,6 +35,7 @@ class TTS_sender : public TSkeleton_application TAssoc_array _riclassifica; TTS_textset* _tsfile; TLog_report* _log; + long _numreg; bool _errors_logged; TString8 _dittamulti; TAssoc_array _dittemulti; @@ -91,7 +92,7 @@ protected: bool add_iva_to_mov(const TRecordset& mov) { return mov_intra(mov) || mov_reverse_charge(mov);} protected: - virtual bool find_regolarizzazione(TRecordset& mov) {return false;} + virtual bool find_regolarizzazione(TRecordset& mov) { return false; } virtual TRecordset & movrecset() pure; virtual TRecordset & rmovrecset(const TRecordset & mov) pure; virtual TRecordset & rivarecset(const TRecordset & mov) pure; @@ -100,6 +101,7 @@ protected: virtual TMask & get_mask() pure ; public: + void set_log_numreg(long n) { _numreg = n; } void log(int sev, const char* msg); virtual bool multi_activity() const { return true; } virtual const TString & dittamulti(const TRecordset& mov) const ; diff --git a/tc/tc9100.cpp b/tc/tc9100.cpp index 80f912e7e..ec324f718 100755 --- a/tc/tc9100.cpp +++ b/tc/tc9100.cpp @@ -1,29 +1,21 @@ #include -#include #include #include -#include #include #include "tc9.h" #include "tc9100a.h" -#include -#include - #include "../cg/cg2101.h" #include "../cg/cg2103.h" #include "../cg/cgsaldac.h" +#include #include "../ca/calib01.h" -#include "../ca/movana.h" #include "../ca/rmovana.h" + #include "../ve/velib.h" -#include -#include - - class TInvioP_file: public TFile_text { protected: @@ -34,9 +26,8 @@ public: }; TInvioP_file::TInvioP_file(const TString& file_name) - : TFile_text(file_name, "tc9100a.ini") -{ -} + : TFile_text(file_name, "tc9100a.ini") +{} ////////////////////////////////////////////////////// // MASCHERA @@ -560,20 +551,30 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe) const TString& zio = conti_importi.conto(k); stringa_grcosot(recrighe, zio); - const TString tipocf = pn.curr().get(MOV_TIPO); - recrighe.add(tipocf, 6); //tipocf + char tipocf = pn.curr().get_char(MOV_TIPO); + long codcf = pn.curr().get_long(MOV_CODCF); + + if (tipocf < 'C') // Nei pagamenti la prima nota non scrive TIPO e CODCF in testata, per cui... + { + workstring = recrighe.get(3); + workstring << '|' << recrighe.get(4); + tipocf = cache().get(LF_PCON, workstring, PCN_TMCF)[0]; + if (tipocf >= 'C') + codcf = atol(recrighe.get(5)); + } //procedura per stringare il codice clifo - if (tipocf > ' ') + if (tipocf >= 'C' && codcf > 0L) { - const long codcf = pn.curr().get_long(MOV_CODCF); - TString cf; - cf.format("%ld", codcf); - recrighe.add(cf, 7); //codcf + workstring.cut(0) << tipocf; + recrighe.add(workstring, 6); // tipocf + workstring.format("%ld", codcf); + recrighe.add(workstring, 7); // codcf } else { - recrighe.add("", 7); //codcf + recrighe.add(EMPTY_STRING, 6); // tipocf + recrighe.add(EMPTY_STRING, 7); // codcf } recrighe.add(pn.curr().get(RMV_DESCR), 8); //descrizione @@ -915,18 +916,12 @@ bool TInvioP::cerca_conto(const TBill& bill, const TAssoc_array& assoc, const ch int TInvioP::cerca_costo(const TBill& bill) const { - if (cerca_conto(bill, _costi, 'C')) - return 1; - else - return 0; + return cerca_conto(bill, _costi, 'C') ? 1 : 0; } int TInvioP::cerca_pagamento(const TBill& bill) const { - if (cerca_conto(bill, _pagamenti, 'P')) - return 2; - else - return 0; + return cerca_conto(bill, _pagamenti, 'P') ? 2 : 0; } bool TInvioP::cerca_fiscali(const TBill& bill) const @@ -978,10 +973,21 @@ void TInvioP::calcola_imposte(const real& importo, const real& imposta, if (rec.get_int("I0") > 0) perc = rec.get_real("R0"); } - //valori delle varie ive - iva_ind = imposta * perc / CENTO; - iva_ind.round(2); - iva_det = imposta - iva_ind; + if (perc > ZERO) // C'è indetraibilità? + { + //valori delle varie ive + if (perc < CENTO) + { + iva_ind = imposta * perc / CENTO; + iva_ind.round(2); + iva_det = imposta - iva_ind; + } + else + { + iva_ind = imposta; + iva_det = ZERO; + } + } } } @@ -1026,9 +1032,9 @@ bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec { const TRectype& mov = pn.curr(); TCausale caus(mov.get(MOV_CODCAUS)); - const bool swapt = test_swap(caus, false); // Totale invertito ? - const bool swaps = test_swap(caus, true); // Ritenute sociali invertite ? - if (swapt ^ swaps) // Somma ritenute sociali con segno + const bool swapt = test_swap(caus, false); // Totale invertito ? + const bool swaps = test_swap(caus, true); // Ritenute sociali invertite ? + if (swapt ^ swaps) // Somma ritenute sociali con segno totpagato -= ritsoc; else totpagato += ritsoc; @@ -1051,7 +1057,7 @@ bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec //calcola i valori dell'iva detraibile e delle ive indetraibili in diverse percentuali calcola_imposte(importo, iva, codind, iva_det, iva_ind); //se esiste un'iva indetraibile.. - if (iva_ind != ZERO) + if (!iva_ind.is_zero()) { iva_indetraibile += iva_ind; imponibile += iva_ind; @@ -1223,13 +1229,13 @@ bool TInvioP::i_proforma_pagamenti() lettura_conti(_costi, 'C'); lettura_conti(_pagamenti, 'P'); - TProgind pi(cur_items, "Trasferimento pagamenti...", true, true); + TProgress_monitor pi(cur_items, TR("Trasferimento pagamenti...")); cur.freeze(); TRectype& cur_rec = cur.curr(); for (cur = 0; cur.pos() < cur_items; ++(cur)) { - if (!pi.addstatus(1)) + if (!pi.set_status(cur.pos())) break; //pagamenti saldacontati! vedi l'else per quelli non saldacontati @@ -1239,11 +1245,16 @@ bool TInvioP::i_proforma_pagamenti() //attraverso le partite,noto il MOV_NUMREG,riesce a collegarsi al pagamento in LF_PAGSCA TRelation relpart(LF_PARTITE); TRectype da(LF_PARTITE); - da.put(PART_NREG, cur_rec.get(MOV_NUMREG)); + const long numreg = cur_rec.get_long(MOV_NUMREG); + da.put(PART_NREG, numreg); +#ifdef DBG + if (numreg == 91653) + int cazzone = 1; +#endif TCursor curpart(&relpart, "", 2, &da, &da); - const long curpart_items = curpart.items(); + const TRecnotype curpart_items = curpart.items(); //se trova la partita relativa al numreg... - if (curpart_items != 0) + if (curpart_items > 0) { curpart.freeze(); TRectype& curpart_rec = curpart.curr(); @@ -1262,12 +1273,12 @@ bool TInvioP::i_proforma_pagamenti() TString80 filtro; filtro.format("NRIGP == %d", nrigapart); TCursor curpag(&relpag, filtro, 1, &da, &da); - const long curpag_items = curpag.items(); + const TRecnotype curpag_items = curpag.items(); real iva_indet = ZERO; //valore dell'eventuale iva indetraibile //se trova i pagamenti,che sono alla fin fine cio' che cerca... - if (curpag_items != 0) + if (curpag_items > 0) { TAssoc_array pagame; pagame.destroy(); @@ -1307,6 +1318,10 @@ bool TInvioP::i_proforma_pagamenti() _nregpag = cur_rec.get_long(MOV_NUMREG); //registrazione del movimento di pagamento //deve cercare la prima registrazione da cui deriva il pagamento.. const long nregfatt = fattura.get_long(PART_NREG); +#ifdef DBG + if (nregfatt == 91296) + int cazzone = 1; +#endif _nregcosto = calcola_fattura_originale(nregfatt); _importo = pi->_somma; //acconto/saldo in modo standard @@ -1452,7 +1467,7 @@ bool TInvioP::i_proforma_pagamenti() if (items > 0) { if (items > 1) - error_box(TR("Esiste piu' di un movimento analitico collegato al movimento contabile %ld"),numregcg); + error_box(FR("Esiste più d'un movimento analitico collegato al movimento contabile %ld"), numregcg); movana.move_last(); //si posiziona sul record corretto @@ -1513,21 +1528,20 @@ bool TInvioP::i_proforma_clifor(char tipocf) { TInvioP_file* trasfile = NULL; - TString progind_string = "Trasferimento "; + TString progind_string = TR("Trasferimento "); if (tipocf == 'C') { trasfile = apri_file("clienti"); - progind_string << "clienti"; + progind_string << TR("clienti"); } else { trasfile = apri_file("fornit"); - progind_string << "fornitori"; + progind_string << TR("fornitori"); } - TString80 filtro = ""; - filtro.format("TIPOCF == \"%c\"", tipocf); + TString16 filtro; filtro.format("TIPOCF==\"%c\"", tipocf); TRelation rel(LF_CLIFO); rel.add(LF_COMUNI, "STATO==STATOCF|COM==COMCF", 1); TCursor cur(&rel, filtro); @@ -1535,21 +1549,20 @@ bool TInvioP::i_proforma_clifor(char tipocf) if (cur_items != 0) { - progind_string << "..."; - TProgind pi(cur_items, progind_string, true, true); - cur.freeze(); TRectype& cur_rec = cur.curr(); - for (cur = 0; cur.pos() < cur_items; ++(cur)) - { - pi.addstatus(1); - if (pi.iscancelled()) - break; + progind_string << "..."; + TProgress_monitor pi(cur_items, progind_string); + for (cur = 0; cur.pos() < cur_items; ++cur) + { TRecord_text rec; rec.set_type("C"); trasfile->autoload(rec, cur); trasfile->write(rec); + + if (!pi.add_status()) + break; } } chiudi_file(trasfile); @@ -1573,6 +1586,12 @@ void TInvioP::invio_proforma() bool TInvioP::create() { + //il programma si puo' usare SOLO se in contabilita' analitica si usa il piano dei conti contabile + TConfig& cfg = ca_config(); + const bool use_pdcc = cfg.get_bool("UsePdcc"); + if (!use_pdcc) + return error_box(TR("Il programma funziona SOLO se in contabilità analitica si usa il piano dei conti contabile")); + _msk = new TInvioP_mask(); _configfile = new TConfig("tc9100a.ini"); return TSkeleton_application::create(); @@ -1582,22 +1601,14 @@ bool TInvioP::destroy() { if (_configfile != NULL) delete _configfile; - delete _msk; + if (_msk != NULL) + delete _msk; return TSkeleton_application::destroy(); } void TInvioP::main_loop() { - //il programma si puo' usare SOLO se in contabilita' analitica si usa il piano dei conti contabile - TConfig& cfg = ca_config(); - const bool use_pdcc = cfg.get_bool("UsePdcc"); - if (!use_pdcc) - { - error_box(TR("Programma funzionante SOLO se in contabilita' analitica si usa il piano dei conti contabile")); - return; - } - TFilename configname = "tc9100conf.ini"; //file configurazione della maschera configname.custom_path(); TConfig configfile(configname); @@ -1619,7 +1630,7 @@ void TInvioP::main_loop() int tc9100(int argc, char **argv) { TInvioP a; - a.run(argc, argv, "Invio dati contabilità a Proforma"); + a.run(argc, argv, TR("Invio dati contabilità a Proforma")); return 0; }