#include #include #include "movmag.h" #include "rmovmag.h" #include "mglib.h" #include "mg3300.h" class TForm_schedemag : public TForm_stampemg { TRecord_cache * _causali_mag; int _tolivgiac,_tolivart; bool _sottocatmer; TToken_string *_rmov_sortexp; TString *_rmov_raggcond,*_rmov_joinexp; //TMag_livelli * _giaclev,*_artlev; // gestori dei gruppi articolo/giacenza //TDecoder *_giacgrp,*_artgrp; // decodifiche dei gruppi articolo/giacenza TTipo_saldomag _tiposcheda; // tipo scheda bool ragg_exprs(int livart,int livgiac); public: TToken_string& rmov_sortexp() {return *_rmov_sortexp;} TString & rmov_joinexp() {return *_rmov_joinexp;} void set_tiposcheda(const char * tipo); bool validate(TForm_item &cf, TToken_string &s); void setdett_perart(bool percatmer, bool sottocatmer,int livart,int livgiac,bool sudd_mag, bool sudd_dep); void setdett_percatmer(bool sottocat,int livart,int livgiac,bool sudd_mag,bool sudd_dep); void setdett_permag(bool sudd_dep, bool showdett,int livart,int livgiac); TString descr_tiposcheda(); TString nomecampo_tiposcheda(); TForm_schedemag(const char *name,const char *code) ; ~TForm_schedemag(); }; TString TForm_schedemag::descr_tiposcheda() { switch (_tiposcheda) { case s_giac: return ("Giacenza"); case s_acl: return ("A conto lavoro"); case s_incl: return ("In conto lavoro"); case s_prodc: return ("In produzione componenti"); case s_prodf: return ("In produzione finiti"); case s_ordc: return ("Ordinato clienti"); case s_ordf: return ("Ordinato fornitori"); } return ""; } TString TForm_schedemag::nomecampo_tiposcheda() { switch (_tiposcheda) { case s_giac: return (MAG_GIAC); case s_acl: return (MAG_ACL); case s_incl: return (MAG_INCL); case s_prodc: return (MAG_PRODCOMP); case s_prodf: return (MAG_PRODFIN); case s_ordc: return (MAG_ORDC); case s_ordf: return (MAG_ORDF); } return ""; } bool TForm_schedemag::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") { subcode=s.get(); if (subcode=="TIPOSCHEDA") { cf.set(descr_tiposcheda()); return TRUE; } if (subcode=="CODGRUPPOART") { TString valore(relation()->lfile(LF_ANAMAG).get("CODART")); if (_artlev->enabled()) valore.cut(min(valore.len(),_artlev->packed_length(_tolivart))); cf.set(valore); return TRUE; } if (subcode=="GRUPPOART") { TString valore; if (_tolivart==_artlev->last_level()) valore=relation()->lfile(LF_ANAMAG).get("DESCR"); else valore=_artlev->group_descr(relation()->lfile(LF_ANAMAG).get("CODART"),_tolivart); cf.set(valore); return TRUE; } if (subcode=="CODGRUPPOGIAC") { TString levname(_giaclev->name(_tolivgiac)),valore; int lv=0; valore=""; do { TString piece(_giaclev->unpack_grpcode(relation()->lfile(LF_RMOVMAG).get("LIVGIAC"),lv+1)); if (piece.empty()) piece=UNKNOWN_NAME; if (valore.not_empty()) valore << '/'; valore << piece ; } while (++lv<_tolivgiac); cf.set(levname << ' ' << valore); } if (subcode=="GRUPPOGIAC") { TString valore; valore=_giaclev->group_descr(relation()->lfile(LF_RMOVMAG).get("LIVGIAC"),_tolivgiac); cf.set(valore); return TRUE; } if (subcode=="CODCATMER") { TString valore(relation()->lfile(LF_ANAMAG).get("GRMERC")); if (!_sottocatmer) valore.cut(3); cf.set(valore); return TRUE; } if (subcode=="CATMER") { TString valore; if (_sottocatmer) valore=relation()->lfile(-ALIAS_SOTTOCATMER).get("S0"); else valore=relation()->lfile(-ALIAS_CATMER).get("S0"); cf.set(valore); return TRUE; } TCausale_magazzino &cau_r=(TCausale_magazzino &)_causali_mag->get(relation()->lfile(LF_RMOVMAG).get(RMOVMAG_CODCAUS)); TCausale_magazzino &cau_m=(TCausale_magazzino &)_causali_mag->get(relation()->lfile(LF_MOVMAG).get(MOVMAG_CODCAUS)); TCausale_magazzino &cau=(cau_r.codice().blank() ? cau_m : cau_r); if (subcode=="*SEGNOCAUS") { real v(cf.get()); v=v*cau.sgn(_tiposcheda) ; cf.set(v.string()); return TRUE; } if (subcode=="CAUSALERIGA") { cf.set(cau.codice()); return TRUE; } if (subcode=="DESCRCAUSALE") { cf.set(cau.descr()); return TRUE; } } return TForm::validate(cf, s); } bool TForm_schedemag::ragg_exprs(int livart,int livgiac) { TString piece,rest; // *********** int tolivart,tolivgiac; tolivart =livart ? livart : _artlev->last_level() ; tolivgiac=livgiac ? livgiac : _giaclev->last_level(); // sezioni livello codice piece="CODART"; if (_artlev->enabled()) piece << "[1," << _artlev->packed_length(tolivart) <<']'; *_rmov_raggcond<< (_rmov_raggcond->empty()? "":"+" )<add(piece); _rmov_joinexp->cut(0) << piece << "==" << piece; if (livart==0) { piece="LIVGIAC"; if (_giaclev->enabled()) piece << "[1," << _giaclev->packed_length(tolivgiac) <<']'; *_rmov_raggcond << '+' << piece; _rmov_sortexp->add(piece); } return TRUE; } void TForm_schedemag::setdett_percatmer(bool sottocat,int livart,int livgiac,bool sudd_mag,bool sudd_dep) { TForm_subsection &h_c=(TForm_subsection &)find_field('B',odd_page,"HEADER_CATMER"); h_c.enable(); TForm_subsection &h_a=(TForm_subsection &)find_field('B',odd_page,"HEADER_ARTICOLO"); h_a.enable(); TForm_subsection &h_g=(TForm_subsection &)find_field('B',odd_page,"HEADER_GRMOV"); h_g.enable((livart ==0 || livgiac !=0 || sudd_mag)); TForm_subsection &h_l=(TForm_subsection &)find_field('B',odd_page,"HEADER_LIVGIAC"); h_l.enable(_giaclev->enabled() && livgiac !=0 ); TForm_subsection &h_m=(TForm_subsection &)find_field('B',odd_page,"HEADER_MAG"); h_m.enable(sudd_mag ); TForm_subsection &h_d=(TForm_subsection &)find_field('B',odd_page,"HEADER_DEP"); h_d.enable(sudd_dep); TString piece; piece << LF_ANAMAG << "->GRMERC"; if (!sottocat) piece << "[1,3]"; *_rmov_raggcond=piece; _rmov_sortexp->add(piece); ragg_exprs(livart,livgiac); if (sudd_mag) { *_rmov_raggcond="+CODMAG[1,3]"; _rmov_sortexp->add("CODMAG[1,3]"); if (sudd_dep) { *_rmov_raggcond << "+CODMAG[4,5]"; _rmov_sortexp->add("CODMAG[4,5]"); } } TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,"GRUPPI_RMOVMAG"); s.setcondition(*_rmov_raggcond,_strexpr); TString cond; cond << LF_MOVMAG << "->DATAREG"; _rmov_sortexp->add(cond); _rmov_sortexp->add("NUMREG"); _tolivart=livart ? livart :_artlev->last_level() ; _tolivgiac=livgiac ? livgiac :_giaclev->last_level(); _sottocatmer=sottocat; } void TForm_schedemag::setdett_permag(bool sudd_dep,bool show_dett,int livart,int livgiac) { TForm_subsection &h_d=(TForm_subsection &)find_field('B',odd_page,"HEADER_DEP"); h_d.enable(sudd_dep); TForm_subsection &h_a=(TForm_subsection &)find_field('B',odd_page,"HEADER_ARTICOLO"); h_a.enable(show_dett); TForm_subsection &h_g=(TForm_subsection &)find_field('B',odd_page,"HEADER_LIVGIAC"); h_g.enable(_giaclev->enabled() && (livart ==0 || livgiac !=0 )); *_rmov_raggcond="CODMAG[1,3]"; _rmov_sortexp->add("CODMAG[1,3]"); if (sudd_dep) { *_rmov_raggcond << "+CODMAG[4,5]"; _rmov_sortexp->add("CODMAG[4,5]"); if (show_dett) { ragg_exprs(livart,livgiac); } } TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,"GRUPPI_RMOVMAG"); s.setcondition(*_rmov_raggcond,_strexpr); TString cond; cond << LF_MOVMAG << "->DATAREG"; _rmov_sortexp->add(cond); _rmov_sortexp->add("NUMREG"); _tolivart=livart ? livart :_artlev->last_level() ; _tolivgiac=livgiac ? livgiac :_giaclev->last_level(); } void TForm_schedemag::setdett_perart(bool percatmer,bool sottocatmer,int livart,int livgiac,bool sudd_mag,bool sudd_dep) { // raggruppamento MAX fino all'articolo TForm_subsection &h_cm=(TForm_subsection &)find_field('B',odd_page,"HEADER_CATMER"); h_cm.enable(percatmer); TForm_subsection &h_cm2=(TForm_subsection &)find_field('B',odd_page,"HEADER_LIVGIACCATMER"); h_cm2.enable(percatmer); TForm_subsection &h_a=(TForm_subsection &)find_field('B',odd_page,"HEADER_ARTICOLO"); h_a.enable(livart!=0 && !sudd_mag); TForm_subsection &t_a=(TForm_subsection &)find_field('B',odd_page,"TOTALI_GRUPPIART"); t_a.show( livart!=0 && !sudd_mag); // raggruppamento MAX fino alla giacenza TForm_subsection &h_g=(TForm_subsection &)find_field('B',odd_page,"HEADER_GRMOV"); h_g.enable((livart ==0 || livgiac !=0 || sudd_mag)); TForm_subsection &h_l=(TForm_subsection &)find_field('B',odd_page,"HEADER_LIVGIAC"); h_l.enable(_giaclev->enabled() && (livart ==0 || livgiac !=0 )); TForm_subsection &h_m=(TForm_subsection &)find_field('B',odd_page,"HEADER_MAG"); h_m.enable(sudd_mag ); TForm_subsection &h_d=(TForm_subsection &)find_field('B',odd_page,"HEADER_DEP"); h_d.enable(sudd_dep); TForm_subsection &t_s=(TForm_subsection &)find_field('B',odd_page,"TOTALI_GRMOV"); t_s.show(livart==0 || livgiac !=0 || sudd_mag); _tolivart=livart ? livart :_artlev->last_level() ; _tolivgiac=livgiac ? livgiac :_giaclev->last_level(); _sottocatmer=sottocatmer; // settaggio catmer/ragg codice if (livart || percatmer) { TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,"GRUPPI_ARTICOLO"); TString catmercod("GRMERC"),cond; if (percatmer) { catmercod << (sottocatmer ? "[1,3]" :""); cond << catmercod << '+'; } cond << "CODART[1," << _artlev->packed_length(_tolivart) << ']'; s.setcondition(cond,_strexpr); } // settaggio raggruppamenti codice sulla scheda ragg_exprs(livart,livgiac); if (sudd_mag) { *_rmov_raggcond << "+CODMAG[1,3]"; _rmov_sortexp->add("CODMAG[1,3]"); if (sudd_dep) { *_rmov_raggcond << "+CODMAG[4,5]"; _rmov_sortexp->add("CODMAG[4,5]"); } } TForm_subsection &s=(TForm_subsection &)find_field('B',odd_page,"GRUPPI_RMOVMAG"); s.setcondition(*_rmov_raggcond,_strexpr); TString cond; cond << LF_MOVMAG << "->DATAREG"; _rmov_sortexp->add(cond); _rmov_sortexp->add("NUMREG"); } void TForm_schedemag::set_tiposcheda(const char * tipo) { if (*tipo=='G') _tiposcheda=s_giac; if (*tipo=='A') _tiposcheda=s_acl; if (*tipo=='I') _tiposcheda=s_incl; if (*tipo=='P') { if (tipo[1]=='F') _tiposcheda=s_prodf; else _tiposcheda=s_prodc; } if (*tipo=='O') { if (tipo[1]=='F') _tiposcheda=s_ordf; else _tiposcheda=s_ordc; } } TForm_schedemag::TForm_schedemag(const char *name,const char *code) : TForm_stampemg(name,code) { _causali_mag=new TRecord_cache("%CAU"); _tolivgiac=0; _tolivart=0; _rmov_sortexp=new TToken_string; _rmov_joinexp=new TString; _rmov_raggcond=new TString; } TForm_schedemag::~TForm_schedemag() { delete _rmov_sortexp; delete _rmov_joinexp; delete _rmov_raggcond; delete _causali_mag; } // mg3300 Stampa // mg3300 Stampa class TStampa_schede_mag : public TPrint_application { TArray * _files; TMask * _mask; TCursor * _cur; TForm_schedemag *_form; // to be moved into TPrint_application int _codicees; bool _raggmag; protected: void setprint_perarticoli(); void setprint_permagazzini(); virtual bool print_one(int file); virtual bool user_create(); virtual bool user_destroy(); virtual bool set_print(int i=1); public: TStampa_schede_mag() {} }; /*void TStampa_schede_mag::setprint_percatmer() { char subordine=*_mask->get(F_ORDINEART); TRectype darec(LF_RMOVMAG),arec(LF_RMOVMAG); TString cfilter; _cur = _form->cursor(); // setta il filtro sul cursore if (*_mask->get(F_DAMAG)) cfilter << "(CODMAG[1,3]>=" <<'"' << _mask->get(F_DAMAG)<< "\")&&" ; if (*_mask->get(F_AMAG)) cfilter << "(CODMAG[1,3]<=" <<'"' << _mask->get(F_AMAG)<< "\")&&" ; TString catmercode("GRMERC"); if (!FALSE) catmercode << "[1,3]"; if (*_mask->get(F_DACATMER)) cfilter << "(" << LF_ANAMAG << "->" <=" <<'"' << _mask->get(F_DACATMER)<< "\")&&" ; if (*_mask->get(F_ACATMER)) cfilter << "("<< LF_ANAMAG << "->" << catmercode <<"<=" <<'"' << _mask->get(F_ACATMER)<< "\")&&" ; cfilter << "(" << LF_MOVMAG <<"->ANNOES==" <<'"' << _mask->get(F_ANNOES)<< "\")&&" ; if (*_mask->get(F_ADATA)) { TDate d1(_mask->get(F_ADATA)); cfilter << "(ANSI(110->DATAREG)<=" <<'"' << d1.string(ANSI) << "\")&&" ; } if (cfilter.not_empty()) cfilter.cut(cfilter.len()-2); if (*_mask->get(F_DADATA)) { TDate d1(_mask->get(F_DADATA)); // SET conditional section TString cond; cond << "ANSI(" << LF_MOVMAG << "->DATAREG)>=\"" << d1.string(ANSI) << '"'; ((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_INTERESSATI")).setcondition(cond,_strexpr); cond.cut(0) << "ANSI(" << LF_MOVMAG << "->DATAREG)<\"" << d1.string(ANSI) << '"'; ((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_PRECEDENTI")).setcondition(cond,_strexpr); } _form->set_tiposcheda(_mask->get(F_SCHEDA)); // abilita/disabilita le sezioni dei totali _form->setdett_percatmer(FALSE, _mask->get_int(F_TOLIVELLOART), _mask->get_int(F_TOLIVELLOGIAC), _mask->get_bool(F_SUDDIV_MAGAZZINI), _mask->get_bool(F_SUDDIV_DEPOSITI)); darec.put("CODART",_mask->get(F_DAART)); arec.put("CODART",_mask->get(F_AART)); ((TSorted_cursor *)_cur)->change_order(_form->rmov_sortexp()); _cur->setfilter(cfilter,TRUE); _cur->setregion(darec,arec); }*/ void TStampa_schede_mag::setprint_permagazzini() { char subordine=*_mask->get(F_ORDINEART); TRectype darec(LF_RMOVMAG),arec(LF_RMOVMAG); TString cfilter; _form->set_tiposcheda(_mask->get(F_SCHEDA)); _cur = _form->cursor(); // filtering from/to MAGS if (*_mask->get(F_DAMAG)) cfilter << "(CODMAG[1,3]>=" <<'"' << _mask->get(F_DAMAG)<< "\")&&" ; if (*_mask->get(F_AMAG)) cfilter << "(CODMAG[1,3]<=" <<'"' << _mask->get(F_AMAG)<< "\")&&" ; cfilter << "(" << LF_MOVMAG <<"->ANNOES==" <<'"' << _mask->get(F_ANNOES)<< "\")&&" ; // filtering from/to DATA if (*_mask->get(F_ADATA)) { TDate d1(_mask->get(F_ADATA)); cfilter << "(ANSI(110->DATAREG)<=" <<'"' << d1.string(ANSI) << "\")&&" ; } if (*_mask->get(F_DADATA)) { TDate d1(_mask->get(F_DADATA)); TString cond; cond << "ANSI(" << LF_MOVMAG << "->DATAREG)>=\"" << d1.string(ANSI) << '"'; ((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_INTERESSATI")).setcondition(cond,_strexpr); cond.cut(0) << "ANSI(" << LF_MOVMAG << "->DATAREG)<\"" << d1.string(ANSI) << '"'; ((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_PRECEDENTI")).setcondition(cond,_strexpr); } // Imposta i livelli di dettaglio della scheda _form->setdett_permag( _mask->get_bool(F_DETTAGLIOMAG), _mask->get_bool(F_DETTAGLIODEP), _mask->get_int(F_TOLIVELLOART), _mask->get_int(F_TOLIVELLOGIAC)); // filtering from/to ART darec.put("CODART",_mask->get(F_DAART)); arec.put("CODART",_mask->get(F_AART)); // filtering ONLY NEGATIVES if (*_mask->get(F_FILTRO)=='N') { TForm_subsection &s=((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_PRECEDENTI")); TString cond; cond << '(' << s.condition() << ")&&(STR("<< LF_MAG << "->" << _form->nomecampo_tiposcheda() << "<0))"; s.setcondition(cond,_strexpr); TForm_subsection &s2=((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_INTERESSATI")); cond.cut(0) << '(' << s2.condition() << ")&&(STR("<< LF_MAG << "->" << _form->nomecampo_tiposcheda() << "<0))"; s2.setcondition(cond,_strexpr); } // prepare cursor to print.... ((TSorted_cursor *)_cur)->change_order(_form->rmov_sortexp()); if (cfilter.not_empty()) cfilter.cut(cfilter.len()-2); TLocalisamfile *mag=new TLocalisamfile(LF_MAG); mag->setkey(2); TString mag_joinexp; mag_joinexp << "ANNOES==" << _mask->get(F_ANNOES) << "|CODMAG==CODMAG|CODART==CODART|LIVELLO==LIVGIAC"; _cur->relation()->replace(mag,1,mag_joinexp); _cur->setfilter(cfilter,TRUE); _cur->setregion(darec,arec); } // ORDINAMENTO per articoli void TStampa_schede_mag::setprint_perarticoli() { TRectype darec(LF_ANAMAG),arec(LF_ANAMAG); TString cfilter,filter; _form->set_tiposcheda(_mask->get(F_SCHEDA)); char subordine=*_mask->get(F_ORDINEART); _cur = _form->cursor(); // filtering ANNOES filter << '(' << LF_MOVMAG << "->ANNOES==" << _mask->get(F_ANNOES)<< ")&&" ; // filtering from/to MAGS if (*_mask->get(F_DAMAG)) filter << "(CODMAG[1,3]>=" <<'"' << _mask->get(F_DAMAG)<< "\")&&" ; if (*_mask->get(F_AMAG)) filter << "(CODMAG[1,3]<=" <<'"' << _mask->get(F_AMAG)<< "\")&&" ; // filtering from/to DATA if (*_mask->get(F_DADATA)) { TDate d1(_mask->get(F_DADATA)); TString cond; cond << "ANSI(" << LF_MOVMAG << "->DATAREG)>=\"" << d1.string(ANSI) << '"'; ((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_INTERESSATI")).setcondition(cond,_strexpr); cond.cut(0) << "ANSI(" << LF_MOVMAG << "->DATAREG)<\"" << d1.string(ANSI) << '"'; ((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_PRECEDENTI")).setcondition(cond,_strexpr); } if (*_mask->get(F_ADATA)) { TDate d1(_mask->get(F_ADATA)); filter << "(ANSI(110->DATAREG)<=" <<'"' << d1.string(ANSI) << "\")&&" ; } // filtering ONLY NEGATIVES if (*_mask->get(F_FILTRO)=='N') { TForm_subsection &s=((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_PRECEDENTI")); TString cond; cond << '(' << s.condition() << ")&&(STR("<< LF_MAG << "->" << _form->nomecampo_tiposcheda() << "<0))"; s.setcondition(cond,_strexpr); TForm_subsection &s2=((TForm_subsection &)_form->find_field('B',odd_page,"MOVS_INTERESSATI")); cond.cut(0) << '(' << s2.condition() << ")&&(STR("<< LF_MAG << "->" << _form->nomecampo_tiposcheda() << "<0))"; s2.setcondition(cond,_strexpr); } // Imposta i livelli di dettaglio della scheda switch (subordine) { case 'C': _cur->setkey(1); darec.put("CODART",_mask->get(F_DAART)); arec.put("CODART",_mask->get(F_AART)); _form->setdett_perart(FALSE,FALSE, _mask->get_int(F_TOLIVELLOART), _mask->get_int(F_TOLIVELLOGIAC), _mask->get_bool(F_SUDDIV_MAGAZZINI), _mask->get_bool(F_SUDDIV_DEPOSITI)); break; case 'D': _cur->setkey(2); darec.put("DESCR",_mask->get(F_DADES)); arec.put("DESCR",_mask->get(F_ADES)); _form->setdett_perart(FALSE,FALSE, _mask->get_int(F_TOLIVELLOART), _mask->get_int(F_TOLIVELLOGIAC), _mask->get_bool(F_SUDDIV_MAGAZZINI), _mask->get_bool(F_SUDDIV_DEPOSITI)); case 'M': _cur->setkey(3); darec.put("GRMERC",_mask->get(F_DACATMER)); arec.put("GRMERC",_mask->get(F_ACATMER)); if (*_mask->get(F_AART)) cfilter << "(CODART<=" <<'"' << _mask->get(F_AART)<< TString(20,(char)127)<< "\")&&" ; if (*_mask->get(F_DAART)) cfilter << "(CODART>=" <<'"' << _mask->get(F_DAART) << "\")&&" ; _form->setdett_perart(TRUE,FALSE, _mask->get_int(F_TOLIVELLOART), _mask->get_int(F_TOLIVELLOGIAC), _mask->get_bool(F_SUDDIV_MAGAZZINI), _mask->get_bool(F_SUDDIV_DEPOSITI)); break; } // prepare cursor's relation.... TRelation *aux=new TRelation (LF_RMOVMAG); aux->add(LF_MOVMAG,"NUMREG==NUMREG"); if (filter.not_empty()) filter.cut(filter.len()-2); TSortedfile *rmovmag= new TSortedfile(LF_RMOVMAG,aux,_form->rmov_sortexp(),filter,2); _cur->relation()->replace(rmovmag,1,_form->rmov_joinexp()); TLocalisamfile *mag=new TLocalisamfile(LF_MAG); mag->setkey(2); TString mag_joinexp; mag_joinexp << "ANNOES==" << _mask->get(F_ANNOES) << "|CODMAG==CODMAG|CODART==CODART|LIVELLO==LIVGIAC"; _cur->relation()->replace(mag,2,mag_joinexp); if (cfilter.not_empty()) cfilter.cut(cfilter.len()-2); _cur->setfilter(cfilter); _cur->setregion(darec,arec); } bool TStampa_schede_mag::set_print(int i) { while (TRUE) { if (_mask->run() != K_ENTER) return FALSE; if (*_mask->get(F_ORDINE)=='A') { _form = new TForm_schedemag("mg3300a", ""); setprint_perarticoli(); } else if (*_mask->get(F_ORDINE)=='M') { _form = new TForm_schedemag("mg3300b", ""); setprint_permagazzini(); } _form->print(); delete _form; } // while true return TRUE; } bool TStampa_schede_mag::user_create() { _mask = new TMask("mg3300"); _files= new TArray; _files->add(new TLocalisamfile(LF_RMOVMAG)); _files->add(new TLocalisamfile(LF_MOVMAG)); _files->add(new TLocalisamfile(LF_MAG)); _files->add(new TLocalisamfile(LF_TABCOM)); return TRUE; } bool TStampa_schede_mag::user_destroy() { delete _files; delete _mask; return TRUE; } bool TStampa_schede_mag ::print_one(int file) { return TRUE; } int mg3300(int argc, char* argv[]) { TStampa_schede_mag a;// derivata da Application e con uso di form a.run(argc,argv,"Stampa schede di magazzino"); return 0; }