#include #include #include #include #include #include "ve5200.h" #include "velib.h" class TStatus_mask : public TMask { public: TStatus_mask() : TMask("ve5200") { } virtual ~TStatus_mask() { } }; class TStatus_change : public TSkeleton_application { TArray _file; protected: // TSkeleton_application virtual void main_loop(); void open_files(int logicnum, ...); virtual bool create(); public: TStatus_change() { } virtual ~TStatus_change() { } }; void TStatus_change::open_files(int logicnum, ...) { va_list marker; va_start(marker, logicnum); while (logicnum > 0) { CHECKD(_file.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum); _file.add(new TLocalisamfile(logicnum), logicnum); logicnum = va_arg(marker, int); } } bool TStatus_change::create() { TApplication::create(); open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_OCCAS, LF_INDSP, LF_CFVEN, LF_DOC, LF_RIGHEDOC, LF_ANAMAG, LF_MOVMAG, LF_RMOVMAG, LF_CONDV, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_CESS, 0); dispatch_e_menu(BAR_ITEM(1)); return TRUE; } void TStatus_change::main_loop() { TStatus_mask m; while (m.run() == K_ENTER) { TRelation rel(LF_DOC); m.autosave(rel); const TRectype recini(rel.curr()); const TRectype recfin(rel.curr()); TString filter; filter << DOC_STATO << "==" << m.get(F_INIZIALE); TCursor cur(&rel, filter, 1, &recini, &recfin); const long total = cur.items(); if (total > 0) { TString msg = "Confermare l'aggiornamento di "; msg.add_plural(total, "documento"); if (yesno_box(msg)) { TProgind pi(total, "Elaborazione in corso...", TRUE, TRUE, 60); const char finale = m.get(F_FINALE)[0]; TDocumento* doc = new TDocumento; rel.lfile().set_curr(doc); for (cur = 0; cur.pos() < total && !pi.iscancelled(); ++cur) { doc->put(DOC_STATO, finale); doc->rewrite(); } // Forza l'aggiornamento dell'indice del cursore TEdit_field& ef = m.efield(F_DANUMERO); TCursor* cur = ef.browse()->cursor(); filter = cur->filter(); cur->setfilter(""); cur->setfilter(filter); } } } } int ve5200(int argc, char* argv[]) { TStatus_change a; a.run(argc, argv, "Aggiornamento stato"); return 0; }