35 lines
922 B
C++
Executable File
35 lines
922 B
C++
Executable File
#include <recarray.h>
|
|
#include <relation.h>
|
|
|
|
#include "velib.h"
|
|
#include "ve0100b.h"
|
|
|
|
int numerazione_definitiva(TDocumento& doc)
|
|
{
|
|
if (doc.get("PROVV") == "D" && doc.stampabile())
|
|
{
|
|
doc.stato(doc.tipo().stato_finale_stampa()); // Se e' gia' in definitiva aggiorna solo lo stato
|
|
return doc.rewrite();
|
|
}
|
|
|
|
// Scrive il nuovo documento con lo stato, numero e flag di definitiva
|
|
int err = NOERR;
|
|
TDocumento bak_doc;
|
|
|
|
bak_doc = doc; // Setta il flag di nuovo documento
|
|
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();
|
|
for (int i=1;i<=pr;i++)
|
|
bak_doc[i].put("PROVV","D");
|
|
|
|
err = bak_doc.write(); // Esegue automagicamente rinumerazione di testata e righe nel caso di reinsert
|
|
if (err != NOERR)
|
|
return err;
|
|
|
|
// Cancella il vecchio documento
|
|
err = doc.remove();
|
|
return err;
|
|
}
|