#include #include #include #include #include #include #include #include #include #include #include "anamag.h" #include "mag.h" #include "stomag.h" #include "umart.h" #include "..\ve\velib03.h" #include "..\ve\veconf.h" #include "mglib02.h" #include "mglib03.h" #include "mg4300.h" #include "mg4frm.h" class TForm_giornalemag : public TForm_stampemg { TConfig *conf_ditta; TArticolo_giacenza * _curr_art; TString16 _codlist,_catven; TArticolo_giacenza &curr_art(); public: bool validate(TForm_item &cf, TToken_string &s); TForm_giornalemag(const char *name,const char *code) ; ~TForm_giornalemag(); }; bool TForm_giornalemag::validate(TForm_item &cf, TToken_string &s) { const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio TString subcode; if (code=="_USER") { } return TForm_stampemg::validate(cf, s); } TArticolo_giacenza &TForm_giornalemag::curr_art() { TRectype & magrec=relation()->lfile(LF_MAG).curr(); if (_curr_art==NULL || _curr_art->codice()!=magrec.get(MAG_CODART) ) { if (_curr_art) delete _curr_art; _curr_art=new TArticolo_giacenza(magrec.get(MAG_CODART)); } return *_curr_art; } TForm_giornalemag::TForm_giornalemag(const char *name,const char *code) : TForm_stampemg(name,code),_curr_art(NULL) { } TForm_giornalemag::~TForm_giornalemag() { if (_curr_art) delete _curr_art; } // STAMPA giornale class TStampa_giornalemag : public TPrint_application { static int freq_stampa; static bool ragg_articoli; static bool ragg_classi; static bool ragg_raggart; static bool ragg_caus; static TCursor * _cur; TArray * _files; TMask * _mask; TForm_giornalemag * _form; // to be moved into TPrint_application protected: virtual bool print_one(int file) {return TRUE;} virtual bool user_create(); virtual bool user_destroy(); virtual bool set_print(int i=1); virtual void set_page(int file,int count) { } public: static const char * mov_getfunct(TVariable_rectype & r); static const char * rmov_getfunct(TVariable_rectype & r); void set_parametri(); TStampa_giornalemag(); }; int TStampa_giornalemag::freq_stampa; bool TStampa_giornalemag::ragg_articoli; bool TStampa_giornalemag::ragg_classi; bool TStampa_giornalemag::ragg_raggart; bool TStampa_giornalemag::ragg_caus; TCursor * TStampa_giornalemag::_cur; TStampa_giornalemag::TStampa_giornalemag() { } bool TStampa_giornalemag::user_create() { _mask = new TMask("mg4300"); _files = new TArray(); _files->add(new TLocalisamfile(LF_RMOVMAG)); _files->add(new TLocalisamfile(LF_MOVMAG)); return TRUE; } bool TStampa_giornalemag::user_destroy() { delete _mask; delete _files; return TRUE; } const char * TStampa_giornalemag::mov_getfunct(TVariable_rectype & r) { TString80 valore; TDate datamov(_cur->relation()->lfile(LF_MOVMAG).get_date("DATACOMP")); TDate datayear(datamov); datayear.set_month(1); datayear.set_day(1); // gestione frequenza switch (freq_stampa ) { case 0: valore << datamov.year() << datamov.month() << ' ' << datamov.day() << ' '; valore << _cur->relation()->lfile(LF_MOVMAG).get("NUMREG"); break; case 1: valore << datamov.year() << datamov.month() << ' ' << datamov.day() << ' '; break; case 7: valore << datamov.year()<< ((datamov.date2julian()-datayear.date2julian())/7) << ' '; break; case 31: valore << datamov.year() << datamov.month() << ' '; break; } return valore; } const char * TStampa_giornalemag::rmov_getfunct(TVariable_rectype & r) { TString80 valore; // gestione ragruppamenti if (ragg_articoli) { valore << _cur->relation()->lfile(LF_ANAMAG).get(ANAMAG_CODART); } else { if (ragg_classi) { valore << _cur->relation()->lfile(LF_ANAMAG).get(ANAMAG_CLASSEFIS); if (ragg_raggart) { valore << _cur->relation()->lfile(LF_ANAMAG).get(ANAMAG_RAGGFIS); } } } if (ragg_caus) { valore << _cur->relation()->lfile(-ALIAS_CAUSALI).get("S8"); } return valore; } void TStampa_giornalemag::set_parametri() { freq_stampa=_mask->get_int(F_FREQ); ragg_articoli=_mask->get_bool(F_RAGGARTICOLI ); ragg_classi=_mask->get_bool(F_CLASSEFISART ); ragg_raggart=_mask->get_bool(F_RAGGFISART ); ragg_caus=_mask->get_bool(F_RAGGCAUS ); } bool TStampa_giornalemag::set_print(int i) { while (TRUE) { if (_mask->run() != K_ENTER) return FALSE; _form = new TForm_giornalemag("mg4300", ""); _cur = _form->cursor(); TVariable_rectype *vrec_rmov= new TVariable_rectype(LF_RMOVMAG); vrec_rmov->add_field(new TVariable_field ("RSORT_FIELD", rmov_getfunct)); TSortedfile *rmovmag= new TSortedfile(LF_RMOVMAG,NULL,"RSORT_FIELD","",2); rmovmag->set_curr(vrec_rmov); //_cur->relation()->replace(rmovmag,1,"CODART==CODART"); TVariable_rectype *vrec_mov= new TVariable_rectype(LF_MOVMAG); vrec_mov->add_field(new TVariable_field ("SORT_FIELD", mov_getfunct)); _cur->relation()->lfile().set_curr(vrec_mov); TString cfilter("ANNOES=="); cfilter << '"'<< _mask->get(F_ANNOES) << '"'; //_cur->setfilter(cfilter); set_parametri(); _form->print(); delete _form; } // while true return TRUE; } int mg4300(int argc, char* argv[]) { TStampa_giornalemag a; a.run(argc,argv,"Stampa giornale di magazzino"); return 0; }