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:
parent
443b5f0e63
commit
d96cba6d93
@ -5,11 +5,11 @@
|
||||
#include <tabutil.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();
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@ int numerazione_definitiva(TDocumento& doc, const int final_status)
|
||||
TDocumento bak_doc;
|
||||
|
||||
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("NDOC",-1L);
|
||||
const int pr = bak_doc.physical_rows();
|
||||
|
@ -6,6 +6,6 @@
|
||||
#include "velib.h"
|
||||
#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
|
||||
|
@ -78,7 +78,6 @@ class TDocumento_form : public TForm
|
||||
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,7 +114,6 @@ 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,16 +149,6 @@ TDocumento_form::TDocumento_form(TRectype&/*TDocumentoEsteso**/ doc, TRelation&
|
||||
error_box("Nome profilo o form di stampa non valido nella tabella TIP");
|
||||
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
|
||||
{
|
||||
@ -950,11 +938,10 @@ class TStampaDoc_application: public TApplication
|
||||
bool _definitiva; // flag che indica se la stampa è definitiva o no
|
||||
TRelation *_firmrel; // puntatore alla relazione che gestisce i dati della ditta corrente
|
||||
TDocumento_form *_form; // puntatore al form di stampa
|
||||
TLocalisamfile * _clifo;
|
||||
TLocalisamfile * _cfven;
|
||||
TLocalisamfile * _occas;
|
||||
TArray _file;
|
||||
|
||||
protected:
|
||||
void open_files(int logicnum, ...);
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual bool menu(MENU_TAG);
|
||||
@ -1023,6 +1010,8 @@ void TStampaDoc_application::print_selected()
|
||||
for (long i = 0; i < items; i++)
|
||||
{
|
||||
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
|
||||
|
||||
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
|
||||
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==skip) continue; // Salta il documento corrente
|
||||
if (whattodo==skip)
|
||||
continue; // Salta il documento corrente
|
||||
// altrimenti prosegue
|
||||
|
||||
// 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().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
|
||||
if (_interattivo) error_box("Non è possibile completare la procedura di numerazione definitiva dei documenti. Errore %d", doc.status());
|
||||
break;
|
||||
@ -1173,6 +1163,18 @@ bool TStampaDoc_application::range_handler(TMask_field& f, KEY key)
|
||||
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()
|
||||
{
|
||||
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_COMUNI, "COM=STATORES+COMRES", 1, LF_ANAG, 100+LF_COMUNI);
|
||||
_firmrel->add(LF_COMUNI, "COM=STATORES+COMRF", 1, LF_ANAG, 200+LF_COMUNI);
|
||||
_occas = new TLocalisamfile(LF_OCCAS);
|
||||
_clifo = new TLocalisamfile(LF_CLIFO);
|
||||
_cfven = new TLocalisamfile(LF_CFVEN);
|
||||
open_files(LF_TABCOM, LF_TAB, LF_OCCAS, LF_CLIFO, LF_CFVEN, LF_MOVMAG, LF_RMOVMAG, 0);
|
||||
const int argc = TApplication::argc();
|
||||
|
||||
_is_lista = argc == 3 && argv(2)[0] == 'L';
|
||||
@ -1227,9 +1227,6 @@ bool TStampaDoc_application::create()
|
||||
bool TStampaDoc_application::destroy()
|
||||
{
|
||||
delete _firmrel; // distruzione della relazione di gestione della ditta corrente
|
||||
delete _clifo;
|
||||
delete _cfven;
|
||||
delete _occas;
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user