diff --git a/ve/ve1100.cpp b/ve/ve1100.cpp index ea54d303d..0feb673b3 100755 --- a/ve/ve1100.cpp +++ b/ve/ve1100.cpp @@ -14,7 +14,51 @@ #include "ve1100.h" #include "ve0100b.h" + +////////////////////////////////////////////////////////////////////////////////////////////// +// classe TStampa_Doc_Vendita customizzata dalla TApplication per l'applicazione principale +////////////////////////////////////////////////////////////////////////////////////////////// + +enum behaviour { + skip, + go, + cancel +}; + +class TDocVen_Form; + +class TStampa_Doc_Vendita: public TApplication { + TString _codnum; // codice di numerazione + TString _provv; // stampa provvisioria + int _anno; // anno della documentazione + int _ncopie, _base_page_no; // numero di copie per ogni documento, numero della pagina base per stampare il numero di pagina + long _dalnum, _alnum; // estremi di numerazione dei documenti + TDate _dadata, _adata; // estremi di data dei documenti + bool _order_by_num; // flag che indica se e' stato selezionato l'ordine principale per numero documento + bool _interattivo; // flag che indica se il prog. funziona in interattivo o in batch + bool _definitiva; // flag che indica se la stampa è definitiva o no + TRelation *_firmrel; // puntatore alla relazione che gestisce i dati della ditta corrente + TDocVen_Form *_form; // puntatore al form di stampa +protected: + virtual bool create(void); + virtual bool destroy(void); + virtual bool menu(MENU_TAG); + int select(void); + virtual void print(void); + virtual void on_firm_change(void); + virtual behaviour on_module_change(const TString &, TString &); // funzione chiamata ad ogni cambio modulo durante la stampa + virtual bool query_final_print(void); // funzione chiamata all'inizializzazione per sapere se la stampa è definitiva + static bool date2num_handler(TMask_field& f, KEY key); + static bool range_handler(TMask_field& f, KEY key); + static bool filter_rows(const TRelation * r); +public: + int base_no() { return _base_page_no;} +}; + + +inline TStampa_Doc_Vendita& app() { return (TStampa_Doc_Vendita&) main_app(); } + //////////////////////////////////////////////////////////////////////////// // classe TDocVen_Form customizzata dalla Form per i documenti di vendita //////////////////////////////////////////////////////////////////////////// @@ -51,6 +95,7 @@ protected: public: const TString &get_module_code() { return _module; } // ritorna il codice del modulo di carta TString_array & exclude_list() { return _exclude_array; } + TDocumentoEsteso* doc() { return _doc; } TDocVen_Form(const char *, TRelation &, TDocumentoEsteso * ); virtual ~TDocVen_Form(); }; @@ -718,7 +763,7 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) { // Messaggio per stampare il numero di pagina corrente if (code== "_PAGENO") { - TString16 pg; pg << int(printer().getcurrentpage()); + TString16 pg; pg << int(printer().getcurrentpage() - app().base_no()); cf.set(pg); cf.put_paragraph(pg); cf.set(""); } @@ -729,42 +774,6 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) { // classe TStampa_Doc_Vendita customizzata dalla TApplication per l'applicazione principale ////////////////////////////////////////////////////////////////////////////////////////////// -enum behaviour { - skip, - go, - cancel -}; - - - -class TStampa_Doc_Vendita: public TApplication { - TString _codnum; // codice di numerazione - TString _provv; // stampa provvisioria - int _anno; // anno della documentazione - int _ncopie; // numero di copie per ogni documento - long _dalnum, _alnum; // estremi di numerazione dei documenti - TDate _dadata, _adata; // estremi di data dei documenti - bool _order_by_num; // flag che indica se e' stato selezionato l'ordine principale per numero documento - bool _interattivo; // flag che indica se il prog. funziona in interattivo o in batch - bool _definitiva; // flag che indica se la stampa è definitiva o no - TRelation *_firmrel; // puntatore alla relazione che gestisce i dati della ditta corrente - TDocVen_Form *_form; // puntatore al form di stampa -protected: - virtual bool create(void); - virtual bool destroy(void); - virtual bool menu(MENU_TAG); - int select(void); - virtual void print(void); - virtual void on_firm_change(void); - virtual behaviour on_module_change(const TString &, TString &); // funzione chiamata ad ogni cambio modulo durante la stampa - virtual bool query_final_print(void); // funzione chiamata all'inizializzazione per sapere se la stampa è definitiva - static bool date2num_handler(TMask_field& f, KEY key); - static bool range_handler(TMask_field& f, KEY key); - static bool filter_rows(const TRelation * r); -}; - -inline TStampa_Doc_Vendita& app() { return (TStampa_Doc_Vendita&) main_app(); } - bool TStampa_Doc_Vendita::date2num_handler(TMask_field& f, KEY key) { TMask& m = f.mask(); @@ -949,6 +958,7 @@ void TStampa_Doc_Vendita::print() { TProgind* pi; if (!is_vis) pi = new TProgind(cur.items(),"Stampa documenti in corso...",FALSE,TRUE,10); + _base_page_no = 0; for (cur= 0; cur.pos()addstatus(1L); @@ -993,7 +1003,12 @@ void TStampa_Doc_Vendita::print() { fcur.set_filterfunction(filter_rows); // setta il filtro per escludere alcuni tipi riga indicati nel form // Da implementare quando verra gestito il numero di copie for (int j=0; jprint(); // stampa il form corrente + _base_page_no = printer().getcurrentpage() -1; // Numero base della pagina + _form->doc()->summary_reset(); + _form->doc()->scadenze_reset(); + } if (_definitiva && (numerazione_definitiva(doc) != NOERR)) { // se la stampa è definitiva viene lanciata la procedura di rinumerazione if (_interattivo) error_box("Non è possibile completare la procedura di numerazione definitiva dei documenti"); break;