#include <variant.h>

#include "cglib01.h"
#include "mov.h"
#include "rmoviva.h"
#include "../ba/ba8500.h"

///////////////////////////////////////////////////////////
// TRiepilogoIVA_recordset
///////////////////////////////////////////////////////////

#define COD "COD"
#define DESC "DESC"
#define IMPACQ "IMPACQ"
#define IVAACQ "IVAACQ"
#define IMPCORR "IMPCORR"
#define IVACORR "IVACORR"
#define IMPVEN "IMPVEN"
#define IVAVEN "IVAVEN"
#define IMPACQIND "IMPACQIND"
#define IVAACQIND "IVAACQIND"

class TRiepilogoIVA_recordset : public TRecordset
{
	TArray _rows;
	TArray _info;
	long   _pos;
	TDate  _from_date;
	TDate  _to_date;
	int    _anno;
	int    _da_mese;
	int    _a_mese;
	bool   _freezed;
	bool   _annuale;

protected:
	virtual const TVariant& get_field(int num, const char* field) const;
	void TRiepilogoIVA_recordset::add_field(TFieldtypes tipo, short id, int width, const char* name);

public:
	virtual TRecnotype items() const { return _rows.items(); }
	virtual bool move_to(TRecnotype pos);
	virtual TRecnotype current_row() const { return _pos; }
	virtual void requery();
	virtual const TString& query_text() const;
	virtual unsigned int columns() const { return _info.items(); }
	virtual const TRecordset_column_info& column_info(unsigned int column) const { return (const TRecordset_column_info&)_info[column]; }
	void freeze(bool on = true) { _freezed = on; }
	void unfreeze() { freeze(false); }
	//	const TString& col2name(unsigned int column) const;
	virtual const TVariant& get(unsigned int column) const;

	TDate set_from(const TDate& from) { set_var("#FROMDATE", from, true); return _from_date = from; }
	TDate set_to(const TDate& to) { set_var("#TODATE", to, true); return _to_date = to; }
	int set_anno(const int anno) {set_var("#ANNO", (long) anno, true); return _anno = anno; };
	void set_da_mese_var(const int mese) { set_var("#DAMESE", (long)mese, true); }
	void set_a_mese_var(const int mese) { set_var("#AMESE", (long)mese, true); }
	int set_da_mese(const int mese) { return _da_mese = mese; }
	int set_a_mese(const int mese) { return _a_mese = mese; }

	bool set_annual(bool on) { return _annuale = on; }
	bool annuale() const { return _annuale; }
	virtual bool is_competenza() const { return false; }
	int anno() const { return _anno; }
	int da_mese() { return _da_mese; }
	int a_mese() { return _a_mese; }

	TRiepilogoIVA_recordset();
	virtual ~TRiepilogoIVA_recordset() { }
};

///////////////////////////////////////////////////////////
// TRiepilogoIVA_report
///////////////////////////////////////////////////////////

class TRiepilogoIVA_report : public TReport
{

protected:
	virtual bool use_mask() { return false; }

public:
	virtual bool set_recordset(TRecordset * set) { return TReport::set_recordset(set); }

};