// cg4401.cpp
// 

#include <applicat.h>
#include <isam.h>
#include <strings.h>
#include <lffiles.h>
#include <utility.h>

#include <nditte.h>
#include <anagr.h>
#include <comuni.h>

#include "cg4400.h"

static TString256 tmp;

TRectype& TDati_ditta::look_com(const char * cod)
{
  _comuni->zero();
  _comuni->put(COM_COM,cod);
  _comuni->read();
  if (_comuni->bad()) _comuni->zero();
  return _comuni->curr();  
}

TDati_ditta::TDati_ditta(long cod_ditta, int stampa_width)
{
  _stampa_width = stampa_width;
  _codditta = cod_ditta;
  _nditte = new TLocalisamfile(LF_NDITTE);
  _anag   = new TLocalisamfile(LF_ANAG);
  _comuni = new TLocalisamfile(LF_COMUNI);
}

TDati_ditta::~TDati_ditta()
{
  delete _anag; delete _nditte; delete _comuni;
}

void TDati_ditta::get_dati_ditta ()
{
  TString16     codanagr;
  char          tipoa;

  _nditte->zero();
  _nditte->put(NDT_CODDITTA, _codditta);   
  _nditte->read();

  if (_nditte->bad()) _nditte->zero();

  _ragsoc  = _nditte->get(NDT_RAGSOC);
  codanagr = _nditte->get(NDT_CODANAGR);
  tipoa    = _nditte->get_char(NDT_TIPOA);

  _anag->setkey(1);
  _anag->zero();
  _anag->put (ANA_TIPOA, tipoa);
  _anag->put (ANA_CODANAGR, codanagr);
  _anag->read();
  if (_anag->bad()) _anag->zero();
  
  _cofi      = _anag->get(ANA_COFI);
  _paiva     = _anag->get(ANA_PAIV);
  _comunefis = _anag->get(ANA_COMRF);

  if (_comunefis.trim().empty()) 
    _comunefis = _anag->get(ANA_COMRES);

  TRectype dep = look_com (_comunefis);

  _comunefis = dep.get(COM_DENCOM);
  _provfis   = dep.get(COM_PROVCOM);
  _cap       = dep.get(COM_CAPCOM);
  if (_comunefis.trim().empty()) 
  {
    _viafis = _anag->get(ANA_INDRF);
    _viafis.rtrim();
    _viafis << " " << _anag->curr().get (ANA_CIVRF); 
  }
  else
  {
    _viafis = _anag->get(ANA_INDRES);
    _viafis.rtrim();
    _viafis << " " << _anag->get (ANA_CIVRES); 
  }
}

const char * TDati_ditta::prima_riga()
{
  get_dati_ditta();
  tmp << "Ditta " << _codditta << ' ' << _ragsoc << " Via " << _viafis << ' ' 
    << _cap << ' ' << _comunefis << ' ' << _provfis;
  return tmp;
}

const char * TDati_ditta::seconda_riga()
{
  tmp = "";
  tmp = "Data @<";
  tmp.right_just(_stampa_width-15);
  tmp.overwrite (format ("Partita iva %s @26gCodice fiscale %s", 
                         (const char*)_paiva, (const char*)_cofi));
  return tmp;
}