#include <applicat.h>
#include <config.h>
#include <mask.h>   
#include <printer.h>
#include <relation.h>
#include <tabutil.h>
#include <urldefid.h>
#include <utility.h>
#include <form.h>
#include <printapp.h>

#include "mglib.h"
#include "mg3500.h"
#include "mg3frm.h"

// mg3500       Stampa 
class TStampa_storgiac : public TPrint_application
{
	TArray * _files;
	TMask * _mask;
	TCursor * _cur;
	TForm_stampemg * _form; // to be moved into TPrint_application

protected:
  virtual bool print_one(int file) 
	  {return TRUE;}
  virtual bool user_create();
  virtual bool user_destroy();
  virtual bool set_print(int i=1);
  virtual void set_page(int file,int count)
		{	}
	void setprint_permagazzini();
	void setprint_perarticoli();

public:
  TStampa_storgiac() {}
};


bool TStampa_storgiac::user_create()
{
  _mask = new TMask("mg3500");
  _files = new TArray();
  _files->add(new TLocalisamfile(LF_STOMAG));
  return TRUE;
}

bool TStampa_storgiac::user_destroy()
{
	delete _mask;
	delete _files;
  return TRUE;
}


// ORDINAMENTO 

bool TStampa_storgiac::set_print(int i)
{
	while (TRUE) {
  	if (_mask->run() != K_ENTER) 
	    return FALSE;
	  TRectype darec(LF_ANAMAG),arec(LF_ANAMAG);
	  TString cfilter,filter,joinexp;

		joinexp << "ANNOESRIF==" << _mask->get(F_ANNOES) << "|CODART==CODART";

	 	_form = new TForm_stampemg("mg3500", "");
	  _cur = _form->cursor();
	  switch (*_mask->get(F_ORDINE))
	  {
	  	case 'C':
	  		_cur->setkey(1);
				darec.put("CODART",_mask->get(F_DAART));
				arec.put("CODART",_mask->get(F_AART));
	  	break;
	  	case 'D':
	  		_cur->setkey(2);
				darec.put("DESCR",_mask->get(F_DADES));
				arec.put("DESCR",_mask->get(F_ADES));
	  	break;
		}	
		_cur->relation()->replace(new TLocalisamfile(LF_STOMAG),1,joinexp);
		_cur->setfilter(cfilter);
		_cur->setregion(darec,arec);
		_form->print();
		delete _form;
	} // while true  
  return TRUE;
}

int mg3500(int argc, char* argv[])
{
	TStampa_storgiac a;
	a.run(argc,argv,"Stampa storico rimanenze");
	return 0;
}