#include #include #include #include #include #include "ps0920.h" #include "ps0920100a.h" #include class TMaskPs09201 : public TAutomask { TCursor_sheet * _sht; bool _select_changed; protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); void update_sheet(); public: TCursor_sheet& sheet() const; TMaskPs09201(); virtual ~TMaskPs09201(); }; TCursor_sheet& TMaskPs09201::sheet() const { if (_sht == NULL) // Non si sa mai! ((TMaskPs09201*)this)->update_sheet(); return *_sht; } TMaskPs09201::TMaskPs09201() : TAutomask("ps0920100a"), _sht(NULL) { ((TButton_field&) field(DLG_SELECT)).set_exit_key(0); _select_changed = true; } TMaskPs09201::~TMaskPs09201() { if (_sht != NULL) delete _sht; } bool TMaskPs09201::on_field_event(TOperable_field& o, TField_event e, long jolly) { const int id = o.dlg(); switch (id) { case F_NUM: case F_ANNO: case F_CODCLI: _select_changed = true; break; case DLG_SELECT: if (e == fe_button) { if (_select_changed) update_sheet(); _select_changed = false; _sht->run(); } break; default: break; } return TRUE; } void TMaskPs09201::update_sheet() { if (_sht != NULL) { delete _sht; _sht = NULL; } _select_changed = false; TRelation * r = new TRelation(LF_RIGHEDOC); TRectype from(r->curr()); const long codcli = get_long(F_CODCLI); TString codartfrom; codartfrom.format("%03ld", codcli); from.put(RDOC_CODNUM, get(F_NUM)); from.put(RDOC_ANNO, get(F_ANNO)); from.put(RDOC_PROVV, "D"); from.put(RDOC_CODART, codartfrom); TRectype to(from); TString codartto; codartto.format("%03ld", codcli + 1); to.put(RDOC_CODART, codartto); TCursor * c = new TSorted_cursor(r, "CODNUM|NDOC|NRIGA", "RIGAEVASA!=\"X\"", 2, &from, &to); _sht = new TCursor_sheet(c, " |CODNUM|NDOC|NRIGA|DATACONS|CODART|DESCR", "Selezione articoli", "@1|Ordine@6|N.Doc.@7|N.Riga@6|Data\nConsegna@10|Articolo@20|Descr@50",0,1); _sht->uncheck(-1); } class TStampaProduzionePs0920 : public TSkeleton_application { virtual bool check_autorization() const { return false; } virtual const char * extra_modules() const {return "ve";} protected: virtual void main_loop(); virtual bool create(); public: virtual ~TStampaProduzionePs0920(); }; void TStampaProduzionePs0920::main_loop() { TMaskPs09201 m; while (m.run() == K_ENTER) { TCursor_sheet& s = m.sheet(); if (s.one_checked()) { TReport_book book; TCursor & cur = *s.cursor(); TReport rep; rep.load("OrdineProd.rep"); const long items = cur.items(); for (long pos = 0L; pos < items; pos++) { if (s.checked(pos)) { cur = pos; const TRectype & rec = cur.curr(); TRecordset & r = *rep.recordset(); TVariant var; var = rec.get(RDOC_CODNUM); r.set_var("#S_NUM", var); var = rec.get(RDOC_ANNO); r.set_var("#S_ANNO", var); var = rec.get(RDOC_NDOC); r.set_var("#S_NDOC", var); var = rec.get(RDOC_NRIGA); r.set_var("#S_NRIGA", var); var = rec.get(RDOC_IDRIGA); r.set_var("#S_IDRIGA", var); book.add(rep); } } book.print_or_preview(); } } } bool TStampaProduzionePs0920::create() { return TSkeleton_application:: create(); } TStampaProduzionePs0920::~TStampaProduzionePs0920() { } TStampaProduzionePs0920 & app() { return (TStampaProduzionePs0920&) main_app();} int ps0920100(int argc, char* argv[]) { TStampaProduzionePs0920 a; a.run(argc, argv, "Stampa ordini di produzione"); return 0; }