Patch level : 10.0 222
Files correlati : VE0.exe Ricompilazione Demo : [ ] Commento : Handler per la registrazione automatica di un livello di giacenza Esmpio [MAIN] LIVGEN(0) = 47.GRMERC[1,2]|34.ANNO[3,4]|PROG4 <<<<<<<----- [HANDLERS] NHANDLER = 2 1=105|7 2=106|8 <<<<<--------- git-svn-id: svn://10.65.10.50/trunk@18212 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									26ebee4491
								
							
						
					
					
						commit
						9ebac47880
					
				@ -402,8 +402,7 @@ class TTipo_riga_documento : public TRectype	// velib02
 | 
				
			|||||||
	TToken_string _field_list;
 | 
						TToken_string _field_list;
 | 
				
			||||||
	TToken_string _header;
 | 
						TToken_string _header;
 | 
				
			||||||
	bool _select_clifo;
 | 
						bool _select_clifo;
 | 
				
			||||||
 | 
						TArray _genconf;
 | 
				
			||||||
  
 | 
					 | 
				
			||||||
	int _decrp, _incrp;
 | 
						int _decrp, _incrp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
@ -445,6 +444,7 @@ public:
 | 
				
			|||||||
	const TString& provv() const { return _field_provv;}	
 | 
						const TString& provv() const { return _field_provv;}	
 | 
				
			||||||
	const int incr_perc_prezzo() const { return _incrp;}	
 | 
						const int incr_perc_prezzo() const { return _incrp;}	
 | 
				
			||||||
	const int decr_perc_prezzo() const { return _decrp;}	
 | 
						const int decr_perc_prezzo() const { return _decrp;}	
 | 
				
			||||||
 | 
						TToken_string * genconf(int i) const { return (TToken_string *) _genconf.objptr(i);}	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bool formfeed() const { return get_bool("B0"); }
 | 
						bool formfeed() const { return get_bool("B0"); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -110,6 +110,12 @@ void TTipo_riga_documento::read_formule()
 | 
				
			|||||||
  _field_imposta = profile.get("IMPOSTA");
 | 
					  _field_imposta = profile.get("IMPOSTA");
 | 
				
			||||||
  _incrp = profile.get_int("VARP+");
 | 
					  _incrp = profile.get_int("VARP+");
 | 
				
			||||||
  _decrp = profile.get_int("VARP-");
 | 
					  _decrp = profile.get_int("VARP-");
 | 
				
			||||||
 | 
						for (int i = 0; i < 4; i++)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							const TToken_string str(profile.get("LIVGEN", NULL, i));
 | 
				
			||||||
 | 
							if (str.full())
 | 
				
			||||||
 | 
								_genconf.add(str, i);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  add_formula_if_needed(profile, _imponibile, "IMPONIBILE", "IMPORTO(1)");
 | 
					  add_formula_if_needed(profile, _imponibile, "IMPONIBILE", "IMPORTO(1)");
 | 
				
			||||||
  add_formula_if_needed(profile, _quant,      "QUANT",      "QUANT()");
 | 
					  add_formula_if_needed(profile, _quant,      "QUANT",      "QUANT()");
 | 
				
			||||||
 | 
				
			|||||||
@ -406,6 +406,10 @@ void TDocumento_mask::user_set_row_handler(TMask& rm, short field, int index)
 | 
				
			|||||||
		if (field == FR_CODART)
 | 
							if (field == FR_CODART)
 | 
				
			||||||
			rm.set_handler(field, distinta_link_handler);
 | 
								rm.set_handler(field, distinta_link_handler);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
 | 
						case 8: 
 | 
				
			||||||
 | 
								if (field >= FR_LIV1 && field <= FR_LIV4)
 | 
				
			||||||
 | 
									m.set_handler(field, gen_livelli_handler);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -2630,3 +2634,74 @@ bool distinta_link_handler(TMask_field& f, KEY key )
 | 
				
			|||||||
	return codart_handler( f, key);
 | 
						return codart_handler( f, key);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool gen_livelli_handler(TMask_field& f, KEY key )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (key == K_F8 && f.get().blank())
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							TMask& row_mask = f.mask();   
 | 
				
			||||||
 | 
							TSheet_field& sh = *row_mask.get_sheet();
 | 
				
			||||||
 | 
							TDocumento_mask & m = (TDocumento_mask & )sh.mask();
 | 
				
			||||||
 | 
					    const TDocumento & d = m.doc();
 | 
				
			||||||
 | 
							const int row = sh.selected() + 1;
 | 
				
			||||||
 | 
							const int livello = f.dlg() - FR_LIV1;
 | 
				
			||||||
 | 
							const TRiga_documento & r = d[row];
 | 
				
			||||||
 | 
							TToken_string * str = r.tipo().genconf(livello);
 | 
				
			||||||
 | 
							if (str != NULL)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								const TString codart = row_mask.get(FR_CODART);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (codart.full())
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									TString code;
 | 
				
			||||||
 | 
									const TRectype & anamag = cache().get(LF_ANAMAG, codart);
 | 
				
			||||||
 | 
									const int items = str->items();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									for (int i = 0; i < items; i++)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										const TString & name = str->get(i);
 | 
				
			||||||
 | 
										if (name.starts_with("PROG"))
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											TTable lv(format("LV%1d", livello + 1));
 | 
				
			||||||
 | 
											const int chars = atoi(name.after("PROG"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											lv.put("CODTAB", code);
 | 
				
			||||||
 | 
											if (lv.read(_isequal) != NOERR)
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												lv.zero();
 | 
				
			||||||
 | 
												lv.put("CODTAB", code);
 | 
				
			||||||
 | 
												lv.write();
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											const int prog = lv.get_int("I0") + 1;
 | 
				
			||||||
 | 
											lv.put("I0", prog);
 | 
				
			||||||
 | 
											lv.rewrite();
 | 
				
			||||||
 | 
											TString s; s << prog; s.lpad(chars, '0');
 | 
				
			||||||
 | 
											code << s;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										else
 | 
				
			||||||
 | 
											if (name.starts_with("33."))
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												TFieldref fld(name.after("33."), LF_DOC);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
												code << fld.read(d);
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											else
 | 
				
			||||||
 | 
												if (name.starts_with("34."))
 | 
				
			||||||
 | 
												{
 | 
				
			||||||
 | 
													TFieldref fld(name.after("34."), LF_RIGHEDOC);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
													code << fld.read(d);
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												else
 | 
				
			||||||
 | 
													if (name.starts_with("47."))
 | 
				
			||||||
 | 
													{
 | 
				
			||||||
 | 
														TFieldref fld(name.after("47."), LF_ANAMAG);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
														code << fld.read(anamag);
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									row_mask.set(f.dlg(), code, 0x3);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user