#include "ve5.h" #include "velib.h" #include "ve5800a.h" #include #include #include #include #include #include #include #include #include #include #include #include "velib04.h" #include "../mg/mglib.h" /////////////////////////////////////////////////////////// // Maschera principale /////////////////////////////////////////////////////////// class TRaggruppamento_documenti_mask : public TAutomask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TRaggruppamento_documenti_mask(); virtual ~TRaggruppamento_documenti_mask() {} }; bool selectfunc(const TRelation* r); TRaggruppamento_documenti_mask::TRaggruppamento_documenti_mask() : TAutomask("ve5800a") { TEdit_field & da = efield(F_FRNDOC); TCursor * cur_da = da.browse()->cursor(); cur_da->set_filterfunction(selectfunc); //nome funzione TEdit_field & a = efield(F_FRNDOC); TCursor * cur_a = a.browse()->cursor(); cur_a->set_filterfunction(selectfunc); //nome funzione }; bool TRaggruppamento_documenti_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { case DLG_SAVEREC: if (e == fe_button) stop_run(K_AUTO_ENTER); break; default: break; } return TRUE; } /////////////////////////////////////////////////////////// // Applicazione principale /////////////////////////////////////////////////////////// class TRaggruppamento_documenti : public TSkeleton_application { TMask *_mask; public: void set_mask(TMask * m) { _mask = m; } const TMask * get_mask() const { return _mask; } void raggruppa_doc(const TMask & m); virtual void main_loop(); }; TRaggruppamento_documenti & app() { return (TRaggruppamento_documenti &)main_app(); } void TRaggruppamento_documenti::raggruppa_doc(const TMask & m) { TRaggruppamento_documento ragg(m.get(F_CODICE_ELAB)); TLista_documenti doc_ingresso; TLista_documenti doc_uscita; TToken_string tipi_iniziali; TToken_string stati_iniziali; TString numerazione_iniziale = ragg.codice_numerazione_iniziale(); const int anno = m.get_int(F_ANNO); const long dal_ndoc = m.get_long(F_FRNDOC); const long al_ndoc = m.get_long(F_TONDOC); ragg.tipi_stati_iniziali(tipi_iniziali, stati_iniziali); if (doc_ingresso.read('D', ' ', 0L, anno, tipi_iniziali, stati_iniziali, nulldate, nulldate, numerazione_iniziale, dal_ndoc, al_ndoc) > 0) { if (ragg.elabora(doc_ingresso, doc_uscita, today)) { if (doc_uscita.write(true) == NOERR) { if (doc_ingresso.rewrite() != NOERR) fatal_box(TR("Errore nella scrittura documenti d'ingresso")); } else fatal_box(TR("Errore nella scrittura documenti di destinazione")); } } } bool selectfunc(const TRelation* r) { const TMask * m = app().get_mask(); TRaggruppamento_documento ragg(m->get(F_CODICE_ELAB)); const TRectype & curr = r->lfile().curr(); return ragg.doc_ok(curr); }; void TRaggruppamento_documenti::main_loop() { open_files(LF_TAB, LF_TABCOM, LF_DOC, LF_RIGHEDOC, LF_MOVMAG, NULL); open_files(LF_ANAMAG, LF_CLIFO, LF_CFVEN, LF_OCCAS, LF_RMOVMAG, NULL); TRaggruppamento_documenti_mask m; m.set(F_CODDITTA, prefix().get_codditta(), true); set_mask(&m); while (m.run()==K_ENTER) raggruppa_doc(m); } int ve5800(int argc, char** argv) { TRaggruppamento_documenti app; app.run(argc, argv, TR("Raggruppamento documenti")); return 0; }