#include #include #include #include #include #include #include #include #include #include #include "co0.h" #include "co0900a.h" #include "clifo.h" #include "comuni.h" #include "doc.h" #include "rdoc.h" #include "..\cg\cglib01.h" #include "..\ve\velib.h" // TAutomask class TAggiornaPrezzi_mask : public TAutomask { protected: bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TAggiornaPrezzi_mask(); virtual ~TAggiornaPrezzi_mask() {}; }; TAggiornaPrezzi_mask::TAggiornaPrezzi_mask() :TAutomask ("co0900a") { } bool TAggiornaPrezzi_mask::on_field_event(TOperable_field& f, TField_event e, long jolly) { return TRUE; } HIDDEN bool browse_file_handler(TMask_field& f, KEY k) { if (k == K_F9) { FILE_SPEC fs; memset(&fs, 0, sizeof(FILE_SPEC)); strcpy(fs.type, ""); strcpy(fs.name, f.get()); xvt_fsys_get_default_dir(&fs.dir); xvt_fsys_save_dir(); if (xvt_dm_post_file_open(&fs, TR("Selezione file")) == FL_OK) { TFilename n; xvt_fsys_convert_dir_to_str(&fs.dir, n.get_buffer(n.size()), n.size()); n.add(fs.name); f.set(n); } xvt_fsys_restore_dir(); f.set_focus(); } return TRUE; } // TSkeleton_application class TAggiornaPrezzi : public TSkeleton_application { TAggiornaPrezzi_mask* _msk; TRelation* _rel; TCursor* _cur; TProgind* _prog; public: virtual bool create(); virtual bool destroy(); virtual void main_loop(); TAggiornaPrezzi() {} }; TAggiornaPrezzi& app() { return (TAggiornaPrezzi&) main_app(); } bool TAggiornaPrezzi::create() { open_files(LF_CLIFO, 0); _msk = new TAggiornaPrezzi_mask(); return TSkeleton_application::create (); } bool TAggiornaPrezzi::destroy() { delete _msk; return TApplication::destroy(); } void TAggiornaPrezzi::main_loop() { // TConfig configfile("co0900.ini"); if (_msk->run() == K_ENTER) { TLog_report log("Errori generazione documenti pianificazione"); bool errors = false; TRelation rel_doc(LF_DOC); TRectype darec(LF_DOC), arec(LF_DOC); const TDate dadata = _msk->get_date(F_DATAINI); const TDate adata = _msk->get_date(F_DATAFIN); const int anno = dadata.year(); const TString8 codnum = _msk->get(F_CODNUM); const TString8 codmer = _msk->get(F_CODMER); const TString80 codart = _msk->get(F_CODART); const real prezzo = _msk->get_real(F_PREZZO); darec.put(DOC_DATADOC, dadata); darec.put(DOC_PROVV, "D"); darec.put(DOC_ANNO, anno); darec.put(DOC_CODNUM, codnum); arec.put(DOC_DATADOC, adata); arec.put(DOC_PROVV, "D"); arec.put(DOC_ANNO, anno); arec.put(DOC_CODNUM, codnum); TString filtro; filtro << "CODNUM='" << codnum << "'"; TCursor cur_doc (&rel_doc, filtro, 3, &darec, &arec); const long items = cur_doc.items(); TProgind progind(items, "Aggiornamento prezzi in corso...", false, true); for (cur_doc = 0; cur_doc.pos() < items; ++cur_doc) { TDocumento doc(cur_doc.curr()); if (codmer == doc.get("MERCATO")) { bool rewrite = false; progind.addstatus(1); for (int i = 1; i <= doc.rows(); i++) { TRiga_documento& row = doc[i]; const TString80 codice(row.get(RDOC_CODART)); if (row.is_articolo() && codice == codart) { rewrite = true; row.put(RDOC_PREZZO, prezzo); } } if (rewrite) { int err = doc.rewrite(); if (err != NOERR) { TString errore; errore.format("Errore %d nell'aggiornamento del documento %ld", err, doc.get_long(DOC_NDOC)); log.log(2, errore); errors = true; } } } } if (errors) { TReport_book buc; buc.add(log); buc.preview(); } } } int co0900(int argc, char* argv[]) { TAggiornaPrezzi main_app; main_app.run(argc, argv, TR("Aggiornamento prezzi")); return TRUE; }