// Setta il mese liquidazione sui movimenti del registro vendite #include #include #include #include #include "cglib01.h" #include #include "cg1300.h" #include "cg1308.h" class TImposta_meseliq : public TSkeleton_application { protected: static bool prot_handler(TMask_field& f, KEY k); virtual void main_loop(); public: TImposta_meseliq () {}; virtual ~TImposta_meseliq() {}; }; bool TImposta_meseliq::prot_handler(TMask_field& f, KEY k) { if (k == K_ENTER && f.to_check(k)) { const TMask& m = f.mask(); const long da = m.get_long(F_DA); const long a = m.get_long(F_A); if (a < da) return f.error_box(TR("L'intervallo dei numeri protocollo specificati non e' valido.")); } return TRUE; } void TImposta_meseliq::main_loop() { TString expr, es, reg; TDate d(TODAY); TMask m("cg1300e"); m.set_handler(F_A, prot_handler); m.set_handler(F_DA, prot_handler); TRelation r(LF_MOV); TCursor c(&r); TLocalisamfile& fl = c.file(); TEsercizi_contabili esc; while (m.run() != K_QUIT) { const int meseliq = m.get_int(F_PASS); d.set_year(m.get_int(F_ANNO)); es.format("%04d",esc.date2esc(d)); expr.format("(ANNOES==\"%s\")&&(REG==\"%s\")&&(STR((STR(PROTIVA))>=%ld))&&(STR((STR(PROTIVA))<=%ld))", (const char*)es, (const char*) m.get(F_REG), m.get_long(F_DA), m.get_long(F_A)); c.setfilter(expr); // Setta l'espressione filtro const long items = c.items(); if (items == 0) continue; TProgind* pi = new TProgind(c.items(), TR("Aggiornamento mese liquidazione in corso..."), FALSE, TRUE, 50); for (c = 0L; c.pos() < items; c+=1L) //scorre i movimenti e li aggiorna { if (c.pos() & 0x7F) pi->addstatus(1L); fl.put(MOV_MESELIQ,meseliq); fl.rewrite(); } delete pi; warning_box(FR("Aggiornati %ld records."),c.items()); } } int setta_meseliq(int argc, char* argv[]) { TImposta_meseliq a; a.run(argc, argv, TR("Impostazione mese liq.")); return 0; }