Terminata gestione statti in stampa

git-svn-id: svn://10.65.10.50/trunk@5100 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1997-08-22 15:39:50 +00:00
parent 443b5f0e63
commit d96cba6d93
3 changed files with 25 additions and 28 deletions

View File

@ -5,11 +5,11 @@
#include <tabutil.h> #include <tabutil.h>
#include "ve0100b.h" #include "ve0100b.h"
int numerazione_definitiva(TDocumento& doc, const int final_status) int numerazione_definitiva(TDocumento& doc)
{ {
if (doc.get("PROVV") == "D") if (doc.get("PROVV") == "D" && doc.stampabile())
{ {
doc.put("STATO",final_status); // Se e' gia' in definitiva aggiorna solo lo stato doc.stato(doc.tipo().stato_finale_stampa()); // Se e' gia' in definitiva aggiorna solo lo stato
return doc.rewrite(); return doc.rewrite();
} }
@ -18,7 +18,7 @@ int numerazione_definitiva(TDocumento& doc, const int final_status)
TDocumento bak_doc; TDocumento bak_doc;
bak_doc = doc; // Setta il flag di nuovo documento bak_doc = doc; // Setta il flag di nuovo documento
bak_doc.put("STATO",final_status); bak_doc.put("STATO",doc.tipo().stato_finale_stampa());
bak_doc.put("PROVV","D"); bak_doc.put("PROVV","D");
bak_doc.put("NDOC",-1L); bak_doc.put("NDOC",-1L);
const int pr = bak_doc.physical_rows(); const int pr = bak_doc.physical_rows();

View File

@ -6,6 +6,6 @@
#include "velib.h" #include "velib.h"
#endif #endif
int numerazione_definitiva(TDocumento &, const int); // prototipo della funzione di rinumerazione definitiva dei documenti int numerazione_definitiva(TDocumento &); // prototipo della funzione di rinumerazione definitiva dei documenti
#endif // __VE0100B_H #endif // __VE0100B_H

View File

@ -78,7 +78,6 @@ class TDocumento_form : public TForm
TCond_vendita * _condv; TCond_vendita * _condv;
TString_array _exclude_array; // array di coppie tipo/articolo da escludere dalla stampa TString_array _exclude_array; // array di coppie tipo/articolo da escludere dalla stampa
TDocumentoEsteso * _doc; // Documento da stampare 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 _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 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. TString_array _group_decimals; // Array di TToken_string per ogni gruppo definito in GENERAL.
@ -115,7 +114,6 @@ public:
void print_documento(); void print_documento();
bool valid() { return _valid; } bool valid() { return _valid; }
bool doc_arrange(); bool doc_arrange();
const int final_status() { return _final_status; }
int ncopie() { return _doc->tipo().ncopie(); } int ncopie() { return _doc->tipo().ncopie(); }
const TString &get_module_code() { return _module; } // ritorna il codice del modulo di carta const TString &get_module_code() { return _module; } // ritorna il codice del modulo di carta
TString_array & exclude_list() { return _exclude_array; } TString_array & exclude_list() { return _exclude_array; }
@ -151,16 +149,6 @@ TDocumento_form::TDocumento_form(TRectype&/*TDocumentoEsteso**/ doc, TRelation&
error_box("Nome profilo o form di stampa non valido nella tabella TIP"); error_box("Nome profilo o form di stampa non valido nella tabella TIP");
return; 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...
if (interattivo)
{
error_box("Non è possibile stampare il documento %s %s con stato non valido", (const char*) codnum, (const char*) numdoc); // ...viene mostrato un messaggio (solo in modo interattivo)...
return;
}
} }
else else
{ {
@ -950,11 +938,10 @@ class TStampaDoc_application: public TApplication
bool _definitiva; // flag che indica se la stampa è definitiva o no bool _definitiva; // flag che indica se la stampa è definitiva o no
TRelation *_firmrel; // puntatore alla relazione che gestisce i dati della ditta corrente TRelation *_firmrel; // puntatore alla relazione che gestisce i dati della ditta corrente
TDocumento_form *_form; // puntatore al form di stampa TDocumento_form *_form; // puntatore al form di stampa
TLocalisamfile * _clifo; TArray _file;
TLocalisamfile * _cfven;
TLocalisamfile * _occas;
protected: protected:
void open_files(int logicnum, ...);
virtual bool create(); virtual bool create();
virtual bool destroy(); virtual bool destroy();
virtual bool menu(MENU_TAG); virtual bool menu(MENU_TAG);
@ -1023,6 +1010,8 @@ void TStampaDoc_application::print_selected()
for (long i = 0; i < items; i++) for (long i = 0; i < items; i++)
{ {
cur = i; // Posiziona il documento cur = i; // Posiziona il documento
if (_definitiva && !((TDocumento &) cur.curr()).stampabile())
continue;
_form = new TDocumento_form(cur.curr()/*documento*/, *_firmrel, _definitiva, _interattivo); // Istanzia il form _form = new TDocumento_form(cur.curr()/*documento*/, *_firmrel, _definitiva, _interattivo); // Istanzia il form
if (!_form->valid()) break; // interrompe la stampa se il doc corrente non e' tra i tipi validi if (!_form->valid()) break; // interrompe la stampa se il doc corrente non e' tra i tipi validi
@ -1035,7 +1024,8 @@ void TStampaDoc_application::print_selected()
break; // Se vi sono errori interrompe la stampa break; // Se vi sono errori interrompe la stampa
if (module_changed) whattodo = on_module_change(modulo, modulo_prec); // se il modulo è cambiato dalla stampa precedente interroga la funzione per sapere che comportamento tenere if (module_changed) whattodo = on_module_change(modulo, modulo_prec); // se il modulo è cambiato dalla stampa precedente interroga la funzione per sapere che comportamento tenere
if (whattodo==cancel) break; // se non si può procedere la stampa viene interrotta if (whattodo==cancel) break; // se non si può procedere la stampa viene interrotta
if (whattodo==skip) continue; // Salta il documento corrente if (whattodo==skip)
continue; // Salta il documento corrente
// altrimenti prosegue // altrimenti prosegue
// Carica il numero di copie da stampare per questo form // Carica il numero di copie da stampare per questo form
@ -1048,7 +1038,7 @@ void TStampaDoc_application::print_selected()
_form->doc().summary_reset(); _form->doc().summary_reset();
_form->doc().scadenze_reset(); _form->doc().scadenze_reset();
} }
if (_definitiva && (numerazione_definitiva(_form->doc(),_form->final_status()) != NOERR)) if (_definitiva && (numerazione_definitiva(_form->doc()) != NOERR))
{ // se la stampa è definitiva viene lanciata la procedura di rinumerazione { // se la stampa è definitiva viene lanciata la procedura di rinumerazione
if (_interattivo) error_box("Non è possibile completare la procedura di numerazione definitiva dei documenti. Errore %d", doc.status()); if (_interattivo) error_box("Non è possibile completare la procedura di numerazione definitiva dei documenti. Errore %d", doc.status());
break; break;
@ -1173,6 +1163,18 @@ bool TStampaDoc_application::range_handler(TMask_field& f, KEY key)
return rt; return rt;
} }
void TStampaDoc_application::open_files(int logicnum, ...)
{
va_list marker;
va_start(marker, logicnum);
while (logicnum > 0)
{
CHECKD(_file.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum);
_file.add(new TLocalisamfile(logicnum), logicnum);
logicnum = va_arg(marker, int);
}
}
bool TStampaDoc_application::create() bool TStampaDoc_application::create()
{ {
TApplication::create(); TApplication::create();
@ -1181,9 +1183,7 @@ bool TStampaDoc_application::create()
_firmrel->add(LF_UNLOC,"CODDITTA=CODDITTA"); // si posiziona sulla prima unita' locale della ditta _firmrel->add(LF_UNLOC,"CODDITTA=CODDITTA"); // si posiziona sulla prima unita' locale della ditta
_firmrel->add(LF_COMUNI, "COM=STATORES+COMRES", 1, LF_ANAG, 100+LF_COMUNI); _firmrel->add(LF_COMUNI, "COM=STATORES+COMRES", 1, LF_ANAG, 100+LF_COMUNI);
_firmrel->add(LF_COMUNI, "COM=STATORES+COMRF", 1, LF_ANAG, 200+LF_COMUNI); _firmrel->add(LF_COMUNI, "COM=STATORES+COMRF", 1, LF_ANAG, 200+LF_COMUNI);
_occas = new TLocalisamfile(LF_OCCAS); open_files(LF_TABCOM, LF_TAB, LF_OCCAS, LF_CLIFO, LF_CFVEN, LF_MOVMAG, LF_RMOVMAG, 0);
_clifo = new TLocalisamfile(LF_CLIFO);
_cfven = new TLocalisamfile(LF_CFVEN);
const int argc = TApplication::argc(); const int argc = TApplication::argc();
_is_lista = argc == 3 && argv(2)[0] == 'L'; _is_lista = argc == 3 && argv(2)[0] == 'L';
@ -1227,9 +1227,6 @@ bool TStampaDoc_application::create()
bool TStampaDoc_application::destroy() bool TStampaDoc_application::destroy()
{ {
delete _firmrel; // distruzione della relazione di gestione della ditta corrente delete _firmrel; // distruzione della relazione di gestione della ditta corrente
delete _clifo;
delete _cfven;
delete _occas;
return TApplication::destroy(); return TApplication::destroy();
} }