#include "cg5500.h"
#include <utility.h>

bool Visliq_app::look_lim(int m)
{
  bool ok = FALSE;

  _lim_r->zero();
  _lam_r->zero();
  (*_lim_anno)   = _year;
  (*_lim_mese)   = format("%02d",m);

  if (_lim->read() == NOERR)
  {                   
    (*_lam_anno)   = _year;
    (*_lam_mese)   = format("%02d",m);
    _lam->read();
  }
  else
  { 
    _lim_r->zero();
	  (*_lim_anno)   = _year;
  	(*_lim_mese)   = format("%02d",m);
  }
    
  return _lim->good() && _lam->good();  
}

bool Visliq_app::look_del(int month, int type, bool create)
{
  _del->zero();
  (*_del_ditta)  = format("%05ld", get_firm());
  (*_del_anno)   = _year;
  (*_del_mese)   = format("%02d", month);
  (*_del_tipo)   = format("%1d",  type);     
  
  TString16 ctab = _del->get("CODTAB");
  _del->read();

  bool ok = _del->good();

  if (!ok && create)
  {
    _del->zero();
    _del->put("CODTAB",ctab);
    _del->write();
  }
  return ok;
}

bool Visliq_app::look_lia(long ditta, int year)
{
  if (year == 0)   year = _year;        
  if (ditta == 0l) ditta = get_firm();
  TString16 y; y << format("%05ld", ditta);  y << year;
  
  _lia->zero();
  _lia->put("CODTAB", y);
  _lia->read();

  return _lia->good();
}


bool Visliq_app::is_trim(int x) 
  // TRUE se il mese passato e' un trimestre
{ return x == 3 || x == 6 || x == 9 || x == 12; }

bool Visliq_app::is_month_ok(int x, int month)
  // TRUE se il mese passato e' compatibile con il regime
  // di liquidazione e (opz) non e' maggiore di quello scelto
{ 
  if (month == -1) month = x;
  return _freqviva == "M" ? 
    ( x > 0 && x <= month) :
  ( x <= month && is_trim(x));
}