From a2691965e613e4a02904f237ad498f546e50065b Mon Sep 17 00:00:00 2001 From: luca Date: Mon, 25 Jul 2005 13:30:03 +0000 Subject: [PATCH] Patch level :2.2 160 Files correlati :ca3.exe, ca3700a.msk Ricompilazione Demo : [ ] Commento :stampa rendiconto: prima versione funzionante git-svn-id: svn://10.65.10.50/trunk@13293 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/velib.h | 6 +++--- ve/velib04.h | 4 +++- ve/velib04b.cpp | 3 ++- ve/velib04f.cpp | 42 ++++++++++++++++++++++++++++++++---------- 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/ve/velib.h b/ve/velib.h index 072a8d3a9..ef3eb6902 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -195,9 +195,7 @@ public: }; class TTipo_documento : public TRectype // velib03 -{ - enum { _altro, _bolla, _fattura, _ordine}; - +{ static TAssoc_array _formule_documento; TToken_string _formule; TString_array _keys_descrs; // Tipi riga per listbox @@ -232,6 +230,8 @@ protected: public: TObject* dup() const { return new TTipo_documento(codice()); } + enum { _altro, _bolla, _fattura, _ordine}; + public: // const TString& profile_name() const { return get("S4"); } const TFilename& profile_name(TFilename& name) const; diff --git a/ve/velib04.h b/ve/velib04.h index 45265b118..57cc59c47 100755 --- a/ve/velib04.h +++ b/ve/velib04.h @@ -469,10 +469,12 @@ public: class TContabilizzazione_analitica : public TElaborazione // velib04f { error_type _error; // Errore rilevato durante l'elaborazione + bool _usepdcc; protected: bool search_costo_ricavo(const TRiga_documento& riga, TBill& conto); bool find_conti(const TRiga_documento& riga, TString_array& conti); + void init(); const TCausale& doc2caus(const TDocumento& doc); const TCausale& rdoc2caus(const TRiga_documento& rdoc); @@ -482,7 +484,7 @@ protected: public: virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, const TDate& data_elab, bool interattivo = false); - bool elabora(TDocumento& doc, long numreg_cg, TViswin* viswin, bool can_write); + bool elabora(TDocumento& doc, long numreg_cg, TViswin* viswin, bool can_write, TAnal_mov& mov); TContabilizzazione_analitica(); TContabilizzazione_analitica(const TRectype& rec); diff --git a/ve/velib04b.cpp b/ve/velib04b.cpp index f0136901c..7fa47606f 100755 --- a/ve/velib04b.cpp +++ b/ve/velib04b.cpp @@ -3504,7 +3504,8 @@ error_type TContabilizzazione::write_anal(TDocumento& doc, const TMovimentoPN& m { TContabilizzazione_analitica canal; const long numreg_cg = movimento.curr().get_long(MOV_NUMREG); - canal.elabora(doc, numreg_cg, _viswin, _can_write); + TAnal_mov mov; + canal.elabora(doc, numreg_cg, _viswin, _can_write, mov); } return _error; diff --git a/ve/velib04f.cpp b/ve/velib04f.cpp index 0ce2e84f4..cc9d716ed 100755 --- a/ve/velib04f.cpp +++ b/ve/velib04f.cpp @@ -254,11 +254,21 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri const char tipocf = riga.doc().get_char(DOC_TIPOCF); TString80 contanal; + + TBill bill; // Cerco il conto contabile + if (!search_costo_ricavo(riga, bill)) + return true; + if (!bill.is_analitico()) + return true; + if (riga.is_articolo()) { const TRectype& anamag = cache().get(LF_ANAMAG, riga.get(RDOC_CODARTMAG)); bArcticleFound = !anamag.empty(); - contanal = anamag.get(tipocf == 'F' ? ANAMAG_CONTOINDA : ANAMAG_CONTOINDV); + if (_usepdcc) + contanal.format("%03d%03d%06ld", bill.gruppo(), bill.conto(), bill.sottoconto()); + else + contanal = anamag.get(tipocf == 'F' ? ANAMAG_CONTOINDA : ANAMAG_CONTOINDV); } else { @@ -275,17 +285,20 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri { const TRectype& spp = cache().get(tabanal, riga.get(RDOC_CODART)); bArcticleFound = !spp.empty(); - contanal = spp.get(tipocf == 'F' ? "S2" : "S1"); + if (_usepdcc) + contanal.format("%03d%03d%06ld", bill.gruppo(), bill.conto(), bill.sottoconto()); + else + contanal = spp.get(tipocf == 'F' ? "S2" : "S1"); } } if (!bArcticleFound) // Se l'anagrtafica non esiste va bene cosi' return true; - TBill bill; // Cerco il conto contabile +/* TBill bill; // Cerco il conto contabile if (!search_costo_ricavo(riga, bill)) return true; if (!bill.is_analitico()) - return true; + return true;*/ const TString80 riga_cos = riga.codice_costo(); const TString80 riga_cms = riga.codice_commessa(); @@ -345,9 +358,9 @@ void TContabilizzazione_analitica::init_distrib(TString_array& conti, TGeneric_d } } -bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TViswin* viswin, bool can_write) +bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TViswin* viswin, bool can_write, TAnal_mov& mov) { - TDate datareg, datacomp; + TDate datareg, datacomp, datadoc; int annoes = 0; TString descr, msg, codcaus; bool dare = false; @@ -364,7 +377,7 @@ bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TVis } else { - const TDate datadoc(doc.get(DOC_DATADOC)); + datadoc = doc.get(DOC_DATADOC); datareg = datacomp = datadoc; annoes = datareg.year(); doc.riferimento(descr); @@ -394,7 +407,6 @@ bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TVis const char sezione = dare ? 'D' : 'A'; const int decimals = TCurrency::get_firm_dec(); - TAnal_mov mov; long numreg_ca = doc.get_long(DOC_NUMREGCA); if (numreg_ca > 0) { @@ -413,6 +425,7 @@ bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TVis } mov.put(MOVANA_DATAREG, datareg); mov.put(MOVANA_DATACOMP, datacomp); + mov.put(MOVANA_DATADOC, datadoc); mov.put(MOVANA_ANNOES, annoes); mov.put(MOVANA_DESCR, descr); mov.put(MOVANA_NUMREGCG, numreg_cg); // Movimento contabile associato @@ -529,7 +542,8 @@ bool TContabilizzazione_analitica::elabora(TLista_documenti& doc_in, TLista_docu v.open_modal(); for (int i = 0; i < doc_in.items(); i++) { - if (elabora(doc_in[i], 0, &v, true)) + TAnal_mov mov; + if (elabora(doc_in[i], 0, &v, true, mov)) doc_in[i].stato(get_char("S4")); else break; @@ -542,14 +556,22 @@ bool TContabilizzazione_analitica::elabora(TLista_documenti& doc_in, TLista_docu return true; } +void TContabilizzazione_analitica::init() +{ + TConfig_anal cfg; + _usepdcc = cfg.get_bool("UsePdcc"); +} + TContabilizzazione_analitica::TContabilizzazione_analitica() : TElaborazione(NULL), _error(no_error) -{ +{ + init(); } TContabilizzazione_analitica::TContabilizzazione_analitica(const TRectype& rec) : TElaborazione(rec), _error(no_error) { + init(); } TContabilizzazione_analitica::~TContabilizzazione_analitica()