diff --git a/ve/ve1100.cpp b/ve/ve1100.cpp index 3a87b548d..9d9fd0400 100755 --- a/ve/ve1100.cpp +++ b/ve/ve1100.cpp @@ -16,7 +16,7 @@ #include "ve1100.h" #include "ve0100b.h" #include "velib.h" - +#include "sconti.h" #define LISTADOC "listadoc" #define Usage "Usage: ve1 -0 {[codnum anno {D|P} dalnum alnum {D|P} [ncopie]] | [L]}" @@ -76,9 +76,10 @@ class TDocumento_form : public TForm TRelation &_firmrel; // relazione di gestione dei dati della ditta corrente TString _module; // codice del modulo di carta associato a questo al form TCliFor *_cliente; // oggetto per le informazioni sul cliente - TCond_vendita * _condv; + TCond_vendita *_condv; // TString_array _exclude_array; // array di coppie tipo/articolo da escludere dalla stampa TDocumentoEsteso * _doc; // Documento da stampare + int _final_status; // stato finale del documento bool _valid, _cli_loaded; // flag che indica se il form e' valido | se l'oggetto cliente è già stato caricato bool _is_lista; // flag che indica se il form e' usato per la stampa della lista documenti TString_array _group_decimals; // Array di TToken_string per ogni gruppo definito in GENERAL. @@ -115,6 +116,7 @@ public: void print_documento(); bool valid() { return _valid; } bool doc_arrange(); + const int final_status() { return _final_status; } int ncopie() { return _doc->tipo().ncopie(); } const TString &get_module_code() { return _module; } // ritorna il codice del modulo di carta TString_array & exclude_list() { return _exclude_array; } @@ -151,6 +153,7 @@ TDocumento_form::TDocumento_form(TRectype&/*TDocumentoEsteso**/ doc, TRelation& return; } TConfig config(profilo, "STAMPA"); // apre il file di configurazione del profilo + _final_status = config.get_int("STATOFINALE"); TToken_string stati((const char*)config.get("STATIVALIDI"), ','); // legge gli stati validi di questo tipo di documento if (definitiva && (stati.get_pos(doc.get(DOC_STATO))== -1)) // se lo stato del doc. corrente non è valido... @@ -173,9 +176,9 @@ TDocumento_form::TDocumento_form(TRectype&/*TDocumentoEsteso**/ doc, TRelation& _cliente= new TCliFor; _cli_loaded= FALSE; _is_lista = FALSE; - _condv = new TCond_vendita(_cliente); - _doc = new TDocumentoEsteso(doc, _condv); // istanzia TDocumentoEsteso + + _doc = new TDocumentoEsteso(doc,_condv); // istanzia TDocumentoEsteso _docfile = new TDocisamfile(_doc); _rdocfile = new TRDocisamfile(_doc); relation()->replace(_docfile,0); @@ -1060,13 +1063,12 @@ void TStampaDoc_application::print_selected() _form->doc().summary_reset(); _form->doc().scadenze_reset(); } - delete _form; - - if (_definitiva && (numerazione_definitiva(doc) != NOERR)) + if (_definitiva && (numerazione_definitiva(doc,_form->final_status()) != 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; } + delete _form; } // Non viene fatta la delete documento perche' gia' presente nella distruzione del cursore, avendo fatto una set_curr()