f9212a2435
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione aga 07 patch 250 sul main trunk git-svn-id: svn://10.65.10.50/trunk@10209 c028cbd2-c16b-5b4b-a496-9718f37d4682
60 lines
2.0 KiB
C++
Executable File
60 lines
2.0 KiB
C++
Executable File
#include <prefix.h>
|
|
#include <postman.h>
|
|
|
|
#include <relation.h>
|
|
#include <tabutil.h>
|
|
|
|
#include "velib.h"
|
|
#include "ve0100b.h"
|
|
|
|
#include <doc.h>
|
|
|
|
int numerazione_definitiva(TDocumento& doc)
|
|
{
|
|
int err = NOERR;
|
|
if (doc.get_char(DOC_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();
|
|
|
|
// Invia la transazione di cambio stato se necessario
|
|
if (::can_dispatch_transaction(doc))
|
|
{
|
|
TFilename tmpname; tmpname.temp();
|
|
{ // Parentesi strategiche
|
|
TConfig ini(tmpname, "Transaction");
|
|
ini.set("Action", "MODIFY");
|
|
ini.set("Firm", prefix().get_codditta());
|
|
ini.set("Mode", "A");
|
|
TString8 paradoc; paradoc.format("%d", LF_DOC);
|
|
ini.set_paragraph(paradoc);
|
|
ini.set(DOC_PROVV, doc.get(DOC_PROVV));
|
|
ini.set(DOC_ANNO, doc.get(DOC_ANNO));
|
|
ini.set(DOC_CODNUM, doc.get(DOC_CODNUM));
|
|
ini.set(DOC_NDOC, doc.get(DOC_NDOC));
|
|
ini.set(DOC_STATO, doc.stato());
|
|
}
|
|
::dispatch_transaction(doc, tmpname);
|
|
::remove(tmpname);
|
|
}
|
|
}
|
|
}
|
|
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(DOC_STATO,doc.tipo().stato_finale_stampa());
|
|
bak_doc.put(DOC_PROVV,"D");
|
|
bak_doc.put(DOC_NDOC,-1L);
|
|
const int pr = bak_doc.physical_rows();
|
|
for (int i=1;i<=pr;i++)
|
|
bak_doc[i].put(DOC_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;
|
|
} |