1995-08-11 10:45:34 +00:00
|
|
|
|
|
|
|
#include <rectypes.h>
|
|
|
|
#include <relation.h>
|
|
|
|
#include <tabutil.h>
|
|
|
|
|
1996-03-20 16:15:18 +00:00
|
|
|
int numerazione_definitiva(TLocalisamfile& doc)
|
|
|
|
{
|
1995-09-28 15:26:35 +00:00
|
|
|
int err= NOERR; // istanzia la variabile per il codice d'errore
|
|
|
|
TRectype &rec_doc= doc.curr(); // prende il record corrente dal file delle testate
|
1996-03-20 16:15:18 +00:00
|
|
|
TTable tabnum("NUM"); // istanzia la tabella delle numerazioni
|
|
|
|
|
1995-09-28 15:26:35 +00:00
|
|
|
tabnum.put("CODTAB", rec_doc.get("CODNUM")); // posiziona la tabella
|
1996-03-20 16:15:18 +00:00
|
|
|
if ((err= tabnum.read(_isequal, _lock))==NOERR)
|
|
|
|
{ // legge la tabella bloccandone il record
|
1995-09-28 15:26:35 +00:00
|
|
|
long newndoc= tabnum.get_long("I1"); // legge il nuovo numero di documento dalla tabella
|
1996-03-20 16:15:18 +00:00
|
|
|
|
1995-09-28 15:26:35 +00:00
|
|
|
tabnum.put("I1", newndoc+1); // aggiorna il nuovo numero di documento nella tabella
|
|
|
|
doc.read(rec_doc, _isequal, _lock); // blocca il record corrente del file documenti
|
1996-03-20 16:15:18 +00:00
|
|
|
|
1995-09-28 15:26:35 +00:00
|
|
|
TRectype newrec_doc(rec_doc); // istanzia un nuovo record su quello corrente
|
1996-03-20 16:15:18 +00:00
|
|
|
|
1995-09-28 15:26:35 +00:00
|
|
|
newrec_doc.put("NDOC", newndoc); // scrive il nuovo numero di documento nel nuovo record
|
|
|
|
newrec_doc.put("PROVV", "D"); // aggiorna il flag di tipo di numerazione
|
|
|
|
TRecord_array arr_rdoc(LF_RIGHEDOC, "NRIGA"); // istanzia il record array per le righe
|
1996-03-20 16:15:18 +00:00
|
|
|
if ((err= arr_rdoc.read(rec_doc))==NOERR)
|
|
|
|
{ // legge le righe del documento basandosi sul record con la vecchia chiave
|
1995-09-28 15:26:35 +00:00
|
|
|
TRecord_array newarr_rdoc(arr_rdoc); // crea una copia del record array per tenere le nuove righe
|
1996-03-20 16:15:18 +00:00
|
|
|
|
|
|
|
for (int i=1; i<=newarr_rdoc.last_row(); i++)
|
|
|
|
{ // ciclo sui record delle righe
|
1995-09-28 15:26:35 +00:00
|
|
|
TRectype &newrec_rdoc= newarr_rdoc.row(i, FALSE); // prende il record della riga corrente
|
1996-03-20 16:15:18 +00:00
|
|
|
|
1995-09-28 15:26:35 +00:00
|
|
|
newrec_rdoc.put("NDOC", newndoc); // scrive il nuovo numero di documento
|
|
|
|
newrec_rdoc.put("PROVV", "D"); // aggiorna il flag di tipo di numerazione
|
|
|
|
}
|
|
|
|
newarr_rdoc.write(); // scrive le righe con la nuova numerazione
|
|
|
|
doc.write(newrec_doc); // scrive il nuovo record della testata
|
|
|
|
arr_rdoc.remove(); // rimuove le vecchie righe
|
|
|
|
doc.remove(rec_doc); // cancella (e sblocca) il vecchio record della testata
|
|
|
|
tabnum.rewrite(); // riscrive il record corrente della tabella...
|
|
|
|
tabnum.read(_isequal, _unlock); // ...e la sblocca
|
1995-08-07 07:59:09 +00:00
|
|
|
}
|
1995-09-28 15:26:35 +00:00
|
|
|
}
|
1995-08-07 07:59:09 +00:00
|
|
|
return err;
|
1995-09-28 15:26:35 +00:00
|
|
|
}
|