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