Files correlati : Ricompilazione Demo : [ ] Commento :aggiunti sorgenti di programmi personalizzati sul main_trunk git-svn-id: svn://10.65.10.50/trunk@15931 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			228 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			228 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <automask.h>
 | 
						|
#include <defmask.h>
 | 
						|
#include <msksheet.h>
 | 
						|
#include <mask.h>
 | 
						|
#include <recarray.h>
 | 
						|
#include <recset.h>
 | 
						|
#include <tabapp.h>
 | 
						|
 | 
						|
#include <multirel.h>
 | 
						|
#include "../mg/anamag.h"
 | 
						|
#include "ps0430100a.h"
 | 
						|
 | 
						|
#define FILE_KEY "ACM"
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TArt_mask maschera
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TArt_mask : public TAutomask
 | 
						|
{
 | 
						|
 | 
						|
public:
 | 
						|
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
						|
  TArt_mask() : TAutomask("ps0430100a") {}
 | 
						|
	~TArt_mask() {}
 | 
						|
};
 | 
						|
 | 
						|
bool TArt_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
						|
{
 | 
						|
	switch (o.dlg())
 | 
						|
	{
 | 
						|
		case F_SET:
 | 
						|
			if (e == fe_button)
 | 
						|
			{
 | 
						|
				TSheet_field & sf = sfield(F_ARTICLES);
 | 
						|
				const long items = sf.items();
 | 
						|
				bool select = true;
 | 
						|
				const int cid = sf.cid2index(F_ATTIVO);
 | 
						|
				int i ;
 | 
						|
 | 
						|
				for (i = 0; select && i < items; i++)
 | 
						|
					select  = *sf.row (i).get(cid) <= ' ';
 | 
						|
 | 
						|
				const TString4 val(select ? "X" : " ");
 | 
						|
				
 | 
						|
				for (i = 0; i < items; i++)
 | 
						|
					sf.row(i).add(val, cid);
 | 
						|
				sf.force_update();
 | 
						|
			}
 | 
						|
			break;
 | 
						|
		case F_RESET:
 | 
						|
			if (e == fe_button)
 | 
						|
			{
 | 
						|
				TSheet_field & sf = sfield(F_ARTICLES);
 | 
						|
				const long items = sf.items();
 | 
						|
 | 
						|
				for (int i = 0; i < items; i++)
 | 
						|
				{
 | 
						|
					TToken_string & row = sf.row(i);
 | 
						|
					
 | 
						|
					row.add(" ", sf.cid2index(F_ATTIVO));
 | 
						|
				}
 | 
						|
				sf.force_update();
 | 
						|
			}
 | 
						|
			break;
 | 
						|
		default:
 | 
						|
			break;
 | 
						|
	}
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
class TRelArticoli_multirel_app : public TMultirel_application
 | 
						|
{
 | 
						|
	TISAM_recordset _recset;
 | 
						|
	TArt_mask * _mask;
 | 
						|
 | 
						|
protected:
 | 
						|
	virtual void get_mask_name(TString& tabname) const;
 | 
						|
	//magico metodo per impedire la navigazione su tabelle diverse da quella corrente del cursore
 | 
						|
	virtual bool has_filtered_cursor() const { return true; }
 | 
						|
  virtual bool user_create();
 | 
						|
  virtual bool user_destroy() ;
 | 
						|
	virtual int read(TMask& m);
 | 
						|
  virtual int rewrite(const TMask& m);
 | 
						|
  virtual int write(const TMask& m) { return rewrite(m);}
 | 
						|
  virtual bool remove();
 | 
						|
  virtual void  init_insert_mode(TMask& m) { read(m); }
 | 
						|
  virtual bool find(word key = 0);
 | 
						|
	virtual TMask* get_mask(int mode = MODE_QUERY) { return (TMask *) _mask;}
 | 
						|
  
 | 
						|
public:
 | 
						|
 | 
						|
  virtual const char * extra_modules() const {return "ba";}
 | 
						|
 | 
						|
  TRelArticoli_multirel_app() : _recset("USE ANAMAG KEY 1") {}
 | 
						|
  virtual ~TRelArticoli_multirel_app() {}
 | 
						|
};
 | 
						|
 | 
						|
void TRelArticoli_multirel_app::get_mask_name(TString& tabname) const
 | 
						|
{
 | 
						|
	tabname = "ps0430100a";
 | 
						|
}
 | 
						|
 | 
						|
bool TRelArticoli_multirel_app::user_create()
 | 
						|
{
 | 
						|
	bool ok = TMultirel_application::user_create();
 | 
						|
	_mask = new TArt_mask;
 | 
						|
	return ok;
 | 
						|
}
 | 
						|
 | 
						|
bool TRelArticoli_multirel_app::user_destroy()
 | 
						|
{
 | 
						|
/*	prefix().close_closeable_isamfiles();
 | 
						|
 | 
						|
	TSystemisamfile multirel(LF_MULTIREL);
 | 
						|
	
 | 
						|
	multirel.pack(); */
 | 
						|
	delete _mask;
 | 
						|
	return true;
 | 
						|
}
 | 
						|
 | 
						|
int TRelArticoli_multirel_app::read(TMask& m)
 | 
						|
{
 | 
						|
	const TRectype & curr = get_relation()->lfile().curr();
 | 
						|
	TSheet_field & sf = m.sfield(F_ARTICLES);
 | 
						|
	TLocalisamfile multirel(LF_MULTIREL);
 | 
						|
	const TString user(m.get(F_USER));
 | 
						|
	int i = 0;
 | 
						|
 | 
						|
	sf.destroy();
 | 
						|
  for (bool ok = _recset.move_first(); ok; ok = _recset.move_next())
 | 
						|
  {
 | 
						|
		TToken_string & row = sf.row(i++);
 | 
						|
		const TString & codart = _recset.get(ANAMAG_CODART).as_string();
 | 
						|
 | 
						|
		row.add(codart, sf.cid2index(F_CODART));
 | 
						|
		row.add(_recset.get(ANAMAG_DESCR).as_string(), sf.cid2index(F_DESCR));
 | 
						|
		row.add(_recset.get(ANAMAG_DESCRAGG).as_string(), sf.cid2index(F_DESCRAGG));
 | 
						|
		row.add(_recset.get(ANAMAG_CODFORN).as_string(), sf.cid2index(F_CODFORN));
 | 
						|
		TToken_string key; key.format("F|%ld", _recset.get(ANAMAG_CODFORN).as_int());
 | 
						|
 | 
						|
		row.add(cache().get(LF_CLIFO, key, "RAGSOC"), sf.cid2index(F_RAGSOC));
 | 
						|
 | 
						|
		multirel.put(MULTI_COD, FILE_KEY);
 | 
						|
		multirel.put(MULTI_FIRST, user);
 | 
						|
		multirel.put(MULTI_SECOND, codart);
 | 
						|
		if (multirel.read(_isequal) == NOERR)
 | 
						|
			row.add("X", sf.cid2index(F_ATTIVO));
 | 
						|
		else
 | 
						|
			row.add(" ", sf.cid2index(F_ATTIVO));
 | 
						|
	}
 | 
						|
	return NOERR;
 | 
						|
}
 | 
						|
 | 
						|
int TRelArticoli_multirel_app::rewrite(const TMask& m)
 | 
						|
{
 | 
						|
	int err = NOERR;
 | 
						|
	TSheet_field & sf = m.sfield(F_ARTICLES);
 | 
						|
	int i = 0;
 | 
						|
	TLocalisamfile multirel(LF_MULTIREL);
 | 
						|
	const TString user(m.get(F_USER));
 | 
						|
	
 | 
						|
  for (bool ok = _recset.move_first(); err == NOERR && ok; ok = _recset.move_next())
 | 
						|
  {
 | 
						|
		TToken_string & row = sf.row(i++);
 | 
						|
		bool selected = *row.get(sf.cid2index(F_ATTIVO)) > ' ';
 | 
						|
 | 
						|
		multirel.zero();
 | 
						|
		multirel.put(MULTI_COD, FILE_KEY);
 | 
						|
		multirel.put(MULTI_FIRST, user);
 | 
						|
		multirel.put(MULTI_SECOND, row.get(sf.cid2index(F_CODART)));
 | 
						|
		bool exist = multirel.read(_isequal) == NOERR;
 | 
						|
 | 
						|
		if (exist && !selected)
 | 
						|
			err = multirel.remove();
 | 
						|
		else
 | 
						|
			if (!exist && selected)
 | 
						|
			{
 | 
						|
				multirel.zero();
 | 
						|
				multirel.put(MULTI_COD, FILE_KEY);
 | 
						|
				multirel.put(MULTI_FIRST, user);
 | 
						|
				multirel.put(MULTI_SECOND, row.get(sf.cid2index(F_CODART)));
 | 
						|
				err = multirel.write();
 | 
						|
			}
 | 
						|
	}
 | 
						|
	get_relation()->read(_isgteq);
 | 
						|
	return err;
 | 
						|
}
 | 
						|
 | 
						|
bool TRelArticoli_multirel_app::remove()
 | 
						|
{
 | 
						|
	int err;
 | 
						|
	TLocalisamfile multirel(LF_MULTIREL);
 | 
						|
	const TString user(get_mask(MODE_MOD)->get(F_USER));
 | 
						|
 | 
						|
	multirel.put(MULTI_COD, FILE_KEY);
 | 
						|
	multirel.put(MULTI_FIRST, user);
 | 
						|
 | 
						|
  for (err = multirel.read(_isgteq); err == NOERR && user == multirel.get(MULTI_FIRST); multirel.next())
 | 
						|
		err = multirel.remove();
 | 
						|
	return err == NOERR || err == _iseof;
 | 
						|
}
 | 
						|
 | 
						|
bool TRelArticoli_multirel_app::find(word key)
 | 
						|
{
 | 
						|
	bool ok = false;
 | 
						|
	const TString& user = get_mask(MODE_QUERY)->get(F_USER);
 | 
						|
	
 | 
						|
	if (user.full())
 | 
						|
	{
 | 
						|
		TLocalisamfile multirel(LF_MULTIREL);
 | 
						|
 | 
						|
		multirel.put(MULTI_COD, FILE_KEY);
 | 
						|
		multirel.put(MULTI_FIRST, user);
 | 
						|
		ok = (multirel.read(_isgteq) == NOERR) && (user == multirel.get(MULTI_FIRST));
 | 
						|
	}
 | 
						|
	if (ok)
 | 
						|
		get_relation()->read(_isgteq);
 | 
						|
	return ok;
 | 
						|
}
 | 
						|
 | 
						|
int ps0430100(int argc, char* argv[])
 | 
						|
{
 | 
						|
  TRelArticoli_multirel_app a;
 | 
						|
  a.run(argc, argv, TR("Tabella"));
 | 
						|
  return 0;
 | 
						|
}
 |