#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 { return *_sht;} TMaskPs09201(); virtual ~TMaskPs09201(); }; 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 { TMaskPs09201 * _mask; virtual bool check_autorization() const {return false;} virtual const char * extra_modules() const {return "ve";} protected: virtual void main_loop(); virtual bool create(); public: const TMaskPs09201 & mask() const {return *_mask;} virtual ~TStampaProduzionePs0920(); }; void TStampaProduzionePs0920::main_loop() { while (_mask->run() == K_ENTER) { TReport_book book; TCursor_sheet & s = _mask->sheet(); TCursor * cur = s.cursor(); const long items = cur->items(); for (long pos= 0L; pos curr(); TReport rep; TFilename report_name("OrdineProd.rep"); report_name.custom_path(); if (rep.load(report_name)) { TRecordset * r = rep.recordset(); if (r != NULL) { TVariant var; var = _mask->get(F_NUM); 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); } } book.add(rep); } } if (book.pages() > 0) book.print_or_preview(); } } bool TStampaProduzionePs0920::create() { _mask = new TMaskPs09201; return TSkeleton_application:: create(); } TStampaProduzionePs0920::~TStampaProduzionePs0920() { delete _mask; } TStampaProduzionePs0920 & app() { return (TStampaProduzionePs0920&) main_app();} int ps0920100(int argc, char* argv[]) { TStampaProduzionePs0920 a; a.run(argc, argv, "Stampa ordini di produzione"); return 0; }