function calculeRemise()
{
	var PU = parseFloat($('#input_ligne_PU').val().replace(' ', '').replace(',', '.'));
	var Quantite =parseFloat($('#input_ligne_QTE_COMM').val().replace(' ', '').replace(',', '.'));
	var Remise = parseFloat($('#input_ligne_REMISE').val().replace(' ', '').replace(',', '.'));

	if (!PU) {
		Remise = 0;
	}

	if (!Quantite) {
		Quantite = 0;
	}

	if (!Remise) {
		Remise = 0;
	}

	var puRemise = parseFloat(PU * (1-(Remise/100)));
	var HTremise = parseFloat((PU*Quantite)* (1-(Remise/100)));
	var TTCNonRemise = parseFloat((PU*Quantite));

	$('#input_ligne_PUR').val(formatNombre(puRemise.toFixed(2), ' '));
	$('#input_ligne_HTR').val(formatNombre(HTremise.toFixed(2), ' '));
	$('#input_ligne_HTNR').val(formatNombre(TTCNonRemise.toFixed(2), ' '));
	$('#cellMontantHT').html(formatNombre(HTremise.toFixed(2), ' '));
}

/* on vérifie qu'un input idLigneModeModif existe, 
 * si c'est le cas, c'est qu'une ligne est déjà en création/modification 
 * Dans ce cas, on éxécute la validation de la ligne
 * Si après validation la ligne existe toujours, on fait rien. 
 * La popup d'erreur de la ligne s'affichera et indiquera les elements a corigé a l'utilsateur
 * Dans le cas contraire, la ligne sera créer et une nouvelle ligne s'ouvrira
 */
function addCaLigne() {
	var affichageNewligne = false;
	if($('.idLigneCde').length>998)
	{
		alert('Vous ne pouvez pas créer plus de 999 lignes par commandes.');
		return false;
	}
	
	var modeModifActif = $('#idLigneModeModif').val();
	if(modeModifActif) {
		affichageNewligne = validationLigne(
			window.formCdeUpdateConfig.pathValidateLigne,
			modeModifActif
		);
	} else {
		affichageNewligne = true;
	}

	if(affichageNewligne) {
		activeLoader();
		var index = $('.idLigneCde').last().attr('data-idLigne');
		
		if(index=== undefined)
			index = 0;

		index = parseInt(index) + 1;

		// TODO : investigate when "saving" caLigne every client-side validator are triggered, why ?
		
		$.ajax({
		  	dataType : 'html',
			url: window.formCdeUpdateConfig.pathAddLigne,
//			data: {index : index},
			data : $('#form_creationCde').serialize()+'&index='+index,
			type: "POST",
			success: function(result){
				// TODO : remove
				var parametreJS = '<script type="text/javascript" src="'+baseUrl+'js/parametre.js"/>';
				var globalJS = '<script type="text/javascript" src="'+baseUrl+'js/global.js"/>';
				var validator = '<script type="text/javascript" src="'+baseUrl+'js/validator.js"/>';
	
				$('table#ligneCde tbody tr:last-child').after(result+'<tr id="LIGNE'+index+'JS">'+parametreJS+globalJS+validator+'</tr>');
				
				desactiveLoader();
				document
					.getElementById('LIGNE'+(index))
					.scrollIntoView({ behavior: "smooth", block: "start" });
			}
		});
	}
}

function modificationLigne(index, path, pathValidation)
{
	var affichageNewligne = false;
	var modeModifActif = $('#idLigneModeModif').val();
	if(modeModifActif)
	{
		affichageNewligne = validationLigne(pathValidation, modeModifActif);
	}
	else
	{
		affichageNewligne = true;
	}

	
	if(affichageNewligne)
	{
		activeLoader();

		var cdeExp = false;
		if ($('#input_CDE_EXP').is(':checked')) {
			cdeExp = true;
		}
		
		$.ajax({
		  	dataType : 'html',
			url: path,
			data: {index : index, CDE_EXP : cdeExp},
			type: "POST",
			success: function(result){
				
				var parametreJS = '<script type="text/javascript" src="'+baseUrl+'js/parametre.js"/>';
				var globalJS = '<script type="text/javascript" src="'+baseUrl+'js/global.js"/>';
				var validator = '<script type="text/javascript" src="'+baseUrl+'js/validator.js"/>';
	
				$('#LIGNE'+index+'NON_MODIF').before(result+'<tr id="LIGNE'+index+'JS">'+parametreJS+globalJS+validator+'</tr>');
				
				$('#LIGNE'+index+'NON_MODIF').remove();

				$('#LIGNE'+index+'NON_MODIF_AVLIGNE').remove();
				$('#LIGNE'+index+'NON_MODIF_SSTOAPR').remove();
				
				desactiveLoader();
			}
		});
	}
}

function validationLigne(path, idLigne, pathDeleteTP) {
	activeLoader();
	$.ajax({
		dataType: "html",
		url: path,
		type: "POST",
		async: false,
		data: $("#form_creationCde").serialize(),
		success: function (data) {
			$("#ligneCde > tbody:last").append(data);

			$("#LIGNE" + idLigne + "").remove();
			$("#LIGNE" + idLigne + "detail").remove();
			$("#LIGNE" + idLigne + "JS").remove();
			$.ajax({
				url: pathDeleteTP,
				method: "POST",
			});
			desactiveLoader();

			$("#nb_affectation_ligne").html($(".idLigneCde").length);

			refrechDiv(window.location.pathname, "montantCde", "");
		},
		error: function (xhr) {
			desactiveLoader();
			activePopup(null, xhr.responseText, "modal_small");
		},
	});
}

function validationCde(confirm) {
	let form = document.getElementById("form_creationCde");
	let formData = new FormData(form);
	if (confirm) {
		formData.append("confirm", "1");
	}
	activeLoader();
	$.ajax({
		url: form.action,
		type: "POST",
		dataType: "html",
		data: formData,
		contentType: false,
		processData: false,
		success: function (htmlData) {
			$("#modal-content").addClass("modal_small");
			$("#modal-body").html(htmlData);
			activePopup();
			desactiveLoader();
		},
		error: function (xhr) {
			let response = JSON.parse(xhr.responseText);
			if (response.type == "confirm") {
				desactiveLoader();
				activePopup(
					"Erreur validation", // TODO : translate
					response.popupHtml,
					"modal_small"
				);
				document
					.querySelector("[data-popupwarning-cancel]")
					.addEventListener("click", function () {
						desactivePopup();
					});
				document
					.querySelector("[data-popupwarning-continue]")
					.addEventListener("click", function () {
						// Resend form with confirm
						validationCde(true);
						desactivePopup();
					});
				return;
			}

			window.location.href = response.path;
		},
	});
}

/* CLAUSE */

function ajoutClause(path, pathValidation) {
	var affichageNewClause = false;
	var index = $(".idClauseCde").last().attr("data-idClause");
	if (index === undefined) {
		index = 1;
	} else {
		index = parseInt(index) + 1;
	}

	var clauseModifActif = $("#clause_NO_ORDRE").val();

	if (clauseModifActif) {
		affichageNewClause = validationClause(pathValidation, clauseModifActif);
		console.log(affichageNewClause);
	} else {
		affichageNewClause = true;
	}

	if (affichageNewClause) {
		$.ajax({
			dataType: "html",
			url: path,
			data: { index: index },
			type: "POST",
			success: function (result) {
				var parametreJS =
					'<script type="text/javascript" src="' +
					baseUrl +
					'js/parametre.js"/>';
				var globalJS =
					'<script type="text/javascript" src="' +
					baseUrl +
					'js/global.js"/>';
				var validator =
					'<script type="text/javascript" src="' +
					baseUrl +
					'js/validator.js"/>';

				$("table#tabClause tbody tr:last-child").before(
					result +
						'<tr id="CLAUSE' +
						parseInt(index) +
						'JS">' +
						parametreJS +
						globalJS +
						validator +
						"</tr>"
				);

				desactiveLoader();
				//$('html,body').animate({scrollTop: $('#CLAUSE'+(parseInt(index)+1)+'').offset().top},'slow');
			},
		});
	}
}

function modificationClause(index, path, pathValidation) {
	console.log(index);
	var affichageNewClause = false;
	var clauseModifActif = $("#clause_NO_ORDRE").val();
	if (clauseModifActif) {
		affichageNewClause = validationLigne(pathValidation, clauseModifActif);
	} else {
		affichageNewClause = true;
	}

	if (affichageNewClause) {
		activeLoader();

		$.ajax({
			dataType: "html",
			url: path,
			data: { index: index },
			type: "POST",
			success: function (result) {
				var parametreJS =
					'<script type="text/javascript" src="' +
					baseUrl +
					'js/parametre.js"/>';
				var globalJS =
					'<script type="text/javascript" src="' +
					baseUrl +
					'js/global.js"/>';
				var validator =
					'<script type="text/javascript" src="' +
					baseUrl +
					'js/validator.js"/>';

				$("#CLAUSE" + index + "NON_MODIF").before(
					result +
						'<tr id="CLAUSE' +
						index +
						'JS">' +
						parametreJS +
						globalJS +
						validator +
						"</tr>"
				);
				$("#CLAUSE" + index + "NON_MODIF").remove();

				desactiveLoader();
			},
		});
	}
}

function validationClause(path, idClause) {
	var test;
	activeLoader();
	$.ajax({
		dataType: "html",
		url: path,
		type: "POST",
		async: false,
		data: $("#form_creationCde").serialize(),
		success: function (data) {
			desactiveLoader();
			$("#modal-content").addClass("modal_small");
			$("#modal-body").html(data);
			activePopup();
			test = false;
		},
		error: function (data) {
			$("#CLAUSE" + idClause + "JS").after(data.responseText);

			$("#CLAUSE" + idClause + "").remove();
			$("#CLAUSE" + idClause + "JS").remove();
			desactiveLoader();

			test = true;
		},
	});

	return test;
}

function deleteClause(path, idClause) {
	var confirmation = confirm(messageDeleteClause + " " + idClause + " ?");

	if (confirmation) {
		activeLoader();
		$.ajax({
			dataType: "html",
			url: path,
			type: "POST",
			data: { clause_NO_ORDRE: idClause },
			success: function (data) {
				desactiveLoader();

				$("#CLAUSE" + idClause + "NON_MODIF").remove();
			},
		});
	}
}

function deleteLigne(path, idLigne, pathDeleteTP) {
	var confirmation = confirm(
		messageDeleteLigne +
			" " +
			idLigne +
			" ?" +
			(messageHasTp != "" ? "\n" + messageHasTp : "")
	);

	if (confirmation) {
		activeLoader();
		
	    $.ajax({
	    	dataType : 'html',
	    	url : path ,
	        type: 'POST',
	        success: function (data) {       
				if (pathDeleteTP) {
					$.ajax({
						url: pathDeleteTP,
						method: "POST",
					});
				}

				desactiveLoader();

	        	$('#LIGNE'+idLigne+'NON_MODIF').remove();

				refrechDiv(window.location.pathname, 'montantCde');
	        },
	    });

	}
}
