campo-sirio/ve/ve0100b.cpp

36 lines
1.2 KiB
C++
Raw Normal View History

#include <recarray.h>
#include <relation.h>
#include <tabutil.h>
#include "velib.h"
#include "ve0100b.h"
int numerazione_definitiva(TDocumento& doc)
{
int err = NOERR;
if (doc.get_char("PROVV") == 'D') // Se e' una numerazione definitiva
{
if (doc.stampabile()) // Controlla se non e' gia' nello stato si stampato in definitiva
{
doc.stato(doc.tipo().stato_finale_stampa()); // Se e' gia' in definitiva aggiorna solo lo stato
err = doc.rewrite();
}
}
else // Se e' una numerazione provvisoria
{
// Scrive il nuovo documento con lo stato, numero e flag di definitiva
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) // Cancella il vecchio documento
doc.remove();
}
return err;
}