From c1f4f318d46c0bd1a40ccbdd8d84af7f0a4abb40 Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 29 Dec 2011 11:09:20 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : lv4.exe lv4900a.msk lv4900.rep Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/branches/R_10_00@22538 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- lv/lv4.cpp | 1 + lv/lv4.h | 1 + lv/lv4900.cpp | 193 +++++++++++++++++++++++++++++++++++ lv/lv4900.rep | 66 ++++++++++++ lv/lv4900a.h | 33 ++++++ lv/lv4900a.uml | 271 +++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 565 insertions(+) create mode 100644 lv/lv4900.cpp create mode 100644 lv/lv4900.rep create mode 100644 lv/lv4900a.h create mode 100644 lv/lv4900a.uml diff --git a/lv/lv4.cpp b/lv/lv4.cpp index e29027fc6..c46e88803 100755 --- a/lv/lv4.cpp +++ b/lv/lv4.cpp @@ -14,6 +14,7 @@ int main(int argc, char** argv) case 5: lv4600(argc, argv); break; // Riclassificazione conti COGECO case 6: lv4700(argc, argv); break; // Riclassificazione tabelle COGECO case 7: lv4800(argc, argv); break; // Esportazione Bolle + case 8: lv4900(argc, argv); break; // Aggiornamento prezzi default: lv4100(argc, argv); break; // Importazione movimenti contabili } return 0; diff --git a/lv/lv4.h b/lv/lv4.h index 88d3a0c72..884afbf87 100755 --- a/lv/lv4.h +++ b/lv/lv4.h @@ -6,3 +6,4 @@ int lv4500(int argc, char* argv[]); // importazione fatture int lv4600(int argc, char* argv[]); // riclassificazione conti COGECO int lv4700(int argc, char* argv[]); // riclassificazione tabelle COGECO int lv4800(int argc, char* argv[]); // esportazione bolle +int lv4900(int argc, char* argv[]); // aggiornamento prezzi diff --git a/lv/lv4900.cpp b/lv/lv4900.cpp new file mode 100644 index 000000000..bf2c92d38 --- /dev/null +++ b/lv/lv4900.cpp @@ -0,0 +1,193 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lv4900a.h" +#include "lvrcondv.h" + +//////////////// +// MASCHERA // +//////////////// + +class TPrezzi_mask : public TAutomask +{ +private: + +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + +public: + TPrezzi_mask() : TAutomask("lv4900a") { TPrice p; set(F_DECIMALS, p.decimals()); } +}; + +bool TPrezzi_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch (o.dlg()) + { + case F_DATA: + if (e == fe_init && o.empty()) + { + const TDate oggi(TODAY); + const int curr_month = oggi.month(); + const int next_month = (((curr_month+2) % 12) / 3 * 3)+1; + const int next_year = oggi.year() + (next_month < curr_month ? 1 : 0); + const TDate d(1, next_month, next_year); + o.set(d.string()); + } + break; + default: + break; + } + return true; +} + +//////////////////////// +// TPrice_recordset // +//////////////////////// + +class TPrice_recordset : public TISAM_recordset +{ + int _mode; + bool _roundup; + int _decimals; + real _perc, _incmin; + +protected: + virtual const TVariant& get_field(int logic, const char* field) const; + +public: + TPrice_recordset(const TMask& m); +}; + +const TVariant& TPrice_recordset::get_field(int logic, const char* field) const +{ + if ((logic == 0 || logic == LF_LVRCONDV) && strncmp(field, "NEW", 3) == 0) + { + const TFixed_string base(field+3); + if (((_mode & 1) && (base == LVRCONDV_PREZZO)) || ((_mode & 2) && (base == LVRCONDV_PREZNOL))) + { + const real old_price = TISAM_recordset::get_field(logic, base).as_real(); + if (old_price > ZERO) + { + real new_price = old_price * (CENTO + _perc) / CENTO; + if (_roundup) + new_price.ceil(_decimals); + else + new_price.round(_decimals); + if (new_price == old_price && _perc > ZERO) + new_price += _incmin; + TVariant& tmp = get_tmp_var(); + tmp.set(new_price); + return tmp; + } + } + } + return TISAM_recordset::get_field(logic, field); +} + + +TPrice_recordset::TPrice_recordset(const TMask& m) : TISAM_recordset("USE LVRCONDV") +{ + _mode = m.get_int(F_PREZZO); + _decimals = m.get_int(F_DECIMALS); + _roundup = m.get_bool(F_ARROTONDA); + _perc = m.get_real(F_PERC); + _incmin = m.get_real(F_MINIMO); + + const TString4 nil = "???"; + const TString& por = m.get_bool(F_USEPORTO) ? m.get(F_PORTO) : nil; + const TString& cco = m.get_bool(F_USECATCON) ? m.get(F_CATCON) : nil; + const TString& cve = m.get_bool(F_USECATVEN) ? m.get(F_CATVEN) : nil; + const bool cfven_needed = por != nil || cco != nil || cve != nil; + + TString select; + if (cfven_needed) + { + if (por != nil) select << "&&(CFVEN.CODPORTO==\""<< por << "\")"; + if (cco != nil) select << "&&(CFVEN.CODCATC==\"" << cco << "\")"; + if (cve != nil) select << "&&(CFVEN.CATVEN==\"" << cve << "\")"; + } + + const TString& dca = m.get(F_FROMCODART); + const TString& aca = m.get(F_TOCODART); + if (dca.full() || aca.full()) + select << "&&(BETWEEN(CODART,\"" << dca << "\",\"" << aca << "\"))"; + + TString query; + query << "USE LVRCONDV SELECT (BETWEEN(\""<< m.get(F_DATA) << "\",LVCONDV.DATAIN,LVCONDV.DATASC))"; + switch (_mode) + { + case 1: query << "&&(STR(PREZZO>0))"; break; + case 2: query << "&&(STR(PREZNOL>0))"; break; + default: query << "&&(STR((PREZZO>0)||(PREZNOL>0)))"; break; + } + query << select; + query << "\nJOIN LVCONDV INTO CODCF==CODCF CODCONT==CODCONT"; + if (cfven_needed) + query << "\nJOIN CFVEN INTO TIPOCF=\"C\" CODCF==CODCF"; + query << "\nFROM CODCF=" << m.get(F_FROMCLI) << "\nTO CODCF=" << m.get(F_TOCLI); + + set(query); +} + + +//////////////////// +// Applicazione // +//////////////////// + +class TAggiornamento_prezzi : public TSkeleton_application +{ +public: + virtual void main_loop(); +}; + +void TAggiornamento_prezzi::main_loop() +{ + TPrezzi_mask m; + while (m.run() == K_ENTER) + { + TPrice_recordset* pr = new TPrice_recordset(m); + TReport rep; + if (rep.load("lv4900")) + { + rep.set_recordset(pr); + rep.preview(); + } + + if (m.get_bool(F_DEFINITIVO) && yesno_box(TR("Si desiderano registrare i nuovi prezzi?"))) + { + const int mode = m.get_int(F_PREZZO); // 1, 2, 3 + TProgind pi(pr->items(), title(), false, true); + const TRectype& curr = pr->cursor()->curr(); + TFast_isamfile file(LF_LVRCONDV); + for (bool ok = pr->move_first(); ok; ok = pr->move_next()) + { + if (!pi.addstatus(1)) + break; + file.curr() = curr; + if (mode & 1) + file.put(LVRCONDV_PREZZO, pr->get("NEW"LVRCONDV_PREZZO).as_real()); + if (mode & 2) + file.put(LVRCONDV_PREZNOL, pr->get("NEW"LVRCONDV_PREZNOL).as_real()); + const int err = file.rewrite(); + if (err != NOERR) + { + cantwrite_box(file.description()); + break; + } + } + } + } +} + +int lv4900(int argc, char* argv[]) +{ + TAggiornamento_prezzi a; + a.run(argc, argv, TR("Aggiornamento prezzi")); + return 0; +} diff --git a/lv/lv4900.rep b/lv/lv4900.rep new file mode 100644 index 000000000..eceee9896 --- /dev/null +++ b/lv/lv4900.rep @@ -0,0 +1,66 @@ + + + Aggiornamento prezzi + +
+
+
+ CODCF+CODCONT + + + + + CODCF + + + MESSAGE ISAMREAD,CLIFO,TIPOCF='C'!CODCF=CODCF,RAGSOC + + + + CODCONT + + + LVCONDV.DATAIN + + + LVCONDV.DATASC + + + + + + + + + +
+
+
+ + CODART + + + MESSAGE ISAMREAD,ANAMAG,CODART=CODART,DESCR + + + + PREZZO + + + NEWPREZZO + + + + PREZNOL + + + NEWPREZNOL + +
+
+
+
+ USE LVRCONDV +JOIN LVCONDV INTO CODCF==CODCF CODCONT==CODCONT + + \ No newline at end of file diff --git a/lv/lv4900a.h b/lv/lv4900a.h new file mode 100644 index 000000000..e7d79bb48 --- /dev/null +++ b/lv/lv4900a.h @@ -0,0 +1,33 @@ +#define F_PREZZO 201 +#define F_DATA 202 +#define F_PERC 203 +#define F_DECIMALS 204 +#define F_ARROTONDA 205 +#define F_MINIMO 206 +#define F_DEFINITIVO 207 + +#define F_FROMCODART 211 +#define F_FROMDESCART 212 +#define F_TOCODART 213 +#define F_TODESCART 214 + +#define F_USEPORTO 221 +#define F_PORTO 222 +#define F_DPORTO 223 +#define F_USECATCON 224 +#define F_CATCON 225 +#define F_DCATCON 226 +#define F_USECATVEN 227 +#define F_CATVEN 228 +#define F_DCATVEN 229 + +#define F_FROMCLI 231 +#define F_FROMRAGSOC 232 +#define F_TOCLI 233 +#define F_TORAGSOC 234 + +#define F_FROMCATVEN 241 +#define F_FROMCATDESC 242 +#define F_TOCATVEN 243 +#define F_TOCATDESC 244 + diff --git a/lv/lv4900a.uml b/lv/lv4900a.uml new file mode 100644 index 000000000..f2840ab19 --- /dev/null +++ b/lv/lv4900a.uml @@ -0,0 +1,271 @@ +#include "lv4900a.h" + +TOOLBAR "topbar" 0 0 0 2 +#include +ENDPAGE + +PAGE "Aggiornamento prezzi" 0 2 0 0 + +GROUPBOX DLG_NULL 78 5 +BEGIN + PROMPT 1 0 "@bParametri elaborazione" +END + +RADIOBUTTON F_PREZZO 1 56 +BEGIN + PROMPT 1 0 "" + ITEM "1|Prezzo" + ITEM "2|Nolo" + ITEM "3|Entrambi" + FLAGS "Z" +END + +BOOLEAN F_DEFINITIVO +BEGIN + PROMPT 55 1 "Calcolo definitivo" +END + +NUMBER F_PERC 5 1 +BEGIN + PROMPT 2 2 "% variazione " + CHECKTYPE REQUIRED +END + +LIST F_ARROTONDA 1 12 +BEGIN + PROMPT 27 2 "Arrotondamento " + ITEM "0|matematico" + ITEM "1|per eccesso" +END + +NUMBER F_DECIMALS 1 +BEGIN + PROMPT 66 2 "Decimali " + FLAGS "D" +END + +CURRENCY F_MINIMO 5 +BEGIN + PROMPT 2 3 "Aumento minimo " + FLAGS "U" +END + +DATE F_DATA +BEGIN + PROMPT 61 3 "Data " + CHECKTYPE REQUIRED +END + +GROUPBOX DLG_NULL 78 5 +BEGIN + PROMPT 1 5 "@bCategorie" +END + +BOOLEAN F_USEPORTO +BEGIN + PROMPT 2 6 "Porto" + MESSAGE FALSE CLEAR,F_PORTO|CLEAR,F_DPORTO + MESSAGE TRUE ENABLE,F_PORTO|ENABLE,F_DPORTO +END + +STRING F_PORTO 3 +BEGIN + PROMPT 18 6 "" + USE %POR + INPUT CODTAB F_PORTO + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_PORTO CODTAB + OUTPUT F_DPORTO S0 + CHECKTYPE NORMAL +END + +STRING F_DPORTO 50 +BEGIN + PROMPT 25 6 "" + USE %POR KEY 2 + INPUT S0 F_DPORTO + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_PORTO + CHECKTYPE NORMAL +END + +BOOLEAN F_USECATCON +BEGIN + PROMPT 2 7 "Cat. contabile" + MESSAGE FALSE CLEAR,F_CATCON|CLEAR,F_DCATCON + MESSAGE TRUE ENABLE,F_CATCON|ENABLE,F_DCATCON +END + +STRING F_CATCON 3 +BEGIN + PROMPT 18 7 "" + USE CCO + INPUT CODTAB F_CATCON + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CATCON CODTAB + OUTPUT F_DCATCON S0 + CHECKTYPE NORMAL +END + +STRING F_DCATCON 50 +BEGIN + PROMPT 25 7 "" + USE CCO KEY 2 + INPUT S0 F_DCATCON + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_CATCON + CHECKTYPE NORMAL +END + +BOOLEAN F_USECATVEN +BEGIN + PROMPT 2 8 "Cat. vendita" + MESSAGE FALSE CLEAR,F_CATVEN|CLEAR,F_DCATVEN + MESSAGE TRUE ENABLE,F_CATVEN|ENABLE,F_DCATVEN +END + +STRING F_CATVEN 3 +BEGIN + PROMPT 18 8 "" + USE CVE + INPUT CODTAB F_CATVEN + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CATVEN CODTAB + OUTPUT F_DCATVEN S0 + CHECKTYPE NORMAL +END + +STRING F_DCATVEN 50 +BEGIN + PROMPT 25 8 "" + USE CVE KEY 2 + INPUT S0 F_DCATVEN + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_CATVEN + CHECKTYPE NORMAL +END + +GROUPBOX DLG_NULL 78 4 +BEGIN + PROMPT 1 10 "@bClienti" +END + +NUMBER F_FROMCLI 6 +BEGIN + PROMPT 2 11 "Dal " + USE LF_CLIFO + INPUT TIPOCF "C" + INPUT CODCF F_FROMCLI + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Sospeso@C" SOSPESO + OUTPUT F_FROMCLI CODCF + OUTPUT F_FROMRAGSOC RAGSOC + ADD RUN cg0 -1 C + CHECKTYPE NORMAL +END + +STRING F_FROMRAGSOC 50 +BEGIN + PROMPT 25 11 "" + USE LF_CLIFO KEY 2 + INPUT TIPOCF "C" + INPUT RAGSOC F_FROMRAGSOC + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + DISPLAY "Sospeso@C" SOSPESO + COPY OUTPUT F_FROMCLI + ADD RUN cg0 -1 C + CHECKTYPE NORMAL +END + +NUMBER F_TOCLI 6 +BEGIN + PROMPT 2 12 "Al " + COPY USE F_FROMCLI + INPUT TIPOCF "C" + INPUT CODCF F_TOCLI + COPY DISPLAY F_FROMCLI + OUTPUT F_TOCLI CODCF + OUTPUT F_TORAGSOC RAGSOC + ADD RUN cg0 -1 C + CHECKTYPE NORMAL +END + +STRING F_TORAGSOC 50 +BEGIN + PROMPT 25 12 "" + COPY USE F_FROMRAGSOC + INPUT TIPOCF "C" + INPUT RAGSOC F_TORAGSOC + COPY DISPLAY F_FROMRAGSOC + COPY OUTPUT F_TOCLI + ADD RUN cg0 -1 C + CHECKTYPE NORMAL +END + +GROUPBOX DLG_NULL 78 4 +BEGIN + PROMPT 1 14 "@bArticoli" +END + +STRING F_FROMCODART 20 14 +BEGIN + PROMPT 2 15 "Dal " + USE LF_ANAMAG + INPUT CODART F_FROMCODART + DISPLAY "Codice@20" CODART + DISPLAY "Descrizione@50" DESCR + DISPLAY "Sospeso@C" SOSPESO + OUTPUT F_FROMCODART CODART + OUTPUT F_FROMDESCART DESCR + CHECKTYPE NORMAL + ADD RUN ve2 -3 +END + +STRING F_FROMDESCART 50 +BEGIN + PROMPT 25 15 "" + USE LF_ANAMAG KEY 2 + INPUT DESCR F_FROMDESCART + DISPLAY "Descrizione@50" DESCR + DISPLAY "Codice@20" CODART + DISPLAY "Sospeso@C" SOSPESO + COPY OUTPUT F_FROMCODART + CHECKTYPE NORMAL + ADD RUN ve2 -3 +END + +STRING F_TOCODART 20 14 +BEGIN + PROMPT 2 16 "Al " + COPY USE F_FROMCODART + INPUT CODART F_TOCODART + COPY DISPLAY F_FROMCODART + OUTPUT F_TOCODART CODART + OUTPUT F_TODESCART DESCR + CHECKTYPE NORMAL + ADD RUN ve2 -3 +END + +STRING F_TODESCART 50 +BEGIN + PROMPT 25 16 "" + COPY USE F_FROMDESCART + INPUT DESCR F_TODESCART + COPY DISPLAY F_FROMDESCART + COPY OUTPUT F_TOCODART + CHECKTYPE NORMAL + ADD RUN ve2 -3 +END + +ENDPAGE + +ENDMASK +