From bd381e482ea9d297125a9da880472a595b1a9745 Mon Sep 17 00:00:00 2001 From: luca Date: Thu, 15 Oct 2009 11:04:08 +0000 Subject: [PATCH] Patch level :10.0 Files correlati : Ricompilazione Demo : [ ] Commento :programma baiseina git-svn-id: svn://10.65.10.50/trunk@19454 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ps/indice_programmi.txt | 3 + ps/ps0830.cpp | 24 +++++ ps/ps0830.h | 1 + ps/ps0830100.cpp | 222 ++++++++++++++++++++++++++++++++++++++++ ps/ps0830100.h | 5 + ps/ps0830100.uml | 66 ++++++++++++ 6 files changed, 321 insertions(+) create mode 100755 ps/ps0830.cpp create mode 100755 ps/ps0830.h create mode 100755 ps/ps0830100.cpp create mode 100755 ps/ps0830100.h create mode 100755 ps/ps0830100.uml diff --git a/ps/indice_programmi.txt b/ps/indice_programmi.txt index 98e115548..bbeef5c6a 100755 --- a/ps/indice_programmi.txt +++ b/ps/indice_programmi.txt @@ -91,6 +91,9 @@ Importazione spese PS0816 AeC Caricamento listino personalizzato per AeC. +PS0830 Baiseina +Esporta listino per caricare le casse + PS0872 Realplast Stampa Listini RealPlast Stampa Produzione RealPlast diff --git a/ps/ps0830.cpp b/ps/ps0830.cpp new file mode 100755 index 000000000..3e950388f --- /dev/null +++ b/ps/ps0830.cpp @@ -0,0 +1,24 @@ +#include + +#include "ps0830.h" + +int main(int argc, char** argv) +{ + const int op = argc < 2 ? 0 : argv[1][1]-'0'; + switch (op) + { + case 0: + ps0830100(argc,argv); // esportazione listino Baiseina + break; + default: + ps0830100(argc,argv); + break; + } + exit(0); + return 0; +} + + + + + diff --git a/ps/ps0830.h b/ps/ps0830.h new file mode 100755 index 000000000..e1c16bcdd --- /dev/null +++ b/ps/ps0830.h @@ -0,0 +1 @@ +int ps0830100(int argc, char* argv[]); diff --git a/ps/ps0830100.cpp b/ps/ps0830100.cpp new file mode 100755 index 000000000..6e598d2d0 --- /dev/null +++ b/ps/ps0830100.cpp @@ -0,0 +1,222 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "..\ve\rcondv.h" +#include "..\mg\codcorr.h" +#include "..\mg\anamag.h" + +#include "ps0830.h" +#include "ps0830100.h" + + +///////////////////////////////////////////////////////////// +// Recordset esporta_listino +///////////////////////////////////////////////////////////// + +class TEsporta_listino_recordset : public TCSV_recordset +{ +protected: + virtual const TToken_string& sheet_head() const; +public: + virtual bool set(unsigned int fld, const TVariant& var); + TEsporta_listino_recordset(); +}; + +const TToken_string& TEsporta_listino_recordset::sheet_head() const +{ + TToken_string& head = get_tmp_string(); + head = "COD_EAN@20|PREZZO@10|CASSA@5|DESCRIZIONE@13|SCPERC@5|SCMON@5|CODOFF@5"; + return head; +} + +bool TEsporta_listino_recordset::set(unsigned int column, const TVariant& var) +{ + TString str; + if (var.is_date()) + { + if (!var.is_empty()) + { + const TDate data = var.as_date(); + str.format("%04d-%02d-%02d", data.year(), data.month(), data.day()); + } + } + else + str << var; + str.replace('|', '/'); + return TCSV_recordset::set(column, TVariant(str)); +} + +TEsporta_listino_recordset::TEsporta_listino_recordset() +: TCSV_recordset("CSV(\":\")") +{ +} + +///////////////////////////////////////////////////////////// +// Mask esporta_listino +///////////////////////////////////////////////////////////// + +class TEsporta_listino_mask : public TAutomask +{ +private: + void serialize(bool bSave); + +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + +public: + void esporta_listino(const bool anteprima); + TEsporta_listino_mask(); + ~TEsporta_listino_mask(); +}; + +void TEsporta_listino_mask::serialize(bool bSave) +{ + const char* defpar = "ps"; + TConfig ini(CONFIG_DITTA, defpar); + for (int i = fields()-1; i >= 0; i--) + { + TMask_field& f = fld(i); + const TFieldref* fr = f.field(); + if (fr != NULL) + { + if (bSave) + fr->write(ini, defpar, f.get()); + else + f.set(fr->read(ini, defpar)); + } + } +} + +TEsporta_listino_mask::TEsporta_listino_mask() + : TAutomask("ps0830100") +{ + serialize(false); +} + +TEsporta_listino_mask::~TEsporta_listino_mask() +{ + serialize(true); +} + +bool TEsporta_listino_mask::on_field_event(TOperable_field& f, TField_event e, long jolly) +{ + switch (f.dlg()) + { + case DLG_ELABORA: + if (e == fe_button) + { + esporta_listino(false); + } + break; + case DLG_PRINT: + if (e == fe_button) + { + esporta_listino(true); + } + break; + case DLG_QUIT: + if (e == fe_button) + { + } + break; + default: + break; + } + return TRUE; +} + +void TEsporta_listino_mask::esporta_listino(const bool anteprima) +{ + // query su listino + TString query; + query << "USE RCONDV\n"; + query << "SELECT (CATVEN=\"DE\") && (RCONDV.PREZZO>\"0\") && (CODCORR.CODARTALT!=\"\")\n"; + query << "JOIN CODCORR INTO CODART==CODRIGA NRIGA=1\n"; + query << "JOIN ANAMAG INTO CODART==CODRIGA\n"; + query << "ORDER BY CODCORR.CODARTALT, ANAMAG.REPARTO[2,3], RCONDV.CODRIGA"; + TISAM_recordset listino(query); + + TEsporta_listino_recordset csv; + + const int items = listino.items(); + + TProgind pi(items, "Estrazione listino...", true, true); + for (bool ok = listino.move_first(); ok; ok = listino.move_next()) + { + if (!pi.addstatus(1)) + break; + csv.new_rec(""); + csv.set(0, listino.get("CODCORR.CODARTALT")); + real prezzo = listino.get(RCONDV_PREZZO).as_real(); + prezzo.round(2); + prezzo = prezzo*100; + csv.set(1, TVariant(prezzo)); + csv.set(2, listino.get("ANAMAG.REPARTO[2,3]")); + csv.set(3, listino.get("ANAMAG.DESCR[1,12]")); + csv.set(4, "0"); + csv.set(5, "0"); + csv.set(6, "0"); + } //for(move_first().. + if (anteprima) + { + //TRecordset_sheet sheet(csv, TR("Elenco di controllo")); + //sheet.run(); + + csv.save_as("ps0830100.xls", fmt_silk); + xvt_sys_goto_url("ps0830100.xls", "open"); + } + else + { + TFilename file = get(F_PATH); + file.add(get(F_NAME)); + csv.save_as(file, fmt_text); + + if (yesno_box("Generazione listino terminata. Procedo con l'invio?")) + { + TFilename appname = "aggiorna.bat"; + if (appname.exist()) + { + TExternal_app a("aggiorna.bat"); + a.run(false,false); + } + else + message_box("Impossibile procedere con l'invio, non esiste l'applicazione aggiorna.bat"); + } + } +} + + + +/////////////////////////////////////////////////////////// +// TEsporta_listino applicazione +/////////////////////////////////////////////////////////// + +class TEsporta_listino_app : public TSkeleton_application +{ + +protected: + virtual bool check_autorization() const {return false;} + virtual const char * extra_modules() const {return "ve";} + virtual void main_loop(); +}; + +void TEsporta_listino_app::main_loop() +{ + open_files(LF_RCONDV, LF_ANAMAG, LF_CODCORR, 0); + TEsporta_listino_mask m; + m.run(); +} + +int ps0830100(int argc, char* argv[]) +{ + TEsporta_listino_app app; + app.run(argc, argv, TR("Esporta listino")); + return 0; +} diff --git a/ps/ps0830100.h b/ps/ps0830100.h new file mode 100755 index 000000000..4ee1964c0 --- /dev/null +++ b/ps/ps0830100.h @@ -0,0 +1,5 @@ +#define F_CODDITTA 101 +#define F_RAGSOC 102 +#define F_PATH 103 +#define F_NAME 104 + diff --git a/ps/ps0830100.uml b/ps/ps0830100.uml new file mode 100755 index 000000000..4b3d8df15 --- /dev/null +++ b/ps/ps0830100.uml @@ -0,0 +1,66 @@ +#include "ps0830100.h" + +PAGE "Esportazione listino" -1 -1 80 14 + +GROUPBOX DLG_NULL 76 3 +BEGIN + PROMPT 2 1 "@bDitta corrente" +END + +NUMBER F_CODDITTA 5 +BEGIN + PROMPT 3 2 "Codice " + FLAGS "FD" + USE LF_NDITTE + INPUT CODDITTA F_CODDITTA + OUTPUT F_RAGSOC RAGSOC + CHECKTYPE REQUIRED +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 23 2 "" + FLAGS "D" +END + +GROUPBOX DLG_NULL 76 4 +BEGIN + PROMPT 2 4 "Esportazione" +END + +STRING F_PATH 255 40 +BEGIN + PROMPT 3 5 "Cartella " + DSELECT + FLAGS "M" + CHECKTYPE REQUIRED + FIELD PATH + WARNING "Selezionare una cartella valida!" +END + +STRING F_NAME 30 +BEGIN + PROMPT 3 6 "Nome file " + FLAGS "M" + CHECKTYPE REQUIRED + FIELD NAME +END + +BUTTON DLG_PRINT 9 2 +BEGIN + PROMPT -13 -1 "~Anteprima" +END + +BUTTON DLG_ELABORA 9 2 +BEGIN + PROMPT -23 -1 "~Esporta" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -33 -1 "" +END + +ENDPAGE + +ENDMASK