#ifndef __RILIB01_H
#define __RILIB01_H

#ifndef __PROGIND_H
#include <progind.h>
#endif

#ifndef __RELATION_H
#include <relation.h>
#endif

#ifndef __RECSET_H
#include <recset.h>
#endif

#ifndef __REPORT_H
#include <report.h>
#endif

class TSaldo_periodo;

class TSaldi_conti_recordset : public TISAM_recordset
{
	int _id;
	bool _all;
	TString4 _codper;
	int _sel_columns;

public:
  void set_custom_columns();
	const TSaldo_periodo & saldo_periodo() ;
	virtual TCursor* cursor() const;
  virtual const TVariant& get_field(int logic, const char* field) const;
	void set_fromto();
	const TString & codper() const { return _codper; }
	int sel_columns() const { return _sel_columns; }
	bool provv() const;
	bool all() const { return _all; }
	const int nper() const;
	const TDate & from(int n) const;
	const TDate & to(int n) const;
	virtual void requery();
	TSaldi_conti_recordset(const char * codper, int	nper, const TDate & dal, int sel_columns = 0,bool provv = false, bool all = true, const TString& sql = "");
	TSaldi_conti_recordset(const TMask& m, const TString& sql = "");
	virtual ~TSaldi_conti_recordset();
};

class TSaldi_ricl_recordset : public TISAM_recordset
{
	TString16 _codricl;
	int _id;
	bool _all;
	TString4 _codper;
	int _sel_columns;

	const TSaldo_periodo & saldo_periodo() ;

public:
  virtual void set_custom_columns();
	virtual TCursor* cursor() const;
	const TVariant& get_field(int logic, const char* field) const;
	const TString & codper() const { return _codper;}
	int sel_columns() const { return _sel_columns;}
	bool provv() const;
	bool all() const { return _all;}
	const int nper() const;
	const TDate & from(int n) const;
	const TDate & to(int n) const;
	virtual void requery();
	void set_fromto();

	TSaldi_ricl_recordset(const char * codricl, const char * codper, int	nper, const TDate & dal, int sel_columns = 0,  bool provv = false, bool all = true, const TString& sql = "");
	TSaldi_ricl_recordset(const TMask & m, const TString& sql = "");
	virtual ~TSaldi_ricl_recordset();
};

class TRicl_report : public TReport
{
  size_t _first_msg;
	TString16	_codricl;
	TString4 _codper;
	int _nper;
	TDate _dal;
	bool _provv;
	bool _all;
	int _sel_columns;

protected:
  virtual size_t get_usr_words(TString_array& words) const;
  virtual bool execute_usr_word(unsigned int opcode, TVariant_stack& stack);
  virtual bool set_recordset(const TString& query);
  void output_values(const TRectype& rec, const TString& output);
  void reset_values(const TString& output);

public:
  virtual KEY run_form(TMask& msk);
  bool load(const char* name);
};
#endif