diff --git a/build/f90.vcxproj b/build/f90.vcxproj index 490436374..c1a2441d7 100644 --- a/build/f90.vcxproj +++ b/build/f90.vcxproj @@ -187,6 +187,7 @@ + @@ -198,6 +199,7 @@ + diff --git a/build/f90.vcxproj.filters b/build/f90.vcxproj.filters index df448d8e4..bfd98b0d8 100644 --- a/build/f90.vcxproj.filters +++ b/build/f90.vcxproj.filters @@ -57,6 +57,9 @@ Headers + + Headers + @@ -80,6 +83,9 @@ Sources + + Sources + diff --git a/src/ba/ba8300.cpp b/src/ba/ba8300.cpp index ffda526d9..39f52ec14 100755 --- a/src/ba/ba8300.cpp +++ b/src/ba/ba8300.cpp @@ -648,7 +648,7 @@ void TReport_mask::on_pdf() { TReport_book book; book.add(_report); - TFilename tmp; tmp.tempdir(); + TFilename tmp; tmp.tempdir(); tmp.add(_report.filename().name()); tmp.ext("pdf"); if (book.export_pdf(tmp, false)) diff --git a/src/cg/cg2101.cpp b/src/cg/cg2101.cpp index c978e4f19..4526a8b83 100755 --- a/src/cg/cg2101.cpp +++ b/src/cg/cg2101.cpp @@ -595,3 +595,17 @@ void TMovimentoPN::adjust_rowtypes() } } } + +TMovimentoPN& TMovimentoPN::get_sum_imponibile_imposta(real& s_imponibili, real& s_imposte) +{ + TRecord_array& iva = iva_rows(); + s_imponibili = ZERO; + s_imposte = ZERO; + for(int i = iva.first_row(); i <= iva.rows(); ++i) + { + TRectype& r = iva[i]; + s_imponibili += r.get_real("IMPONIBILE"); + s_imposte += r.get_real("IMPOSTA"); + } + return *this; +} diff --git a/src/cg/cg2101.h b/src/cg/cg2101.h index ce079851d..142993e11 100755 --- a/src/cg/cg2101.h +++ b/src/cg/cg2101.h @@ -84,6 +84,8 @@ public: real& imp_det, real& iva_det, real& imp_ind, real& iva_ind) const; void adjust_rowtypes(); + TMovimentoPN& get_sum_imponibile_imposta(real& s_imponibili, real& s_imposte); + TMovimentoPN(); virtual ~TMovimentoPN() {} }; diff --git a/src/f9/f90400.cpp b/src/f9/f90400.cpp index b70e812e5..b1d8a41b9 100644 --- a/src/f9/f90400.cpp +++ b/src/f9/f90400.cpp @@ -35,17 +35,6 @@ public: TF9_test_app() = default; }; -void format_string(TString& str_out, const TString& str) -{ - str_out.cut(0) << "'" << str << "'"; -} - -void format_string(TString& str_out, const TDate& date) -{ - TString dt; dt << date.date2ansi(); - format_string(str_out, dt); -} - void TF9_test_app::main_loop() @@ -80,10 +69,10 @@ void TF9_test_app::main_loop() filename = ann.get(F9A_FILENAME); TString rec; rec << filename << "\n" << - ann.get(F9A_NUMREG) << "\n" << - ann.get(F9A_CATDOCPAD) << "\n" << - ann.get(F9A_CATDOCANN) << "\n" << - ann.get(F9A_LOADDATE) << "\n" << + ann.get(F9A_NUMREG) << "\n" << + ann.get(F9A_CATDOCPAD) << "\n" << + ann.get(F9A_CATDOCANN) << "\n" << + ann.get(F9A_LOADDATE) << "\n" << ann.get(F9A_USER); CHECK(filename == "annmid.pdf" || filename == "annmid2.pdf", "YOU'RE WRONG"); //message_box(rec); @@ -146,8 +135,8 @@ void TF9_test_app::main_loop() TRecord_categorie rec2(TRecord_categorie::annessi); rec.put("NAME", "FATTACQ"); rec.read(); - TString name = rec.get("NAME"); - TString descr = rec.get("DESCR"); + TString name = rec.get("NAME"); + TString descr = rec.get("DESCR"); TString classdo = rec.get("CLASSDOCSOS"); TString caussos = rec.get("CAUSSOS"); TString causcon = rec.get("CAUSCONT"); @@ -158,11 +147,11 @@ void TF9_test_app::main_loop() CHECK(ok, "TRecord_categorie (annessi) failed to retrieve annessi FATTACQ"); for (; ok; ok = rec2.next()) { - TString s_catdoc = rec2.get("CATDOC"); - TString s_name = rec2.get("NAME"); - TString s_descr = rec2.get("DESCR"); + TString s_catdoc = rec2.get("CATDOC"); + TString s_name = rec2.get("NAME"); + TString s_descr = rec2.get("DESCR"); TString s_tipoann = rec2.get("TIPOANN"); - bool s_obblig = rec2.get("OBBLIG") == "X"; + bool s_obblig = rec2.get("OBBLIG") == "X"; CHECK(s_catdoc == "FATTACQ" && s_tipoann == "DC" && !s_obblig && (s_name == "GENACQ" && s_descr.starts_with("Annesso generico") || s_name == "LEASING" && s_descr.starts_with("Annesso lea")), "TRecord_categorie (annessi) failed to retrive annessi FATTACQ"); @@ -196,170 +185,19 @@ void TF9_test_app::main_loop() annesso.obblig = true; TEstrazione::make_prosp_int_revc(96951, annesso);*/ - TFilename freport; freport.currdir().slash_terminate() << "prosp.rep"; - TReport_prosp rep(freport); - TReport_book book; - - TFilename fprosp; - fprosp.tempdir().slash_terminate() << "prosp_rev.pdf"; - TString numreg_acq, numreg_ven; - numreg_acq.cut(0) << "96951"; - numreg_ven.cut(0) << "96952"; - TLocalisamfile anagraf(LF_ANAG), clifo(LF_CLIFO), comuni(LF_COMUNI), mov_acq(LF_MOV), mov_ven(LF_MOV); - mov_acq.put(MOV_NUMREG, numreg_acq); - mov_acq.read(); - anagraf.put(ANA_TIPOA, "G"); - anagraf.put(ANA_CODANAGR, prefix().get_codditta()); - anagraf.read(); - - TString* NUMREG = new TString; - TString* today = new TString; - TString* ragsoc = new TString; - TString* address = new TString; - TString* cap = new TString; - TString* citta = new TString; - TString* provin = new TString; - TString* codfisc = new TString; - TString* partiva = new TString; - TString* ndoc = new TString; - TString* datadoc = new TString; - TString* totdoc = new TString; - TString* codforn = new TString; - TString* ragsocforn = new TString; - TString* addrforn = new TString; - TString* capforn = new TString; - TString* cittaforn = new TString; - TString* provinforn = new TString; - TString* partivaforn = new TString; - TString* regacq = new TString; - TString* protivaacq = new TString; - TString* dataregacq = new TString; - TString* totale = new TString; - TString* totimponibile = new TString; - TString* totimposta = new TString; - - - format_string(*NUMREG, numreg_ven); - format_string(*today, TDate(TODAY)); - - // DATI SOCIETA': - format_string(*ragsoc, anagraf.get(ANA_RAGSOC)); - format_string(*address, TString(anagraf.get(ANA_INDRES)) << ", " << anagraf.get(ANA_CIVRES)); - format_string(*cap, anagraf.get(ANA_CAPRES)); - comuni.put(COM_COM, anagraf.get(ANA_COMRES)); - if(comuni.read() == NOERR) + TF9Prospetto_integr prosp; + if(prosp("96951", "96952")) { - format_string(*citta, comuni.get(COM_DENCOM)); - format_string(*provin, comuni.get(COM_PROVCOM)); + TFilename tmp; tmp.tempdir(); + tmp.add(prosp.filename().name()); + tmp.ext("pdf"); +#ifndef DBG + bool exp = prosp.export_pdf(tmp); +#else + bool exp = prosp.preview(); +#endif } - else - { - format_string(*citta, TString("")); - format_string(*provin, TString("")); - } - format_string(*codfisc, anagraf.get(ANA_COFI)); - format_string(*partiva, anagraf.get(ANA_PAIV)); - - TString ndoc_s; ndoc_s << mov_acq.get(MOV_NUMDOCEXT); - if (ndoc_s.empty()) - ndoc_s << mov_acq.get(MOV_NUMDOC); - - format_string(*ndoc, ndoc_s); - format_string(*datadoc, mov_acq.get(MOV_DATADOC)); - format_string(*totdoc, mov_acq.get(MOV_TOTDOC)); - - TString codforn_s; codforn_s << mov_acq.get(MOV_CODCF); - clifo.zero(); - clifo.put(CLI_TIPOCF, "F"); - clifo.put(CLI_CODCF, codforn_s); - bool ok = clifo.read() == NOERR; - format_string(*codforn, codforn_s); - format_string(*ragsocforn, ok ? clifo.get(CLI_RAGSOC) : ""); - format_string(*addrforn, ok ? TString(clifo.get(CLI_INDCF)) << ", " << clifo.get(CLI_CIVCF) : ""); - format_string(*capforn, ok ? clifo.get(CLI_CAPCF) : ""); - - if (ok) - { - comuni.zero(); - comuni.put(COM_COM, clifo.get(CLI_COMCF)); - comuni.read(); - } - format_string(*cittaforn, ok ? comuni.get(COM_DENCOM) : ""); - format_string(*provinforn, ok ? comuni.get(COM_PROVCOM) : ""); - format_string(*partivaforn, ok ? clifo.get(CLI_PAIV) : ""); - - // Info registrazioni - - format_string(*regacq, mov_acq.get(MOV_REG)); - format_string(*protivaacq, mov_acq.get(MOV_PROTIVA)); - format_string(*dataregacq, mov_acq.get(MOV_DATAREG)); - - // Calcolo dal rmoviva - format_string(*totale, TString("")); - format_string(*totimponibile, TString("")); - format_string(*totimposta, TString("")); - - TString sql; sql << "SELECT COD, CODTAB, S0, R0,\n" - "B.GRUPPO, B.CONTO, B.SOTTOCONTO, B.DESCR,\n" - "B.NUMREG, B.CODIVA, B.IMPONIBILE, B.IMPOSTA, B.GRUPPO, B.CONTO, B.SOTTOCONTO, B.DATAREG, B.DATADOC, B.REG, B.PROTIVA, B.TOTDOC,\n" - << *today << " AS TODAY, " << *ragsoc << " AS RAGSOC, " << *totdoc << " AS TOTDOC, " << *address << " AS ADDRSEDE, " << *cap << " AS CAP, " << *citta << " AS CITTA, " << *provin << " AS PROVIN,\n" - "" << *codfisc << " AS CODFISC, " << *partiva << " AS PARTIVA,\n" - "" << *ndoc << " AS NDOC, " << *datadoc << " AS DATADOC,\n" - "" << *codforn << " AS CODFORN, " << *ragsocforn << " AS RAGSOCFORN, " << *addrforn << " AS ADDRFORN, " << *capforn << " AS CAPFORN, " << *cittaforn << " AS CITTAFORN, " << *provinforn << " AS PROVINFORN, " << *partivaforn << " AS PARTIVAFORN,\n" - "" << *regacq << " AS REGACQ, " << *protivaacq << " AS PROTIVAACQ, " << *dataregacq << " AS DATAREGACQ,\n" - "" << *totale << " AS TOTALE, " << *totimponibile << " AS TOTIMPONIBILE, " << *totimposta << " AS TOTIMPOSTA\n" - "FROM(\n" - "\n" - " SELECT PCON.GRUPPO, PCON.CONTO, PCON.SOTTOCONTO, PCON.DESCR,\n" - " A.NUMREG AS NUMREG, A.CODIVA, A.IMPONIBILE, A.IMPOSTA, A.GRUPPO, A.CONTO, A.SOTTOCONTO, A.DATAREG, A.DATADOC, A.REG, A.PROTIVA, A.TOTDOC\n" - " FROM(\n" - " SELECT RMOVIVA.NUMREG AS NUMREG, CODIVA, IMPONIBILE, IMPOSTA, GRUPPO, CONTO, SOTTOCONTO, DATAREG, DATADOC, REG, PROTIVA, TOTDOC\n" - " FROM RMOVIVA\n" - " JOIN MOV\n" - " ON MOV.NUMREG = RMOVIVA.NUMREG\n" - " WHERE MOV.NUMREG = " << *NUMREG << "\n" - "\n" - " ) A\n" - " JOIN PCON\n" - " ON PCON.GRUPPO = A.GRUPPO AND PCON.CONTO = A.CONTO AND PCON.SOTTOCONTO = A.SOTTOCONTO\n" - ") B\n" - "JOIN TABCOM\n" - "ON COD = 'IVA' AND CODTAB = B.CODIVA"; - - TSQL_recordset rs(sql); - - int items = rs.items(); - TString ragsoc_t = rs.get(rs.find_column("RAGSOC")).as_string(); - rep.set_recordset(&rs); - rep.print(book); - book.export_pdf(fprosp, false); - - delete NUMREG; - delete today; - delete ragsoc; - delete address; - delete cap; - delete citta; - delete provin; - delete codfisc; - delete partiva; - delete ndoc; - delete datadoc; - delete totdoc; - delete codforn; - delete ragsocforn; - delete addrforn; - delete capforn; - delete cittaforn; - delete provinforn; - delete partivaforn; - delete regacq; - delete protivaacq; - delete dataregacq; - delete totale; - delete totimponibile; - delete totimposta; message_box("TESTS COMPLETELY SUCCESSFUL"); } diff --git a/src/f9/f9lib01.h b/src/f9/f9lib01.h index 1ea462f10..d69db0399 100644 --- a/src/f9/f9lib01.h +++ b/src/f9/f9lib01.h @@ -1,5 +1,5 @@ -#ifndef _F901001_H_ -#define _F901001_H_ +#ifndef __F901001_H +#define __F901001_H #include #include @@ -10,6 +10,9 @@ #include "real.h" #include "cglib01.h" #include "sheet.h" +#include "sqlset.h" +#include "cg2101.h" +#include "reprint.h" #define INI_PAR_MOD "F9" #define INI_CATDOC "CATDOC" @@ -490,4 +493,74 @@ public: TF9_doccart() : _tdocs(LF_F9DOCS), _tannessi(LF_F9ANNESSI) { } }; -#endif // #ifndef _F901001_H_ + + + +/////////////////////////////////////////////////////////////////////////////// +// TProspetto_recset +/////////////////////////////////////////////////////////////////////////////// + +class TProspetto_recset final : public TSQL_recordset +{ + TString* _numreg; + TString* _today; + TString* _ragsoc; + TString* _address; + TString* _cap; + TString* _citta; + TString* _provin; + TString* _codfisc; + TString* _partiva; + TString* _ndoc; + TString* _datadoc; + TString* _totdoc; + TString* _codforn; + TString* _ragsocforn; + TString* _addrforn; + TString* _capforn; + TString* _cittaforn; + TString* _provinforn; + TString* _partivaforn; + TString* _regacq; + TString* _protivaacq; + TString* _dataregacq; + TString* _totale; + TString* _totimponibile; + TString* _totimposta; + + TMovimentoPN* _movimento_pn; + + static void format_string(TString& str_out, const TString& str) { str_out.cut(0) << "'" << str << "'"; } + static void format_string(TString& str_out, const char* str) { format_string(str_out, TString(str)); } + static void format_string(TString& str_out, const TDate& date) { TString dt; dt << date.date2ansi(); format_string(str_out, dt); } + + void precarica_tabelle(); + +public: + TProspetto_recset(const char* numreg_acq, const char* numreg_ven); + ~TProspetto_recset(); +}; + +class TF9Prospetto_integr +{ + static constexpr const char* _name = "prosp"; + + TReport_book _book; + const TFilename _f_report; + TRecnotype _items; + TReport _rep; + + static TFilename get_path_rep(); + +public: + bool export_pdf(TFilename& tmp); + const char* make_name_rep(); + bool preview(); + const TFilename& filename() const { return _rep.filename(); } + + bool operator()(const char* numreg_acq, const char* numreg_ven); + + TF9Prospetto_integr(); +}; + +#endif // #ifndef __F901001_H diff --git a/src/f9/f9lib02.cpp b/src/f9/f9lib02.cpp index 6c5fccb2c..b0f4c0cb4 100644 --- a/src/f9/f9lib02.cpp +++ b/src/f9/f9lib02.cpp @@ -4,6 +4,11 @@ #include "docf9.h" #include "annessif9.h" #include "f901tab.h" +#include "mov.h" +#include "anagr.h" +#include "comuni.h" +#include "clifo.h" +#include "report.h" #define AMBIENTE_F9 "CODSOC" // Codice ambiente (codsoc) #define ADDRCART_F9 "ADDRCART" @@ -215,3 +220,247 @@ void TIva_insert_prepared_stat::reset() _query.cut(0); _fields.clear(); } + + + + +/////////////////////////////////////////////////////////////////////////////// +// TProspetto_recset +/////////////////////////////////////////////////////////////////////////////// + +void TProspetto_recset::precarica_tabelle() +{ + TString sql; + const char* v[] = { "RMOVIVA", "MOV", "PCON", "TABCOM" }; + for (auto& i : v) + { + sql.cut(0) << "SELECT * FROM " << i; + set(sql); + items(); + } +} + +TProspetto_recset::TProspetto_recset(const char* numreg_acq, const char* numreg_ven) : TSQL_recordset("") +{ + _numreg = new TString; + _today = new TString; + _ragsoc = new TString; + _address = new TString; + _cap = new TString; + _citta = new TString; + _provin = new TString; + _codfisc = new TString; + _partiva = new TString; + _ndoc = new TString; + _datadoc = new TString; + _totdoc = new TString; + _codforn = new TString; + _ragsocforn = new TString; + _addrforn = new TString; + _capforn = new TString; + _cittaforn = new TString; + _provinforn = new TString; + _partivaforn = new TString; + _regacq = new TString; + _protivaacq = new TString; + _dataregacq = new TString; + _totale = new TString; + _totimponibile = new TString; + _totimposta = new TString; + + // In modo da dare la possibilita' a SQLite di caricare le tabelle di campo, + // altrimenti con tutte le join e from concatenate non ce la fa e fallirebbe. + precarica_tabelle(); + + TLocalisamfile anagraf(LF_ANAG), clifo(LF_CLIFO), comuni(LF_COMUNI), mov_acq(LF_MOV), mov_ven(LF_MOV), rmoviva(LF_RMOVIVA); + mov_acq.put(MOV_NUMREG, numreg_acq); + mov_acq.read(); + anagraf.put(ANA_TIPOA, "G"); + anagraf.put(ANA_CODANAGR, prefix().get_codditta()); + anagraf.read(); + + format_string(*_numreg, TString(numreg_ven)); + format_string(*_today, TDate(TODAY)); + + // DATI SOCIETA': + format_string(*_ragsoc, anagraf.get(ANA_RAGSOC)); + format_string(*_address, TString(anagraf.get(ANA_INDRES)) << ", " << anagraf.get(ANA_CIVRES)); + format_string(*_cap, anagraf.get(ANA_CAPRES)); + comuni.put(COM_COM, anagraf.get(ANA_COMRES)); + if (comuni.read() == NOERR) + { + format_string(*_citta, comuni.get(COM_DENCOM)); + format_string(*_provin, comuni.get(COM_PROVCOM)); + } + else + { + format_string(*_citta, TString("")); + format_string(*_provin, TString("")); + } + format_string(*_codfisc, anagraf.get(ANA_COFI)); + format_string(*_partiva, anagraf.get(ANA_PAIV)); + + TString ndoc_s; ndoc_s << mov_acq.get(MOV_NUMDOCEXT); + if (ndoc_s.empty()) + ndoc_s << mov_acq.get(MOV_NUMDOC); + + format_string(*_ndoc, ndoc_s); + format_string(*_datadoc, mov_acq.get(MOV_DATADOC)); + format_string(*_totdoc, mov_acq.get(MOV_TOTDOC)); + + TString codforn_s; codforn_s << mov_acq.get(MOV_CODCF); + clifo.zero(); + clifo.put(CLI_TIPOCF, "F"); + clifo.put(CLI_CODCF, codforn_s); + bool ok = clifo.read() == NOERR; + format_string(*_codforn, codforn_s); + format_string(*_ragsocforn, ok ? clifo.get(CLI_RAGSOC) : ""); + format_string(*_addrforn, ok ? TString(clifo.get(CLI_INDCF)) << ", " << clifo.get(CLI_CIVCF) : ""); + format_string(*_capforn, ok ? clifo.get(CLI_CAPCF) : ""); + + if (ok) + { + comuni.zero(); + comuni.put(COM_COM, clifo.get(CLI_COMCF)); + comuni.read(); + } + format_string(*_cittaforn, ok ? comuni.get(COM_DENCOM) : ""); + format_string(*_provinforn, ok ? comuni.get(COM_PROVCOM) : ""); + format_string(*_partivaforn, ok ? clifo.get(CLI_PAIV) : ""); + + // Info registrazioni + + format_string(*_regacq, mov_acq.get(MOV_REG)); + format_string(*_protivaacq, mov_acq.get(MOV_PROTIVA)); + format_string(*_dataregacq, mov_acq.get(MOV_DATAREG)); + + // Calcolo dal rmoviva + real s_imponibili, s_imposte; + _movimento_pn = new TMovimentoPN; + TRectype& rec = _movimento_pn->curr(); + rec.put(MOV_NUMREG, numreg_ven); + if (_movimento_pn->read() != NOERR) + bool simo = true; + _movimento_pn->get_sum_imponibile_imposta(s_imponibili, s_imposte); + + format_string(*_totale, TString() << s_imponibili + s_imposte); + format_string(*_totimponibile, s_imponibili.stringa()); + format_string(*_totimposta, s_imposte.stringa()); + + TString sql; sql << "SELECT COD, CODTAB, S0, R0,\n" + "B.GRUPPO, B.CONTO, B.SOTTOCONTO, B.DESCR,\n" + "B.NUMREG, B.CODIVA, B.IMPONIBILE, B.IMPOSTA, B.GRUPPO, B.CONTO, B.SOTTOCONTO, B.DATAREG, B.DATADOC, B.REG, B.PROTIVA, B.TOTDOC,\n" + << *_today << " AS TODAY, " << *_ragsoc << " AS RAGSOC, " << *_totdoc << " AS TOTDOC, " << *_address << " AS ADDRSEDE, " << *_cap << " AS CAP, " << *_citta << " AS CITTA, " << *_provin << " AS PROVIN,\n" + << *_codfisc << " AS CODFISC, " << *_partiva << " AS PARTIVA,\n" + << *_ndoc << " AS NDOC, " << *_datadoc << " AS DATADOC,\n" + << *_codforn << " AS CODFORN, " << *_ragsocforn << " AS RAGSOCFORN, " << *_addrforn << " AS ADDRFORN, " << *_capforn << " AS CAPFORN, " << *_cittaforn << " AS CITTAFORN, " << *_provinforn << " AS PROVINFORN, " << *_partivaforn << " AS PARTIVAFORN,\n" + << *_regacq << " AS REGACQ, " << *_protivaacq << " AS PROTIVAACQ, " << *_dataregacq << " AS DATAREGACQ,\n" + << *_totale << " AS TOTALE, " << *_totimponibile << " AS TOTIMPONIBILE, " << *_totimposta << " AS TOTIMPOSTA\n" + "FROM(\n" + "\n" + " SELECT PCON.GRUPPO, PCON.CONTO, PCON.SOTTOCONTO, PCON.DESCR,\n" + " A.NUMREG AS NUMREG, A.CODIVA, A.IMPONIBILE, A.IMPOSTA, A.GRUPPO, A.CONTO, A.SOTTOCONTO, A.DATAREG, A.DATADOC, A.REG, A.PROTIVA, A.TOTDOC\n" + " FROM(\n" + " SELECT RMOVIVA.NUMREG AS NUMREG, CODIVA, IMPONIBILE, IMPOSTA, GRUPPO, CONTO, SOTTOCONTO, DATAREG, DATADOC, REG, PROTIVA, TOTDOC\n" + " FROM RMOVIVA\n" + " JOIN MOV\n" + " ON MOV.NUMREG = RMOVIVA.NUMREG\n" + " WHERE MOV.NUMREG = " << *_numreg << "\n" + "\n" + " ) A\n" + " JOIN PCON\n" + " ON PCON.GRUPPO = A.GRUPPO AND PCON.CONTO = A.CONTO AND PCON.SOTTOCONTO = A.SOTTOCONTO\n" + ") B\n" + "JOIN TABCOM\n" + "ON COD = 'IVA' AND CODTAB = B.CODIVA"; + + set(sql); +} + +TProspetto_recset::~TProspetto_recset() +{ + delete _numreg; + delete _today; + delete _ragsoc; + delete _address; + delete _cap; + delete _citta; + delete _provin; + delete _codfisc; + delete _partiva; + delete _ndoc; + delete _datadoc; + delete _totdoc; + delete _codforn; + delete _ragsocforn; + delete _addrforn; + delete _capforn; + delete _cittaforn; + delete _provinforn; + delete _partivaforn; + delete _regacq; + delete _protivaacq; + delete _dataregacq; + delete _totale; + delete _totimponibile; + delete _totimposta; +} + + + + +/////////////////////////////////////////////////////////////////////////////// +// TF9Prospetto_integr +/////////////////////////////////////////////////////////////////////////////// + +TFilename TF9Prospetto_integr::get_path_rep() +{ + // Guardo prima nella custom, altrimenti nella root di Campo + TFilename freport = firm2dir(-1); + freport.add("custom"); + freport.add(_name); + freport.ext("rep"); + if (!freport.exist()) + { + freport.currdir().slash_terminate() << _name; + freport.ext("rep"); + } + return freport; +} + +bool TF9Prospetto_integr::export_pdf(TFilename& tmp) +{ + return _book.export_pdf(tmp, false); +} + +const char* TF9Prospetto_integr::make_name_rep() +{ + return "prosp_rev.pdf"; +} + +bool TF9Prospetto_integr::preview() +{ + return _book.preview(); +} + +bool TF9Prospetto_integr::operator()(const char* numreg_acq, const char* numreg_ven) +{ + if (_rep.load(_f_report)) + { + TFilename fprosp; fprosp.tempdir().slash_terminate() << make_name_rep(); + TProspetto_recset prosp_rs(numreg_acq, numreg_ven); + _items = prosp_rs.items(); + + _rep.set_recordset(&prosp_rs); + _book.add(_rep); + } + else + { + warning_box("Impossibile trovare il report %s per la generazione\ndel prospetto di integrazione Reverse Charge", _name); + return false; + } + return true; +} + +TF9Prospetto_integr::TF9Prospetto_integr() : _f_report(get_path_rep()), _items(0) +{ } diff --git a/src/include/text.cpp b/src/include/text.cpp index 10fa5b8d5..3fa796fe5 100755 --- a/src/include/text.cpp +++ b/src/include/text.cpp @@ -681,7 +681,7 @@ const char *TTextfile::word_at ( // @rdesc Ritorna il risultato dell'operazione: // // @flag TRUE | Se la riga e' stat aggiuntac correttamente -// @flag FALSE | Se non e' riuscot ad aggiungere la riga +// @flag FALSE | Se non e' riuscito ad aggiungere la riga bool TTextfile::append ( const char *l) // @parm Riga da aggiungere { diff --git a/src/ve/velib04f.cpp b/src/ve/velib04f.cpp index 2ff3212d6..bcde0a83f 100755 --- a/src/ve/velib04f.cpp +++ b/src/ve/velib04f.cpp @@ -888,7 +888,7 @@ bool TContabilizzazione_analitica::elabora(TLista_documenti& doc_in, TLista_docu TAnal_mov mov; if (elabora(doc_in[i], 0, &v, true, mov)) { - // Cambia stato al documento elborato con successo + // Cambia stato al documento elaborato con successo TDocumento& di = doc_in[i]; di.stato(stato_finale_doc_iniziale()[0]); if (di.rewrite() == NOERR)