From dcacf87142ce84f24df22e035811b9fd310b106d Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 12 Sep 2003 14:31:37 +0000 Subject: [PATCH] Patch level : 2.0 564 Files correlati : sv2.exe sv2100a.msk Ricompilazione Demo : [ ] Commento : GF20071 La statistica per articoli omaggio non funziona ne se la configurazione dice RAGGRUPPA OMAGGI CON MERCE e neanche nel caso contrario git-svn-id: svn://10.65.10.50/trunk@11415 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- sv/sv2100.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++------ sv/sv2100a.uml | 1 + sv/svlib01.cpp | 2 +- 3 files changed, 50 insertions(+), 7 deletions(-) diff --git a/sv/sv2100.cpp b/sv/sv2100.cpp index b506246c5..1e85b7386 100755 --- a/sv/sv2100.cpp +++ b/sv/sv2100.cpp @@ -11,6 +11,10 @@ class TRicalcolo_stats : public TSkeleton_application { TStats_agg _agg; + static TDate _datamin; + +protected: + void calcola_data_minima(); protected: virtual void main_loop(); @@ -23,6 +27,8 @@ public: void calc_stats(const TDate& dfr, const TDate& dto); }; +TDate TRicalcolo_stats::_datamin; + bool TRicalcolo_stats::create() { open_files(LF_TABCOM, 0); // File comuni @@ -74,6 +80,40 @@ bool TRicalcolo_stats::kill_stats(const TDate& dfr, const TDate& dto) return TRUE; } +void TRicalcolo_stats::calcola_data_minima() +{ + TWait_cursor hourglass; + + TAssoc_array tipi_doc; + + TRelation rel_tip("%TIP"); + TCursor cur_tip(&rel_tip); + const TRecnotype items_tip = cur_tip.items(); + cur_tip.freeze(); + for (cur_tip = 0L; cur_tip.pos() < items_tip; ++cur_tip) + { + const TRectype& rec_tip = rel_tip.curr(); + if (rec_tip.get_bool("B2")) // E' un tipo per le statistiche + tipi_doc.add(rec_tip.get("CODTAB"), NULL); + } + + TRelation rel_doc(LF_DOC); + TCursor cur_doc(&rel_doc, "", 3); + const TRectype& rec_doc = rel_doc.curr(); + const TRecnotype items_doc = cur_doc.items(); + cur_doc.freeze(); + + for (cur_doc = 0L; cur_doc.pos() < items_doc; ++cur_doc) + { + const TString& tipodoc = rec_doc.get(DOC_TIPODOC); + if (tipi_doc.is_key(tipodoc)) + { + _datamin = rec_doc.get(DOC_DATADOC); + _datamin.set_day(1); + break; + } + } +} void TRicalcolo_stats::calc_stats(const TDate& dfr, const TDate& dto) { @@ -94,7 +134,7 @@ void TRicalcolo_stats::calc_stats(const TDate& dfr, const TDate& dto) const long items = cur.items(); cur.freeze(); - TProgind pi(items, "Ricalcolo statistiche", FALSE, TRUE); + TProgind pi(items, TR("Ricalcolo statistiche"), FALSE, TRUE); TDocumento* curr = new TDocumento; cur.file().set_curr(curr); @@ -134,19 +174,21 @@ bool TRicalcolo_stats::datein_handler(TMask_field& f, KEY k) { if (f.to_check(k)) { - TConfig prassid(CONFIG_DITTA, "Euro"); - TDate adozione = prassid.get("DataAdozione"); - TDate inizio(f.get()); - if (adozione.ok() && inizio < adozione) - return f.error_box("Impossibile effettuare la ricostruzione statistiche \n a una data inferiore alla data adozione Euro") ; + const TDate inizio = f.get(); + if (inizio < _datamin) + return f.error_box(FR("Impossibile effettuare la ricostruzione statistiche\nad una data antecedente il %s"), _datamin.string()); } return TRUE; } void TRicalcolo_stats::main_loop() { + calcola_data_minima(); + TMask m("sv2100a"); m.set_handler(F_FROMDATE, datein_handler); + m.set(F_FROMDATE, _datamin); + while (m.run() == K_ENTER) { const TDate dfr(m.get(F_FROMDATE)); diff --git a/sv/sv2100a.uml b/sv/sv2100a.uml index d8f46526a..b6ad6aaeb 100755 --- a/sv/sv2100a.uml +++ b/sv/sv2100a.uml @@ -5,6 +5,7 @@ PAGE "Ricalcolo statistiche" -1 -1 30 6 DATE F_FROMDATE BEGIN PROMPT 1 1 "Dalla data " + CHECKTYPE REQUIRED END DATE F_TODATE diff --git a/sv/svlib01.cpp b/sv/svlib01.cpp index c0d8b16d5..d805770f5 100755 --- a/sv/svlib01.cpp +++ b/sv/svlib01.cpp @@ -506,7 +506,7 @@ bool TStats_agg::algebric_sum(const TRiga_documento& rdoc, int sign) if (_valfield.empty()) { if (_omaggi_valore && rdoc.is_omaggio()) - val_riga = rdoc.imponibile_omaggio(); + val_riga = rdoc.imponibile_omaggio(2); // Considera il valore indipendentemente dall'addebito IVA else val_riga = rdoc.imponibile(); }