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 "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();

View File

@ -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

View File

@ -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();
}