Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.2 patch 1262 git-svn-id: svn://10.65.10.50/trunk@17631 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			290 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			290 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <applicat.h>
 | 
						|
 | 
						|
#include "mglib.h"
 | 
						|
#include "mg4100.h"
 | 
						|
#include "movmag.h"
 | 
						|
#include "rmovmag.h"
 | 
						|
 | 
						|
class TStampa_listamov : public TSkeleton_application
 | 
						|
{
 | 
						|
  TStampemg_mask * _mask;
 | 
						|
  TForm * _form; 
 | 
						|
 | 
						|
  int _codicees;
 | 
						|
  bool _raggmag;
 | 
						|
  TString _daart,_aart,_damag,_amag;
 | 
						|
  TDate _dadata,_adata;
 | 
						|
  static TToken_string _filtrocausali;
 | 
						|
 | 
						|
protected:
 | 
						|
  virtual bool create();
 | 
						|
  virtual bool destroy();
 | 
						|
  virtual void main_loop();
 | 
						|
  void setprint_x_mov();
 | 
						|
  void setprint_x_art();
 | 
						|
  static bool filtro_causali(const TRelation* r);
 | 
						|
};
 | 
						|
 | 
						|
TToken_string TStampa_listamov::_filtrocausali;
 | 
						|
 | 
						|
bool TStampa_listamov::create()
 | 
						|
{
 | 
						|
  open_files(LF_TAB, LF_TABCOM, LF_MOVMAG, LF_RMOVMAG, LF_ANAMAG, LF_UMART, 0);
 | 
						|
  _mask = new TStampemg_mask("mg4100");
 | 
						|
  return TSkeleton_application::create();
 | 
						|
}
 | 
						|
 | 
						|
bool TStampa_listamov::destroy()
 | 
						|
{
 | 
						|
  delete _mask;
 | 
						|
  return TSkeleton_application::destroy();
 | 
						|
}
 | 
						|
 | 
						|
bool TStampa_listamov::filtro_causali(const TRelation* r)
 | 
						|
{
 | 
						|
  TString16 currcau = r->curr(LF_RMOVMAG).get(RMOVMAG_CODCAUS);
 | 
						|
  if (currcau.empty())
 | 
						|
    currcau = r->curr(LF_MOVMAG).get(MOVMAG_CODCAUS);
 | 
						|
/*    
 | 
						|
  TString16 caumag = _filtrocausali.get(0);
 | 
						|
  do  
 | 
						|
  {
 | 
						|
    if (caumag==currcau) 
 | 
						|
      return TRUE;
 | 
						|
    caumag = _filtrocausali.get();
 | 
						|
  } while (!caumag.empty());
 | 
						|
  return FALSE;
 | 
						|
*/
 | 
						|
  return _filtrocausali.get_pos(currcau) >= 0;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void TStampa_listamov::main_loop()
 | 
						|
{
 | 
						|
  TRectype darec(LF_RMOVMAG),arec(LF_RMOVMAG);
 | 
						|
  while (_mask->run() == K_ENTER)
 | 
						|
  {
 | 
						|
    if (_mask->magazz_ini().gestmag(TRUE)) 
 | 
						|
    {
 | 
						|
      if (_mask->get(F_ORDINE)[0] == 'A')
 | 
						|
        setprint_x_art();
 | 
						|
      else
 | 
						|
        setprint_x_mov();
 | 
						|
      _form->print();
 | 
						|
      delete _form;
 | 
						|
    }
 | 
						|
  } // while true  
 | 
						|
}
 | 
						|
 | 
						|
void TStampa_listamov::setprint_x_mov()
 | 
						|
{
 | 
						|
  _form = new TForm("mg4100");
 | 
						|
 | 
						|
  TRectype darec(LF_RMOVMAG),arec(LF_RMOVMAG);
 | 
						|
  TSorted_cursor& cur = (TSorted_cursor& )*_form->cursor();
 | 
						|
  TString sortexp;
 | 
						|
  TString filter,filterart,filtermov;
 | 
						|
 | 
						|
  // valuta se va effettuato un fltro su articolo o  movs  
 | 
						|
  if (_mask->get(F_DAARTICOLO).not_empty())
 | 
						|
    filterart << "&&(CODART>=\"" << _mask->get(F_DAARTICOLO) << "\")";
 | 
						|
  if (_mask->get(F_AARTICOLO).not_empty())
 | 
						|
    filterart << "&&(CODART<=\"" << _mask->get(F_AARTICOLO) << "\")";
 | 
						|
  if (_mask->get_long(F_DANUM) != 0L)
 | 
						|
    filtermov << "&&(NUMREG>=" << _mask->get_long(F_DANUM) ;
 | 
						|
  if (_mask->get_long(F_ANUM) != 0L)
 | 
						|
    filtermov << "&&(NUMREG<=" << _mask->get_long(F_ANUM) ;
 | 
						|
  
 | 
						|
  if (_mask->get(F_ORDINE)=="D" || filtermov.empty() && !filterart.empty())
 | 
						|
    cur.setkey(2);
 | 
						|
  else
 | 
						|
    cur.setkey(1);
 | 
						|
 | 
						|
  TString16 anno(_mask->get(F_ANNOES));
 | 
						|
  
 | 
						|
  if (anno.not_empty())
 | 
						|
    filter << '(' << LF_MOVMAG << "->ANNOES==\""<< anno << "\")";
 | 
						|
 | 
						|
	const TString8 dadoc(_mask->get(F_DOC1));
 | 
						|
	const TString8 adoc(_mask->get(F_DOC2));
 | 
						|
 | 
						|
  if (dadoc.full())
 | 
						|
	{
 | 
						|
		if (filter.not_empty())
 | 
						|
			filter << "&&";
 | 
						|
	  filter << '(' << LF_MOVMAG << "->EX_NUMDOC>=\""<< dadoc << "\")";
 | 
						|
	}
 | 
						|
  
 | 
						|
  if (adoc.full())
 | 
						|
	{
 | 
						|
		if (filter.not_empty())
 | 
						|
			filter << "&&";
 | 
						|
	  filter << '(' << LF_MOVMAG << "->EX_NUMDOC<=\""<< adoc << "\")";
 | 
						|
	}
 | 
						|
 | 
						|
  long codcf = _mask->get_long(F_CODCF);  
 | 
						|
  
 | 
						|
  if (codcf != 0)
 | 
						|
  {
 | 
						|
    if (filter.not_empty())
 | 
						|
      filter << " && ";
 | 
						|
    filter << '(' << LF_MOVMAG << "->TIPOCF==\""<< _mask->get(F_TIPOCF) << "\")";
 | 
						|
    filter << "&& (" << LF_MOVMAG << "->CODCF==\""<< codcf << "\")";
 | 
						|
  }
 | 
						|
  
 | 
						|
  if (_mask->get(F_CAU1).not_empty())
 | 
						|
  {
 | 
						|
    _filtrocausali.cut(0);
 | 
						|
    _filtrocausali.add(_mask->get(F_CAU1));
 | 
						|
    if (_mask->get(F_CAU2).not_empty())
 | 
						|
    {
 | 
						|
      _filtrocausali.add(_mask->get(F_CAU2));
 | 
						|
      if (_mask->get(F_CAU3).not_empty())
 | 
						|
      {
 | 
						|
        _filtrocausali.add(_mask->get(F_CAU3));
 | 
						|
        if (_mask->get(F_CAU4).not_empty())
 | 
						|
        {
 | 
						|
          _filtrocausali.add(_mask->get(F_CAU4));
 | 
						|
          if (_mask->get(F_CAU5).not_empty())
 | 
						|
          {
 | 
						|
            _filtrocausali.add(_mask->get(F_CAU5));
 | 
						|
            if (_mask->get(F_CAU6).not_empty())
 | 
						|
              _filtrocausali.add(_mask->get(F_CAU6));
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    cur.set_filterfunction(filtro_causali);
 | 
						|
  }
 | 
						|
  darec.zero();
 | 
						|
  arec.zero();
 | 
						|
  if (_mask->get(F_ORDINE)=="N")
 | 
						|
  {
 | 
						|
    sortexp = _mask->get_bool(F_INVERTI) ? "NUMREG-|NRIG" : "NUMREG|NRIG" ;
 | 
						|
    _form->find_field('B',odd_page,"HEADER_DATA").disable();
 | 
						|
    // trova il record iniziale E finale
 | 
						|
    if (cur.key() == 1)
 | 
						|
    {
 | 
						|
      darec.put(RMOVMAG_NUMREG,_mask->get(F_DANUM));
 | 
						|
      arec.put(RMOVMAG_NUMREG,_mask->get(F_ANUM));
 | 
						|
      filter << filterart;
 | 
						|
    } else {
 | 
						|
      darec.put(RMOVMAG_CODART,_mask->get(F_DAARTICOLO));
 | 
						|
      arec.put(RMOVMAG_CODART,_mask->get(F_AARTICOLO));
 | 
						|
      filter << filtermov;
 | 
						|
    }
 | 
						|
  } 
 | 
						|
  else 
 | 
						|
  {
 | 
						|
    sortexp.cut(0) <<  LF_MOVMAG << "->DATAREG" << (_mask->get_bool(F_INVERTI) ? "-" : "") << "|NUMREG|NRIG";
 | 
						|
    _form->find_field('B',odd_page,"HEADER_DATA").show();
 | 
						|
    // trova il record iniziale E finale
 | 
						|
    if (_mask->get(F_DADATA).not_empty()) 
 | 
						|
      filter << "&&(ANSI(" << LF_MOVMAG <<"->DATACOMP)>=ANSI(" << '"' << _mask->get_date(F_DADATA)<< "\"))";
 | 
						|
    if (_mask->get(F_ADATA).not_empty()) 
 | 
						|
      filter << "&&(ANSI(" << LF_MOVMAG <<"->DATACOMP)<=ANSI(" << '"' << _mask->get_date(F_ADATA) << "\"))";
 | 
						|
 | 
						|
    if (cur.key() == 1)
 | 
						|
    {
 | 
						|
      filter << filterart;
 | 
						|
    } 
 | 
						|
    else 
 | 
						|
    {
 | 
						|
      darec.put(RMOVMAG_CODART,_mask->get(F_DAARTICOLO));
 | 
						|
      arec.put(RMOVMAG_CODART,_mask->get(F_AARTICOLO));
 | 
						|
    }
 | 
						|
  }
 | 
						|
  
 | 
						|
  cur.change_order(sortexp);
 | 
						|
  if (filter.left(2) == "&&")
 | 
						|
    filter = filter.mid(2);
 | 
						|
  cur.setfilter(filter,TRUE,1);
 | 
						|
  cur.setregion(darec, arec, 0x2);    
 | 
						|
}
 | 
						|
 | 
						|
void TStampa_listamov::setprint_x_art()
 | 
						|
{
 | 
						|
  _form = new TForm("mg4100b");
 | 
						|
 | 
						|
  TRectype darec(LF_RMOVMAG),arec(LF_RMOVMAG);
 | 
						|
  TSorted_cursor& cur = (TSorted_cursor& )*_form->cursor();
 | 
						|
    
 | 
						|
  TString sortexp;
 | 
						|
  TString filter;
 | 
						|
  
 | 
						|
  TString4 anno(_mask->get(F_ANNOES));
 | 
						|
  
 | 
						|
  if (anno.not_empty())
 | 
						|
    filter << '(' << LF_MOVMAG << "->ANNOES==\""<< anno << "\")";
 | 
						|
 | 
						|
  long codcf = _mask->get_long(F_CODCF);  
 | 
						|
  if (codcf != 0)
 | 
						|
  {
 | 
						|
    if (filter.not_empty())
 | 
						|
      filter << " && ";
 | 
						|
    filter << '(' << LF_MOVMAG << "->TIPOCF==\""<< _mask->get(F_TIPOCF) << "\")";
 | 
						|
    filter << "&& (" << LF_MOVMAG << "->CODCF==\""<< codcf << "\")";
 | 
						|
  }
 | 
						|
  
 | 
						|
    
 | 
						|
  if (_mask->get(F_DAARTICOLO).not_empty())
 | 
						|
    filter << "&&(CODART>=\"" << _mask->get(F_DAARTICOLO) << "\")";
 | 
						|
  if (_mask->get(F_AARTICOLO).not_empty())
 | 
						|
    filter << "&&(CODART<=\"" << _mask->get(F_AARTICOLO) << "\")";
 | 
						|
  if (_mask->get(F_CAU1).not_empty())
 | 
						|
  {
 | 
						|
    _filtrocausali.cut(0);
 | 
						|
    _filtrocausali.add(_mask->get(F_CAU1));
 | 
						|
    if (_mask->get(F_CAU2).not_empty())
 | 
						|
    {
 | 
						|
      _filtrocausali.add(_mask->get(F_CAU2));
 | 
						|
      if (_mask->get(F_CAU3).not_empty())
 | 
						|
      {
 | 
						|
        _filtrocausali.add(_mask->get(F_CAU3));
 | 
						|
        if (_mask->get(F_CAU4).not_empty())
 | 
						|
        {
 | 
						|
          _filtrocausali.add(_mask->get(F_CAU4));
 | 
						|
          if (_mask->get(F_CAU5).not_empty())
 | 
						|
          {
 | 
						|
            _filtrocausali.add(_mask->get(F_CAU5));
 | 
						|
            if (_mask->get(F_CAU6).not_empty())
 | 
						|
              _filtrocausali.add(_mask->get(F_CAU6));
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    cur.set_filterfunction(filtro_causali);
 | 
						|
  }
 | 
						|
  darec.zero();
 | 
						|
  arec.zero();
 | 
						|
  if (_mask->get(F_ORDINE)=="N")
 | 
						|
  {
 | 
						|
    sortexp="NUMREG|CODART|NRIG";
 | 
						|
    // trova il record iniziale E finale
 | 
						|
    darec.put(MOVMAG_NUMREG,_mask->get(F_DANUM));
 | 
						|
    arec.put(MOVMAG_NUMREG,_mask->get(F_ANUM));
 | 
						|
    _form->find_field('B',odd_page,"HEADER_DATA").disable();
 | 
						|
  } else {
 | 
						|
    sortexp.cut(0) << LF_MOVMAG << "->DATAREG|NUMREG|CODART|NRIG";
 | 
						|
    // trova il record iniziale E finale
 | 
						|
    if (_mask->get(F_DADATA).not_empty()) 
 | 
						|
      filter << "&&(ANSI(" << LF_MOVMAG <<"->DATACOMP)>=ANSI(" << '"' << _mask->get_date(F_DADATA)<< "\"))";
 | 
						|
    if (_mask->get(F_ADATA).not_empty()) 
 | 
						|
      filter << "&&(ANSI(" << LF_MOVMAG <<"->DATACOMP)<=ANSI(" << '"' << _mask->get_date(F_ADATA) << "\"))";
 | 
						|
    _form->find_field('B',odd_page,"HEADER_DATA").show();
 | 
						|
  }
 | 
						|
  
 | 
						|
  cur.change_order(sortexp);
 | 
						|
  if (filter.left(2) == "&&")
 | 
						|
    filter = filter.mid(2);
 | 
						|
  cur.setfilter(filter,TRUE, 1);
 | 
						|
  cur.setregion(darec,arec, 0x2);    
 | 
						|
}
 | 
						|
 | 
						|
int mg4100(int argc, char* argv[])
 | 
						|
{
 | 
						|
  TStampa_listamov a;// derivata da Application e con uso di form
 | 
						|
  a.run(argc,argv,TR("Stampa lista movimenti"));
 | 
						|
  return 0;
 | 
						|
}
 |