#include #include "mglib.h" #include "mg4100.h" class TStampa_listamov : public TSkeleton_application { TArray _files; TStampemg_mask * _mask; TForm * _form; int _codicees; bool _raggmag; TString _daart,_aart,_damag,_amag; TDate _dadata,_adata; protected: virtual bool create(); virtual bool destroy(); virtual void main_loop(); }; bool TStampa_listamov::create() { _mask = new TStampemg_mask("mg4100"); _files.add(new TLocalisamfile(LF_MOVMAG)); _files.add(new TLocalisamfile(LF_RMOVMAG)); _files.add(new TLocalisamfile(LF_ANAMAG)); _files.add(new TLocalisamfile(LF_UMART)); _files.add(new TLocalisamfile(LF_TAB)); return TSkeleton_application::create(); } bool TStampa_listamov::destroy() { delete _mask; return TSkeleton_application::destroy(); } bool TStampa_listamov::filtro_causali(const TRelation* r) { delete _mask; TSkeleton_application::destroy(); return TRUE; } void TStampa_listamov::main_loop() { TRectype darec(LF_RMOVMAG),arec(LF_RMOVMAG); while (_mask->run() == K_ENTER) { if (_mask->magazz_ini().gestmag(TRUE)) { _form = new TForm("mg4100", ""); TSorted_cursor& cur = (TSorted_cursor& )*_form->cursor(); TString sortexp; TString filter; filter << '(' << LF_MOVMAG << "->ANNOES==\""<< _mask->get(F_ANNOES) << "\")"; if (_mask->get(F_DAARTICOLO).not_empty()) filter << "&&(CODART>=\"" << _mask->get(F_DAARTICOLO) << "\")"; if (_mask->get(F_AARTICOLO).not_empty()) filter << "&&(CODART<=\"" << _mask->get(F_AARTICOLO) << "~~~~~~~~~~~~~~~~~~~~\")"; if (_mask->get(F_CAU1).not_empty()) { filtrocausali.cut(0); filtrocausali.add(_mask->get(F_CAU1)); if (_mask->get(F_CAU2).not_empty()) { filtrocausali.add(_mask->get(F_CAU2)); if (_mask->get(F_CAU3).not_empty()) { filtrocausali.add(_mask->get(F_CAU3)); if (_mask->get(F_CAU4).not_empty()) { filtrocausali.add(_mask->get(F_CAU4)); if (_mask->get(F_CAU5).not_empty()) { filtrocausali.add(_mask->get(F_CAU5)); if (_mask->get(F_CAU6).not_empty()) filtrocausali.add(_mask->get(F_CAU6)); } } } } cur.set_filterfunction(filtro_causali); } darec.zero(' '); arec.zero(' '); if (_mask->get(F_ORDINE)=="N") { sortexp="NUMREG|CODART|NRIG"; // trova il record iniziale E finale darec.put(MOVMAG_NUMREG,_mask->get(F_DANUM)); arec.put(MOVMAG_NUMREG,_mask->get(F_ANUM)); _form->find_field('B',odd_page,"HEADER_DATA").disable(); } else { sortexp.cut(0) << LF_MOVMAG << "->DATAREG|NUMREG|CODART|NRIG"; // trova il record iniziale E finale if (_mask->get(F_DADATA).not_empty()) filter << "&&(ANSI(" << LF_MOVMAG <<"->DATACOMP)>=ANSI(" << '"' << _mask->get_date(F_DADATA)<< "\"))"; if (_mask->get(F_ADATA).not_empty()) filter << "&&(ANSI(" << LF_MOVMAG <<"->DATACOMP)<=ANSI(" << '"' << _mask->get_date(F_ADATA) << "\"))"; _form->find_field('B',odd_page,"HEADER_DATA").show(); } cur.change_order(sortexp); cur.setfilter(filter,TRUE); cur.setregion(darec,arec); _form->print(); delete _form; } } // while true } int mg4100(int argc, char* argv[]) { TStampa_listamov a;// derivata da Application e con uso di form a.run(argc,argv,"Stampa lista movimenti"); return 0; }