// **************************************
// **************************************
// **************************************
// *** classi per la libreria 
// ***
//*****
#include <diction.h>
#include <tabutil.h>
#include "mglib.h"


// ************************************************
// TEMP!!!!!!!!!!!!!!!!

TRegistro_std::TRegistro_std(const char* cod, int year) : TRectype(LF_TAB)
{
  if (!read(cod, year))
    fatal_box(TR("Il codice richiesto non รจ stato trovato nei registri"));
  TTable itl("%ITL");
  itl.put("CODTAB",cod_intest());
  itl.read();
  _intest=itl.get("S0");
}

bool TRegistro_std::read(const char* cod, int year)
{               
  if (year <= 0) 
  {
    const TDate oggi(TODAY);
    year = oggi.year();
  }

  int err = ~NOERR;
  
  TTable reg("REG");
  reg.setkey(1);
  if (cod && *cod > ' ')
  {
    TString16 chiave; chiave.format("%04d%s", year, cod);
    reg.put("CODTAB", chiave);
    err = reg.read(); 
  }
  *((TRectype *)this) = reg.curr();
  
  return err == NOERR;
}           

bool TRegistro_std::write(bool rewrite) const 
{               
  int err = ~NOERR;
  TTable reg("REG");

  reg.set_curr((TRectype *)this);
  if (rewrite)
    err = reg.rewrite(); 
  else
    err = reg.write(); 
  return err == NOERR;
}           



int TRegistro_std::year() const 
{                
  TString16 anno(get("CODTAB")); 
  anno.cut(4);
  return atoi(anno);
}   


const TString& TRegistro_std::code() const 
{ 
  return get("CODTAB").mid(4);
}

const TString TRegistro_std::intest() const
{
  return _intest;
}

int TRegistro_std::lock()
{
  TTable reg("REG");
  reg.put("CODTAB",this->get("CODTAB"));
  return reg.read(_lock); 
}

int TRegistro_std::unlock()
{
  TTable reg("REG");
  reg.put("CODTAB",this->get("CODTAB"));
  return reg.read(_unlock); 
}