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;
 | 
						|
} |