diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php
index 39de2604a0d16a02c20dd018bfa1742ecdf1181e..b7654746dc087d755f4e30106035a36d0e330a36 100644
--- a/htdocs/core/tpl/objectline_create.tpl.php
+++ b/htdocs/core/tpl/objectline_create.tpl.php
@@ -527,10 +527,13 @@ jQuery(document).ready(function() {
 		jQuery('#trlinefordates').show();
 	});
 
-	/* When changing predefined product, we reload list of supplier prices */
+	/* When changing predefined product, we reload list of supplier prices required for margin combo */
 	$("#idprod, #idprodfournprice").change(function()
 	{
-		setforpredef();
+		console.log("#idprod, #idprodfournprice change triggered");
+		
+		setforpredef();		// TODO Keep vat combo visible and set it to first entry into list that match result of get_default_tva
+		
 		jQuery('#trlinefordates').show();
 
 		<?php
@@ -539,103 +542,107 @@ jQuery(document).ready(function() {
 			$langs->load('stocks');
 			?>
 
-		/* Code for margin */
-  		$("#fournprice_predef").find("option").remove();
-		$("#fournprice_predef").hide();
-		$("#buying_price").val("").show();
-		/* Call post to load content of combo list fournprice_predef */
-  		$.post('<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php?bestpricefirst=1', { 'idprod': $(this).val() }, function(data) {
-	    	if (data && data.length > 0)
-	    	{
-    	  		var options = '';
-    	  		var defaultkey = '';
-    	  		var defaultprice = '';
-	      		var bestpricefound = 0;
-	      		
-	      		var bestpriceid = 0; var bestpricevalue = 0;
-	      		var pmppriceid = 0; var pmppricevalue = 0;
-	      		var costpriceid = 0; var costpricevalue = 0;
-
-				/* setup of margin calculation */
-	      		var defaultbuyprice = '<?php 
-	      		if (isset($conf->global->MARGIN_TYPE))
-	      		{
-	      		    if ($conf->global->MARGIN_TYPE == '1')   print 'bestsupplierprice';
-	      		    if ($conf->global->MARGIN_TYPE == 'pmp') print 'pmp';
-	      		    if ($conf->global->MARGIN_TYPE == 'costprice') print 'costprice';
-	      		} ?>';
-	      		console.log("defaultbuyprice="+defaultbuyprice);
-	      		
-	      		var i = 0;
-	      		$(data).each(function() {
-	      			if (this.id != 'pmpprice' && this.id != 'costprice')
-		      		{
-		        		i++;
-                        this.price = parseFloat(this.price); // to fix when this.price >0
-			      		// If margin is calculated on best supplier price, we set it by defaut (but only if value is not 0)
-			      		console.log("id="+this.id+"-price="+this.price+"-"+(this.price > 0));
-		      			if (bestpricefound == 0 && this.price > 0) { defaultkey = this.id; defaultprice = this.price; bestpriceid = this.id; bestpricevalue = this.price; bestpricefound=1; }	// bestpricefound is used to take the first price > 0
-		      		}
-	      			if (this.id == 'pmpprice')
-	      			{
-	      				// If margin is calculated on PMP, we set it by defaut (but only if value is not 0)
-			      		console.log("id="+this.id+"-price="+this.price);
-			      		if ('pmp' == defaultbuyprice || 'costprice' == defaultbuyprice)
-			      		{
-			      			if (this.price > 0) { defaultkey = this.id; defaultprice = this.price; pmppriceid = this.id; pmppricevalue = this.price;
-			      			console.log("pmppricevalue="+pmppricevalue); }
-			      		}
-	      			}
-	      			if (this.id == 'costprice')
-	      			{
-	      				// If margin is calculated on Cost price, we set it by defaut (but only if value is not 0)
-			      		console.log("id="+this.id+"-price="+this.price+"-pmppricevalue="+pmppricevalue);
-			      		if ('costprice' == defaultbuyprice)
-			      		{
-		      				if (this.price > 0) { defaultkey = this.id; defaultprice = this.price; costpriceid = this.id; costpricevalue = this.price; }
-		      				else if (pmppricevalue > 0) { defaultkey = pmppriceid; defaultprice = pmppricevalue; }
-			      		}
-	      			}
-	        		options += '<option value="'+this.id+'" price="'+this.price+'">'+this.label+'</option>';
-	      		});
-	      		options += '<option value="inputprice" price="'+defaultprice+'"><?php echo $langs->trans("InputPrice"); ?></option>';
-
-	      		console.log("finally selected defaultkey="+defaultkey+" defaultprice="+defaultprice);
-
-	      		$("#fournprice_predef").html(options).show();
-	      		if (defaultkey != '')
-				{
-		      		$("#fournprice_predef").val(defaultkey);
-		      	}
-
-	      		/* At loading, no product are yet selected, so we hide field of buying_price */
-	      		$("#buying_price").hide();
-
-	      		/* Define default price at loading */
-	      		var defaultprice = $("#fournprice_predef").find('option:selected').attr("price");
-			    $("#buying_price").val(defaultprice);
-
-	      		$("#fournprice_predef").change(function() {
-		      		console.log("change on fournprice_predef");
-	      			/* Hide field buying_price according to choice into list (if 'inputprice' or not) */
-					var linevalue=$(this).find('option:selected').val();
-	        		var pricevalue = $(this).find('option:selected').attr("price");
-	        		if (linevalue != 'inputprice' && linevalue != 'pmpprice') {
-	          			$("#buying_price").val(pricevalue).hide();	/* We set value then hide field */
-	        		}
-	        		if (linevalue == 'inputprice') {
-		          		$('#buying_price').show();
-	        		}
-	        		if (linevalue == 'pmpprice') {
-	        			$("#buying_price").val(pricevalue);
-		          		$('#buying_price').hide();
-	        		}
-				});
-	    	}
-	  	},
-	  	'json');
-
-  		<?php } ?>
+    		/* Code for margin */
+      		$("#fournprice_predef").find("option").remove();
+    		$("#fournprice_predef").hide();
+    		$("#buying_price").val("").show();
+    		/* Call post to load content of combo list fournprice_predef */
+      		$.post('<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php?bestpricefirst=1', { 'idprod': $(this).val() }, function(data) {
+    	    	if (data && data.length > 0)
+    	    	{
+        	  		var options = '';
+        	  		var defaultkey = '';
+        	  		var defaultprice = '';
+    	      		var bestpricefound = 0;
+    	      		
+    	      		var bestpriceid = 0; var bestpricevalue = 0;
+    	      		var pmppriceid = 0; var pmppricevalue = 0;
+    	      		var costpriceid = 0; var costpricevalue = 0;
+    
+    				/* setup of margin calculation */
+    	      		var defaultbuyprice = '<?php 
+    	      		if (isset($conf->global->MARGIN_TYPE))
+    	      		{
+    	      		    if ($conf->global->MARGIN_TYPE == '1')   print 'bestsupplierprice';
+    	      		    if ($conf->global->MARGIN_TYPE == 'pmp') print 'pmp';
+    	      		    if ($conf->global->MARGIN_TYPE == 'costprice') print 'costprice';
+    	      		} ?>';
+    	      		console.log("we will set the field for margin. defaultbuyprice="+defaultbuyprice);
+    	      		
+    	      		var i = 0;
+    	      		$(data).each(function() {
+    	      			if (this.id != 'pmpprice' && this.id != 'costprice')
+    		      		{
+    		        		i++;
+                            this.price = parseFloat(this.price); // to fix when this.price >0
+    			      		// If margin is calculated on best supplier price, we set it by defaut (but only if value is not 0)
+    			      		//console.log("id="+this.id+"-price="+this.price+"-"+(this.price > 0));
+    		      			if (bestpricefound == 0 && this.price > 0) { defaultkey = this.id; defaultprice = this.price; bestpriceid = this.id; bestpricevalue = this.price; bestpricefound=1; }	// bestpricefound is used to take the first price > 0
+    		      		}
+    	      			if (this.id == 'pmpprice')
+    	      			{
+    	      				// If margin is calculated on PMP, we set it by defaut (but only if value is not 0)
+    			      		//console.log("id="+this.id+"-price="+this.price);
+    			      		if ('pmp' == defaultbuyprice || 'costprice' == defaultbuyprice)
+    			      		{
+    			      			if (this.price > 0) { 
+    				      			defaultkey = this.id; defaultprice = this.price; pmppriceid = this.id; pmppricevalue = this.price;
+    			      				//console.log("pmppricevalue="+pmppricevalue);
+    			      			}
+    			      		}
+    	      			}
+    	      			if (this.id == 'costprice')
+    	      			{
+    	      				// If margin is calculated on Cost price, we set it by defaut (but only if value is not 0)
+    			      		//console.log("id="+this.id+"-price="+this.price+"-pmppricevalue="+pmppricevalue);
+    			      		if ('costprice' == defaultbuyprice)
+    			      		{
+    		      				if (this.price > 0) { defaultkey = this.id; defaultprice = this.price; costpriceid = this.id; costpricevalue = this.price; }
+    		      				else if (pmppricevalue > 0) { defaultkey = pmppriceid; defaultprice = pmppricevalue; }
+    			      		}
+    	      			}
+    	        		options += '<option value="'+this.id+'" price="'+this.price+'">'+this.label+'</option>';
+    	      		});
+    	      		options += '<option value="inputprice" price="'+defaultprice+'"><?php echo $langs->trans("InputPrice"); ?></option>';
+    
+    	      		console.log("finally selected defaultkey="+defaultkey+" defaultprice="+defaultprice);
+    
+    	      		$("#fournprice_predef").html(options).show();
+    	      		if (defaultkey != '')
+    				{
+    		      		$("#fournprice_predef").val(defaultkey);
+    		      	}
+    
+    	      		/* At loading, no product are yet selected, so we hide field of buying_price */
+    	      		$("#buying_price").hide();
+    
+    	      		/* Define default price at loading */
+    	      		var defaultprice = $("#fournprice_predef").find('option:selected').attr("price");
+    			    $("#buying_price").val(defaultprice);
+    
+    	      		$("#fournprice_predef").change(function() {
+    		      		console.log("change on fournprice_predef");
+    	      			/* Hide field buying_price according to choice into list (if 'inputprice' or not) */
+    					var linevalue=$(this).find('option:selected').val();
+    	        		var pricevalue = $(this).find('option:selected').attr("price");
+    	        		if (linevalue != 'inputprice' && linevalue != 'pmpprice') {
+    	          			$("#buying_price").val(pricevalue).hide();	/* We set value then hide field */
+    	        		}
+    	        		if (linevalue == 'inputprice') {
+    		          		$('#buying_price').show();
+    	        		}
+    	        		if (linevalue == 'pmpprice') {
+    	        			$("#buying_price").val(pricevalue);
+    		          		$('#buying_price').hide();
+    	        		}
+    				});
+    	    	}
+    	  	},
+    	  	'json');
+
+  		<?php
+        }
+        ?>
 
   		/* To set focus */
   		if (jQuery('#idprod').val() > 0 || jQuery('#idprodfournprice').val() > 0) 
@@ -659,6 +666,7 @@ jQuery(document).ready(function() {
 
 /* Function to set fields from choice */
 function setforfree() {
+	console.log("Call setforfree. We show most fields");
 	jQuery("#search_idprod").val('');
 	jQuery("#idprod").val('');
 	jQuery("#idprodfournprice").val('0');	// Set cursor on not selected product
@@ -680,6 +688,7 @@ function setforfree() {
 	jQuery("#units, #title_units").show();
 }
 function setforpredef() {
+	console.log("Call setforpredef. We hide some fields");
 	jQuery("#select_type").val(-1);
 	jQuery("#prod_entry_mode_free").prop('checked',false);
 	jQuery("#prod_entry_mode_predef").prop('checked',true);