Patch level : 10.0 67
Files correlati : Ricompilazione Demo : [ ] Commento : RIportata la verione 3.2 1167 git-svn-id: svn://10.65.10.50/trunk@16722 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									9a3f75125c
								
							
						
					
					
						commit
						2030c1272c
					
				@ -422,7 +422,7 @@ bool TMask_movmag::handle_codarticolo(TMask_field &f, KEY k)
 | 
				
			|||||||
			mov_mask.curr_art().read(codart);
 | 
								mov_mask.curr_art().read(codart);
 | 
				
			||||||
			ok = handle_checksosp(f, k);
 | 
								ok = handle_checksosp(f, k);
 | 
				
			||||||
			if (ok)
 | 
								if (ok)
 | 
				
			||||||
		    handle_righeprezzo2(f, k);
 | 
							    handle_righeprezzo1(f, k);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else 
 | 
							else 
 | 
				
			||||||
			error_box(TR("Articolo assente"));
 | 
								error_box(TR("Articolo assente"));
 | 
				
			||||||
 | 
				
			|||||||
@ -415,11 +415,13 @@ int TMov_mag::line_deleted(TToken_string &k, TLine_movmag &r)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void TMov_mag::mark_current_lines(const bool as_deleted)
 | 
					void TMov_mag::mark_current_lines(const bool as_deleted)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  const int nrows = rows(); // lasciare la riga qui perchè comporta il caricamento del body
 | 
					  _annoes   = get(MOVMAG_ANNOES);
 | 
				
			||||||
  _annoes  =get(MOVMAG_ANNOES);
 | 
					  _datacomp = get_date(MOVMAG_DATACOMP);
 | 
				
			||||||
  _datacomp=get_date(MOVMAG_DATACOMP);
 | 
					 | 
				
			||||||
  lines_to_add.destroy();   
 | 
					  lines_to_add.destroy();   
 | 
				
			||||||
  lines_to_subtract.destroy();
 | 
					  lines_to_subtract.destroy();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Vecchio modo che si pianta se manca qualche riga
 | 
				
			||||||
 | 
					  const int nrows = rows(); // lasciare la riga qui perchè comporta il caricamento del body
 | 
				
			||||||
  for (int i = 1; i<= nrows; i++)
 | 
					  for (int i = 1; i<= nrows; i++)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    if (as_deleted)
 | 
					    if (as_deleted)
 | 
				
			||||||
@ -427,6 +429,18 @@ void TMov_mag::mark_current_lines(const bool as_deleted)
 | 
				
			|||||||
    else
 | 
					    else
 | 
				
			||||||
      line_inserted(line2key(i), line2data(i));    
 | 
					      line_inserted(line2key(i), line2data(i));    
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const TRecord_array& b = body();
 | 
				
			||||||
 | 
					  for (int i = b.last_row(); i > 0; i = b.pred_row(i))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TLine_movmag& data = line2data(i);
 | 
				
			||||||
 | 
					    TToken_string& key = line2key(i);
 | 
				
			||||||
 | 
					    if (as_deleted)
 | 
				
			||||||
 | 
					      line_deleted(key, data);    
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      line_inserted(key, data);    
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -451,7 +465,7 @@ bool TMov_mag::lock_anamag(const char *codart)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    TString mess;
 | 
					    TString mess;
 | 
				
			||||||
    mess << TR("Il record di anagrafica dell'articolo '")<< codart << TR("' risulta essere già in uso.");
 | 
					    mess << TR("Il record di anagrafica dell'articolo '")<< codart << TR("' risulta essere già in uso.");
 | 
				
			||||||
    TTimed_breakbox bbox((const char *)mess,10);
 | 
					    TTimed_breakbox bbox(mess,10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    key = bbox.run();  
 | 
					    key = bbox.run();  
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -129,10 +129,25 @@ TMRP_record::TMRP_record(const TMRP_time& t) : _time(t)
 | 
				
			|||||||
///////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////
 | 
				
			||||||
TArticolo_giacenza *TMRP_line::_articolo_giac = NULL;
 | 
					TArticolo_giacenza *TMRP_line::_articolo_giac = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Stringa temporanea di lavoro
 | 
				
			||||||
 | 
					static TString16 _sub;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const TString& TMRP_line::codmag() const 
 | 
				
			||||||
 | 
					{ return _sub = _codmag.left(3); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const TString& TMRP_line::codmagaz_coll() const 
 | 
				
			||||||
 | 
					{ return _sub = _codmag_coll.left(3); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const TString& TMRP_line::coddep() const 
 | 
				
			||||||
 | 
					{ return _sub = _codmag.mid(3); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const TString& TMRP_line::coddep_coll() const 
 | 
				
			||||||
 | 
					{ return _sub = _codmag_coll.mid(3); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const TString& TMRP_line::livgiac(int l) const 
 | 
					const TString& TMRP_line::livgiac(int l) const 
 | 
				
			||||||
{ 
 | 
					{ 
 | 
				
			||||||
  const TCodgiac_livelli& lg = livelli_giacenza();
 | 
					  const TCodgiac_livelli& lg = livelli_giacenza();
 | 
				
			||||||
  return _livgiac.mid(lg.code_start(l)-1, lg.code_length(l));
 | 
					  return _sub = _livgiac.mid(lg.code_start(l)-1, lg.code_length(l));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TMRP_line::lotti_riordino(real& minimo, real& increm) const 
 | 
					void TMRP_line::lotti_riordino(real& minimo, real& increm) const 
 | 
				
			||||||
@ -948,6 +963,7 @@ private:
 | 
				
			|||||||
  bool gross2net_logic(TMRP_line &curr_article, int bucket, bool & sc_used);
 | 
					  bool gross2net_logic(TMRP_line &curr_article, int bucket, bool & sc_used);
 | 
				
			||||||
  bool load_gross_requirements();
 | 
					  bool load_gross_requirements();
 | 
				
			||||||
  bool load_planned_orders();
 | 
					  bool load_planned_orders();
 | 
				
			||||||
 | 
						bool ciclica(TDistinta_tree& distinta);
 | 
				
			||||||
  bool explode_articles();
 | 
					  bool explode_articles();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool test_codnum(const TCodice_numerazione& num, const TString_array& a) const;
 | 
					  bool test_codnum(const TCodice_numerazione& num, const TString_array& a) const;
 | 
				
			||||||
@ -1572,7 +1588,18 @@ void TMatResMask::select_orders(char type, const char * dacatmer,const char * ac
 | 
				
			|||||||
  xvtil_statbar_set(msg);
 | 
					  xvtil_statbar_set(msg);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static bool handle_interval(TMask_field &fld, KEY k)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (fld.to_check(k, true))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
							TMatResMask & m = ((TMatResMask &)fld.mask());
 | 
				
			||||||
 | 
							const TDate & from = m.get_date(F_DADATA);
 | 
				
			||||||
 | 
							const TDate & to = m.get_date(F_ADATA);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							m.calendar().set_highlight_interval(from, to);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TMatResMask::TMatResMask() : TCalendar_mask("mr2100a"), _sel_color(sfield(F_ORDINI)) 
 | 
					TMatResMask::TMatResMask() : TCalendar_mask("mr2100a"), _sel_color(sfield(F_ORDINI)) 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1598,6 +1625,12 @@ TMatResMask::TMatResMask() : TCalendar_mask("mr2100a"), _sel_color(sfield(F_ORDI
 | 
				
			|||||||
    set(F_NOIMP, "X");
 | 
					    set(F_NOIMP, "X");
 | 
				
			||||||
  }                                  
 | 
					  }                                  
 | 
				
			||||||
  _nodist_pos =_sel_color.add_color_def("NODIST", TR("Art.pianificati senza distinta"), COLOR_YELLOW, COLOR_BLACK);
 | 
					  _nodist_pos =_sel_color.add_color_def("NODIST", TR("Art.pianificati senza distinta"), COLOR_YELLOW, COLOR_BLACK);
 | 
				
			||||||
 | 
					  set_handler(F_DADATA, handle_interval);
 | 
				
			||||||
 | 
					  set_handler(F_ADATA, handle_interval);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						TCalendar_field & cf = (TCalendar_field &) field(F_CALENDAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cf.set_immediate_write();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////
 | 
				
			||||||
@ -2117,6 +2150,14 @@ bool TMatResPlanning::load_gross_requirements()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/////////// finished: 100%
 | 
					/////////// finished: 100%
 | 
				
			||||||
/////////// tested  : 100%
 | 
					/////////// tested  : 100%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static bool cyclic(TTree& tree, void* jolly, word flags)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						TDistinta_tree & distinta = (TDistinta_tree &) tree;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return distinta.is_cyclic();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool TMatResPlanning::explode_articles() 
 | 
					bool TMatResPlanning::explode_articles() 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  const TMatResMask& m = *_mask;
 | 
					  const TMatResMask& m = *_mask;
 | 
				
			||||||
@ -2171,7 +2212,15 @@ bool TMatResPlanning::explode_articles()
 | 
				
			|||||||
    if (distinta.set_root(line.articolo(), "", 1.0 , line.livgiac()))
 | 
					    if (distinta.set_root(line.articolo(), "", 1.0 , line.livgiac()))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      line.set_final_product(FALSE);
 | 
					      line.set_final_product(FALSE);
 | 
				
			||||||
      distinta.explode(boom, FALSE, RAGGR_EXP_UMBASE, 1, "AV");
 | 
					
 | 
				
			||||||
 | 
								distinta.goto_root();
 | 
				
			||||||
 | 
								if (distinta.scan_depth_first(cyclic, NULL))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									TToken_string & rdoc = (TToken_string &)line.da_rdoc_key();
 | 
				
			||||||
 | 
									error_box ("Ordine %s %d/%ld riga n. %d - Distinta %s ciclica", (const char *) rdoc.left(4), atoi(rdoc.mid(4, 4)), atoi(rdoc.mid(9, 7)), atoi(rdoc.mid(16)), (const char *) line.articolo());
 | 
				
			||||||
 | 
									continue;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								distinta.explode(boom, FALSE, RAGGR_EXP_UMBASE, 1, "AV");
 | 
				
			||||||
      for (int i = 0; i < boom.items(); i++)
 | 
					      for (int i = 0; i < boom.items(); i++)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        const TRiga_esplosione& riga = (const TRiga_esplosione&)boom[i];
 | 
					        const TRiga_esplosione& riga = (const TRiga_esplosione&)boom[i];
 | 
				
			||||||
@ -3643,3 +3692,4 @@ int mr2100(int argc, char* argv[])
 | 
				
			|||||||
  a.run(argc, argv, TR("Material Requirements Planning"));
 | 
					  a.run(argc, argv, TR("Material Requirements Planning"));
 | 
				
			||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -131,10 +131,10 @@ public:
 | 
				
			|||||||
  const TString& description() const { return _descr; }
 | 
					  const TString& description() const { return _descr; }
 | 
				
			||||||
  const TString& da_rdoc_key() const { return _da_rdoc_key; }
 | 
					  const TString& da_rdoc_key() const { return _da_rdoc_key; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const TString& codmag() const { return _codmag.left(3);}
 | 
					  const TString& codmag() const;
 | 
				
			||||||
  const TString& codmagaz_coll() const { return _codmag_coll.left(3); }
 | 
					  const TString& codmagaz_coll() const;
 | 
				
			||||||
  const TString& coddep() const { return _codmag.mid(3); }
 | 
					  const TString& coddep() const;
 | 
				
			||||||
  const TString& coddep_coll() const { return _codmag_coll.mid(3); }
 | 
					  const TString& coddep_coll() const;
 | 
				
			||||||
  const TString& livgiac(int l) const;
 | 
					  const TString& livgiac(int l) const;
 | 
				
			||||||
  int explosion_depth() const { return _explosion_depth; }
 | 
					  int explosion_depth() const { return _explosion_depth; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -531,16 +531,7 @@ bool TPlanning_mask::carica_documenti()
 | 
				
			|||||||
	TDate datalim(date_fr);
 | 
						TDate datalim(date_fr);
 | 
				
			||||||
	const int days = days_per_bucket();
 | 
						const int days = days_per_bucket();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (days < 7 )
 | 
						datalim -= get_int(F_LIM);
 | 
				
			||||||
		datalim -= 7;
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		if (days < 31)
 | 
					 | 
				
			||||||
			datalim.addmonth(-1);
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
		if (days < 180)
 | 
					 | 
				
			||||||
			datalim.addmonth(-3);
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			datalim -= days * 2;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TTable num("%NUM");
 | 
					  TTable num("%NUM");
 | 
				
			||||||
	TCodice_numerazione cod;
 | 
						TCodice_numerazione cod;
 | 
				
			||||||
@ -683,19 +674,20 @@ bool TPlanning_mask::carica_documenti()
 | 
				
			|||||||
							{
 | 
												{
 | 
				
			||||||
								if (skip)
 | 
													if (skip)
 | 
				
			||||||
								{
 | 
													{
 | 
				
			||||||
									const TRectype * doc = riga.find_original_doc();
 | 
														const p = riga.get_long(RDOC_PRIORITY);
 | 
				
			||||||
									
 | 
														line = _constraints.find(cli, art, liv, imp, ignore_lin ? "" : lin, mag, magc, da_rdoc_key, false);
 | 
				
			||||||
									if (doc != NULL)
 | 
														if ( line != NULL)
 | 
				
			||||||
									{
 | 
														{
 | 
				
			||||||
										const int stato = doc->get_int(DOC_STATO);
 | 
					 | 
				
			||||||
									
 | 
														
 | 
				
			||||||
										if (test_status(*doc, tn) < 0)
 | 
															if (p > line->priority())
 | 
				
			||||||
 | 
																line->priority(p);
 | 
				
			||||||
 | 
															else
 | 
				
			||||||
											continue;
 | 
																continue;
 | 
				
			||||||
									}
 | 
														}
 | 
				
			||||||
									else
 | 
														else
 | 
				
			||||||
										continue;
 | 
															continue;
 | 
				
			||||||
								}
 | 
													}
 | 
				
			||||||
                line = _articles.find(cli, art, liv, imp, lin, mag, magc, da_rdoc_key, true);
 | 
													line = _articles.find(cli, art, liv, imp, lin, mag, magc, da_rdoc_key, true);
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              if (line->description().blank())
 | 
					              if (line->description().blank())
 | 
				
			||||||
@ -3827,6 +3819,24 @@ static bool handle_codice(TMask_field &fld, KEY k)
 | 
				
			|||||||
  return true;
 | 
					  return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static bool handle_interval(TMask_field &fld, KEY k)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (fld.to_check(k, true))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
							TPlanning_mask & m = ((TPlanning_mask &)fld.mask());
 | 
				
			||||||
 | 
							const TDate & from = m.get_date(F_DADATA);
 | 
				
			||||||
 | 
							TDate to(m.get_date(F_DADATA));
 | 
				
			||||||
 | 
							int days = m.days_per_bucket();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (days < 7)
 | 
				
			||||||
 | 
								days = 7;
 | 
				
			||||||
 | 
							to += days;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							m.calendar().set_highlight_interval(from, to);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TPlanning_mask::create_browse1(TEdit_field& kfld, int level, short key_id, short des_id, const TCodart_livelli &cal)
 | 
					void TPlanning_mask::create_browse1(TEdit_field& kfld, int level, short key_id, short des_id, const TCodart_livelli &cal)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TFilename tmp; tmp.temp();
 | 
					  TFilename tmp; tmp.temp();
 | 
				
			||||||
@ -3932,6 +3942,9 @@ void TPlanning_mask::init()
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
  create_codart_fields(10, 4, F_LIVART1, F_DESART1);
 | 
					  create_codart_fields(10, 4, F_LIVART1, F_DESART1);
 | 
				
			||||||
  set_handler(F_CODART, handle_codice);
 | 
					  set_handler(F_CODART, handle_codice);
 | 
				
			||||||
 | 
					  set_handler(F_DADATA, handle_interval);
 | 
				
			||||||
 | 
					  set_handler(F_BUCKETS, handle_interval);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TConfig ini(CONFIG_DITTA, "mg");
 | 
					  TConfig ini(CONFIG_DITTA, "mg");
 | 
				
			||||||
  if (!ini.get_bool("GESDEPOSITI"))
 | 
					  if (!ini.get_bool("GESDEPOSITI"))
 | 
				
			||||||
@ -3958,6 +3971,11 @@ void TPlanning_mask::init()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  load_profile();
 | 
					  load_profile();
 | 
				
			||||||
  _npr_pos =_sel_color.add_color_def("PROP", TR("Nuove proposte"), COLOR_YELLOW, COLOR_BLACK);
 | 
					  _npr_pos =_sel_color.add_color_def("PROP", TR("Nuove proposte"), COLOR_YELLOW, COLOR_BLACK);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						TCalendar_field & cf = (TCalendar_field &) field(F_CALENDAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cf.set_immediate_write();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -100,6 +100,7 @@
 | 
				
			|||||||
#define F_IGNORE_PREC      268
 | 
					#define F_IGNORE_PREC      268
 | 
				
			||||||
#define F_SINGLE_DOC       269
 | 
					#define F_SINGLE_DOC       269
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define F_MSP_SORT_PRILIN  290
 | 
					#define F_MSP_SORT_PRILIN  290
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -136,6 +137,7 @@
 | 
				
			|||||||
#define F_NUMBERBYWEEK     271
 | 
					#define F_NUMBERBYWEEK     271
 | 
				
			||||||
#define F_DIVIDEBYART      273
 | 
					#define F_DIVIDEBYART      273
 | 
				
			||||||
#define F_DIVIDEBYDATE     272
 | 
					#define F_DIVIDEBYDATE     272
 | 
				
			||||||
 | 
					#define F_LIM              274
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define F_YEAR            301
 | 
					#define F_YEAR            301
 | 
				
			||||||
#define F_IMPIANTO        302
 | 
					#define F_IMPIANTO        302
 | 
				
			||||||
 | 
				
			|||||||
@ -92,7 +92,7 @@ END
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LIST F_BUCKETS 1 15
 | 
					LIST F_BUCKETS 1 15
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 2 6  "Intervallo       "
 | 
					  PROMPT 2 5  "Intervallo       "
 | 
				
			||||||
  ITEM "1|1 Settimana" 
 | 
					  ITEM "1|1 Settimana" 
 | 
				
			||||||
    MESSAGE SHOW,G_BUCKET_WEEK@|HIDE,G_BUCKET_DEF@|COPY,F_BUCKET|"7",F_DAYXBUCK
 | 
					    MESSAGE SHOW,G_BUCKET_WEEK@|HIDE,G_BUCKET_DEF@|COPY,F_BUCKET|"7",F_DAYXBUCK
 | 
				
			||||||
  ITEM "2|2 Settimane" 
 | 
					  ITEM "2|2 Settimane" 
 | 
				
			||||||
@ -120,13 +120,13 @@ END
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
NUMBER H_BUCKET 2
 | 
					NUMBER H_BUCKET 2
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 41 6  "= "
 | 
					  PROMPT 41 5  "= "
 | 
				
			||||||
  FLAGS "D"
 | 
					  FLAGS "D"
 | 
				
			||||||
  GROUP G_BUCKET_WEEK
 | 
					  GROUP G_BUCKET_WEEK
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
NUMBER F_BUCKET 2
 | 
					NUMBER F_BUCKET 2
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 41 6  "= "
 | 
					  PROMPT 41 5  "= "
 | 
				
			||||||
  FLAGS "GU"
 | 
					  FLAGS "GU"
 | 
				
			||||||
  CHECKTYPE REQUIRED
 | 
					  CHECKTYPE REQUIRED
 | 
				
			||||||
  MESSAGE COPY,H_BUCKET
 | 
					  MESSAGE COPY,H_BUCKET
 | 
				
			||||||
@ -134,12 +134,16 @@ BEGIN
 | 
				
			|||||||
END
 | 
					END
 | 
				
			||||||
LIST F_DAYXBUCK 1 9
 | 
					LIST F_DAYXBUCK 1 9
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 48 6  ""
 | 
					  PROMPT 48 5  ""
 | 
				
			||||||
  ITEM "1|giorni"
 | 
					  ITEM "1|giorni"
 | 
				
			||||||
  ITEM "7|settimane"
 | 
					  ITEM "7|settimane"
 | 
				
			||||||
  FLAGS "D"
 | 
					  FLAGS "D"
 | 
				
			||||||
  GROUP G_BUCKET_WEEK 
 | 
					  GROUP G_BUCKET_WEEK 
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					NUMBER F_LIM 2
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 2 6 "Gg.limite residui"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
BOOL F_RESCHEDULING
 | 
					BOOL F_RESCHEDULING
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 2 9  "Permetti rescheduling"
 | 
					  PROMPT 2 9  "Permetti rescheduling"
 | 
				
			||||||
 | 
				
			|||||||
@ -879,8 +879,24 @@ void TMSP_constraint::fill_sheet_row(TToken_string& row, const TMask & m, const
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (userdesc.full())
 | 
							if (userdesc.full())
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								const int p0 = val.find(__sep);
 | 
				
			||||||
 | 
								int p1 = val.find(',');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (p1 >= 0 && val[p1 + 1] != ' ')
 | 
				
			||||||
 | 
									p1 = -1;
 | 
				
			||||||
			userdesc << ", ";
 | 
								userdesc << ", ";
 | 
				
			||||||
		val.insert(userdesc);
 | 
								
 | 
				
			||||||
 | 
								if ((p0 >= 0) && (p1 > p0))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									val = userdesc;
 | 
				
			||||||
 | 
									val  << cache().get(LF_ANAMAG, articolo(), ANAMAG_DESCR);
 | 
				
			||||||
 | 
									if (da_rdoc_key.full())
 | 
				
			||||||
 | 
										val << '¦' << da_rdoc_key;
 | 
				
			||||||
 | 
								}	
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									val.insert(userdesc);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
  row.add(val, F_DESCART-FIRST_FIELD);
 | 
					  row.add(val, F_DESCART-FIRST_FIELD);
 | 
				
			||||||
  row.add(codimp(),F_CODIMP-FIRST_FIELD);
 | 
					  row.add(codimp(),F_CODIMP-FIRST_FIELD);
 | 
				
			||||||
 | 
				
			|||||||
@ -724,12 +724,14 @@ class TCalendar_win : public TField_window
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  int _anno;
 | 
					  int _anno;
 | 
				
			||||||
  TMRP_calendar* _calendario;
 | 
					  TMRP_calendar* _calendario;
 | 
				
			||||||
 | 
						bool	_immediate_write;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
  virtual void handler(WINDOW win, EVENT* ep);
 | 
					  virtual void handler(WINDOW win, EVENT* ep);
 | 
				
			||||||
  virtual void update();
 | 
					  virtual void update();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
 | 
						void set_immediate_write(bool on = true) { _immediate_write = on; }
 | 
				
			||||||
  void set_calendar(TMRP_calendar* cal, int year = 0);
 | 
					  void set_calendar(TMRP_calendar* cal, int year = 0);
 | 
				
			||||||
  TMRP_calendar* get_calendar() { return _calendario; }
 | 
					  TMRP_calendar* get_calendar() { return _calendario; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -818,6 +820,8 @@ void TCalendar_win::handler(WINDOW win, EVENT* ep)
 | 
				
			|||||||
              else
 | 
					              else
 | 
				
			||||||
                _calendario->suppress_holiday(d.day(), d.month());
 | 
					                _calendario->suppress_holiday(d.day(), d.month());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
											if (_immediate_write)
 | 
				
			||||||
 | 
												_calendario->write();
 | 
				
			||||||
            owner().set_dirty();
 | 
					            owner().set_dirty();
 | 
				
			||||||
            force_update();
 | 
					            force_update();
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
@ -855,6 +859,41 @@ void TCalendar_win::update()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  _pixmap = true;
 | 
					  _pixmap = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TMRP_calendar* defcal = NULL;
 | 
				
			||||||
 | 
					  TMRP_calendar* cal = _calendario;
 | 
				
			||||||
 | 
					  if (cal == NULL)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    defcal = new TMRP_calendar();
 | 
				
			||||||
 | 
					    cal = defcal;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (cal->from().ok() ||	cal->to().ok())
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							TDate from = cal->from();
 | 
				
			||||||
 | 
							TDate to = cal->to();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (from.year() < _anno)
 | 
				
			||||||
 | 
								from = TDate(1,1, _anno);
 | 
				
			||||||
 | 
							if (to.year() > _anno)
 | 
				
			||||||
 | 
								to = TDate(31, 12, _anno);
 | 
				
			||||||
 | 
						  set_brush(FOCUS_BACK_COLOR);
 | 
				
			||||||
 | 
							hide_pen();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for (TDate d = from ; d <= to; ++d)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								RCT rect;
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								rect.left = rct.right * (d.day() + 1) / 33;
 | 
				
			||||||
 | 
								rect.right = rct.right * (d.day() + 2) / 33;
 | 
				
			||||||
 | 
								rect.top = rct.bottom * d.month() / 13;
 | 
				
			||||||
 | 
								rect.bottom = rct.bottom * (d.month() + 1) / 13;
 | 
				
			||||||
 | 
								xvt_dwin_draw_rect(win(), &rect);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						  set_brush(NORMAL_BACK_COLOR);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TString16 str;
 | 
					  TString16 str;
 | 
				
			||||||
  str << _anno;
 | 
					  str << _anno;
 | 
				
			||||||
  set_color(NORMAL_COLOR, NORMAL_BACK_COLOR);
 | 
					  set_color(NORMAL_COLOR, NORMAL_BACK_COLOR);
 | 
				
			||||||
@ -893,14 +932,6 @@ void TCalendar_win::update()
 | 
				
			|||||||
      set_font();
 | 
					      set_font();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TMRP_calendar* defcal = NULL;
 | 
					 | 
				
			||||||
  TMRP_calendar* cal = _calendario;
 | 
					 | 
				
			||||||
  if (cal == NULL)
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    defcal = new TMRP_calendar();
 | 
					 | 
				
			||||||
    cal = defcal;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  for (j = 1; j <= 12; j++)
 | 
					  for (j = 1; j <= 12; j++)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    const int y = rct.bottom * j / 13;
 | 
					    const int y = rct.bottom * j / 13;
 | 
				
			||||||
@ -964,6 +995,7 @@ TCalendar_win::TCalendar_win(int x, int y, int dx, int dy,
 | 
				
			|||||||
               WINDOW parent, TWindowed_field* owner)
 | 
					               WINDOW parent, TWindowed_field* owner)
 | 
				
			||||||
             : TField_window(x, y, dx, dy, parent, owner)
 | 
					             : TField_window(x, y, dx, dy, parent, owner)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						_immediate_write = false;
 | 
				
			||||||
  xvt_sbar_set_range(win(), HSCROLL, 0, 0);
 | 
					  xvt_sbar_set_range(win(), HSCROLL, 0, 0);
 | 
				
			||||||
  xvt_sbar_set_range(win(), VSCROLL, 0, 0);
 | 
					  xvt_sbar_set_range(win(), VSCROLL, 0, 0);
 | 
				
			||||||
  set_calendar(NULL);
 | 
					  set_calendar(NULL);
 | 
				
			||||||
@ -973,6 +1005,14 @@ TCalendar_win::TCalendar_win(int x, int y, int dx, int dy,
 | 
				
			|||||||
// TCalendar_field
 | 
					// TCalendar_field
 | 
				
			||||||
///////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TCalendar_field::set_immediate_write(bool on)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						TCalendar_win& cw = (TCalendar_win&)win();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cw.set_immediate_write(on);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TField_window* TCalendar_field::create_window(int x, int y, int dx, int dy, WINDOW parent)
 | 
					TField_window* TCalendar_field::create_window(int x, int y, int dx, int dy, WINDOW parent)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return new TCalendar_win(x, y, dx, dy, parent, this);
 | 
					  return new TCalendar_win(x, y, dx, dy, parent, this);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										10
									
								
								mr/mrplib.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								mr/mrplib.h
									
									
									
									
									
								
							@ -66,6 +66,9 @@ class TMRP_calendar : public TObject
 | 
				
			|||||||
  TAssoc_array _exc_imp, _exc_lin;
 | 
					  TAssoc_array _exc_imp, _exc_lin;
 | 
				
			||||||
  TString8 _codimp, _codlin;
 | 
					  TString8 _codimp, _codlin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TDate _from;
 | 
				
			||||||
 | 
						TDate _to;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
  void init_default();
 | 
					  void init_default();
 | 
				
			||||||
  TString& turni_del_mese(char tipo, int year, int month) const;
 | 
					  TString& turni_del_mese(char tipo, int year, int month) const;
 | 
				
			||||||
@ -107,6 +110,9 @@ public:
 | 
				
			|||||||
  const TString& linea() const { return _codlin; }
 | 
					  const TString& linea() const { return _codlin; }
 | 
				
			||||||
  const TString& impianto() const { return _codimp; }
 | 
					  const TString& impianto() const { return _codimp; }
 | 
				
			||||||
  char tipo() const;
 | 
					  char tipo() const;
 | 
				
			||||||
 | 
					  void set_highlight_interval(const TDate & from = botime, const TDate & to = botime) { _from = from; _to = to;} 
 | 
				
			||||||
 | 
						const TDate & from() const { return _from; }
 | 
				
			||||||
 | 
						const TDate & to() const { return _to; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TMRP_calendar(const char* linea = NULL, const char* impianto = NULL);
 | 
					  TMRP_calendar(const char* linea = NULL, const char* impianto = NULL);
 | 
				
			||||||
  virtual ~TMRP_calendar() { }
 | 
					  virtual ~TMRP_calendar() { }
 | 
				
			||||||
@ -119,6 +125,8 @@ protected: // TWindowed_field
 | 
				
			|||||||
                                       WINDOW parent);
 | 
					                                       WINDOW parent);
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  void set_calendar(TMRP_calendar* cal, int year = 0);
 | 
					  void set_calendar(TMRP_calendar* cal, int year = 0);
 | 
				
			||||||
 | 
						void set_immediate_write(bool on = true);
 | 
				
			||||||
 | 
						void reset_immediate_write() { set_immediate_write(false); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TCalendar_field(TMask* m) : TWindowed_field(m) { }
 | 
					  TCalendar_field(TMask* m) : TWindowed_field(m) { }
 | 
				
			||||||
  virtual ~TCalendar_field() { }
 | 
					  virtual ~TCalendar_field() { }
 | 
				
			||||||
@ -137,7 +145,7 @@ public:
 | 
				
			|||||||
//  void save_profile();
 | 
					//  void save_profile();
 | 
				
			||||||
//  void load_profile();
 | 
					//  void load_profile();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const TMRP_calendar& calendar() const { return _calendar; }
 | 
						const TMRP_calendar& calendar() const { return _calendar; }
 | 
				
			||||||
  void update_calendar(short calendar, short year, short plant = 0, short line = 0);
 | 
					  void update_calendar(short calendar, short year, short plant = 0, short line = 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TCalendar_mask(const char* name, int num = 0);
 | 
					  TCalendar_mask(const char* name, int num = 0);
 | 
				
			||||||
 | 
				
			|||||||
@ -200,7 +200,7 @@ void TGenera_ordini_mask::update_sheet()
 | 
				
			|||||||
		row.add(recset.get(ANAMAG_GIORNIRIOR).as_string(), sf.cid2index(F_LEADTIME));
 | 
							row.add(recset.get(ANAMAG_GIORNIRIOR).as_string(), sf.cid2index(F_LEADTIME));
 | 
				
			||||||
		row.add(recset.get(ANAMAG_LOTTORIOR).as_string(), sf.cid2index(F_LOTTOMIN));
 | 
							row.add(recset.get(ANAMAG_LOTTORIOR).as_string(), sf.cid2index(F_LOTTOMIN));
 | 
				
			||||||
		row.add(recset.get(ANAMAG_DESCRAGG).as_string(), sf.cid2index(F_DESCRAGG));
 | 
							row.add(recset.get(ANAMAG_DESCRAGG).as_string(), sf.cid2index(F_DESCRAGG));
 | 
				
			||||||
		row.add(giac.stringa(), sf.cid2index(F_GIACENZA));
 | 
							row.add(giac.string(), sf.cid2index(F_GIACENZA));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		row.add(recset.get(ANAMAG_PPCONF).as_string(), sf.cid2index(F_PPCONF));
 | 
							row.add(recset.get(ANAMAG_PPCONF).as_string(), sf.cid2index(F_PPCONF));
 | 
				
			||||||
		row.add(recset.get(ANAMAG_USER1).as_string(), sf.cid2index(F_USER1));
 | 
							row.add(recset.get(ANAMAG_USER1).as_string(), sf.cid2index(F_USER1));
 | 
				
			||||||
@ -405,7 +405,7 @@ void TCreazione_ordini::generate_orders(TGenera_ordini_mask & mask)
 | 
				
			|||||||
  FOR_EACH_SHEET_ROW(sf, n, row)
 | 
					  FOR_EACH_SHEET_ROW(sf, n, row)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
		const real qta(row->get(sf.cid2index(F_QTA)));
 | 
							const real qta(row->get(sf.cid2index(F_QTA)));
 | 
				
			||||||
		if (qta > ZERO)
 | 
							if (qta != ZERO)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const TString16 codforn(row->get(sf.cid2index(F_FORNITORE)));
 | 
								const TString16 codforn(row->get(sf.cid2index(F_FORNITORE)));
 | 
				
			||||||
			const long cod = atoi(codforn);
 | 
								const long cod = atoi(codforn);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user