#include #include "../ve/velib.h" #include #include #include #include #include #include #include #include "lv2600a.h" #include /////////////////////////////////////////////////////////// // TAcquisizione_msk /////////////////////////////////////////////////////////// class TAcquisizione_msk: public TAutomask { protected: virtual bool on_field_event(TOperable_field& o,TField_event e,long jolly); public: TAcquisizione_msk(); }; bool TAcquisizione_msk::on_field_event(TOperable_field& f,TField_event e,long jolly) { switch (f.dlg()) { //giochetto per avere la lista dei files validi nella directory di trasferimento! case F_NAME: if (e == fe_button) { TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"), HR("File@32")); TFilename path = get(F_PATH); path.add("*.csv"); //files delle testate list_files(path, as.rows_array()); TFilename name; FOR_EACH_ARRAY_ROW(as.rows_array(), i, row) { name = *row; *row = name.name(); } if (as.run() == K_ENTER) { f.set(as.row(as.selected())); } } break; default: break; } return true; } TAcquisizione_msk::TAcquisizione_msk():TAutomask("lv2600a") { } /////////////////////////////////////////////////////////// // TAcquisizione_cache /////////////////////////////////////////////////////////// class TAcquisizione_cache : TCache { TString4 _codnum,_tipodoc,_stato; protected: virtual void discarding(const THash_object* obj); virtual TObject* key2obj(const char* key); public: TDocumento& doc(const TDate& gg, const long cc); TAcquisizione_cache(); }; void TAcquisizione_cache::discarding(const THash_object* obj) { TDocumento& doc = (TDocumento&)obj->obj(); doc.rewrite(); } TObject* TAcquisizione_cache::key2obj(const char* key) { TToken_string chiave(key); const TDate datadoc=chiave.get(); const long codcf=chiave.get_long(); TString query; query<< "USE DOC KEY 2 SELECT STATO=#STATO\n"; for (int i=0;i<2; i++) { query << (i?"TO":"FROM") << " " << "TIPOCF=C CODCF=#CODCF ANNO=#ANNO DATADOC=#DATADOC CODNUM=#CODNUM\n"; } TISAM_recordset rset(query); rset.set_var("#STATO",TVariant(_stato)); rset.set_var("#CODCF",codcf); rset.set_var("#ANNO",long(datadoc.year())); rset.set_var("#DATADOC",datadoc); rset.set_var("#CODNUM",TVariant(_codnum)); TDocumento* doc=NULL; if (rset.move_first()) { doc=new TDocumento(rset.cursor()->curr()); } else { doc=new TDocumento('D',datadoc.year(),_codnum,0); doc->put(DOC_TIPODOC,_tipodoc); doc->put(DOC_STATO,_stato); doc->put(DOC_DATADOC,datadoc); doc->put(DOC_TIPOCF,"C"); doc->put(DOC_CODCF,codcf); } return doc; } TDocumento& TAcquisizione_cache::doc(const TDate& gg, const long cc) { TString16 key; key << gg.date2ansi() << '|' << cc; return *(TDocumento*)objptr(key); } TAcquisizione_cache::TAcquisizione_cache() : TCache(17) { TConfig cfg(CONFIG_DITTA,"lv"); _codnum=cfg.get("NUM_RIT",NULL,0); _tipodoc=cfg.get("TIPOOC_RIT",NULL,0); _stato=cfg.get("STATO_RIT",NULL,0); } /////////////////////////////////////////////////////////// // TAcquisizione_lavanderie_app /////////////////////////////////////////////////////////// class TAcquisizione_lavanderie_app : public TSkeleton_application { protected: virtual void main_loop(); }; void TAcquisizione_lavanderie_app::main_loop() { TAcquisizione_msk msk; while (msk.run()!=K_QUIT) { TFilename name; name=msk.get(F_PATH); name.add(msk.get(F_NAME)); TAcquisizione_cache ca; TCSV_recordset csvbolle(name); for(bool ok=csvbolle.move_first(); ok; ok=csvbolle.move_next()) { const long cli = csvbolle.get(0).as_int(); const TDate dtdoc = csvbolle.get(1).as_date(); const TString80 codart = csvbolle.get(2).as_string(); const long qta = csvbolle.get(3).as_int(); const TString4 um= csvbolle.get(4).as_string(); bool found=false; TDocumento& doc = ca.doc(dtdoc,cli); for (int i=1; doc.rows(); i++) { TRiga_documento& rdoc = doc[i]; if (rdoc.get(RDOC_CODART)==codart) { long qtardoc = rdoc.get_long(RDOC_QTA); qtardoc+=qta; rdoc.put(RDOC_QTA,qtardoc); found=true; break; } } if (found==false) { TRiga_documento& rdoc = doc.new_row("01"); rdoc.put(RDOC_CODART,codart); rdoc.put(RDOC_QTA,qta); } } } } int lv2600(int argc, char *argv[]) { TAcquisizione_lavanderie_app a; a.run (argc, argv, "Acquisizione bolle di rientro/ritiro"); return TRUE; }