$(function() {

	// Somente números e virgula(,) Valores percentuais %
	$('#salesman_percentage, #support_percent, #product_quantity, #percent_supp').on('keypress', function(ev) {
		if(ev.key.match(/[^\d\,]/)) {
			ev.preventDefault();
		}
	});

	// Change para limpar os campos de busca no filtro
	$('select#opt').on('change', function() {
		$('input[name="filter[tag]"]').val('');
		$('input[name="filter[optionList]"]').val('');
		$('div.show-result').hide(100);
	});

	// Opção de busca na página inicial
	$('input[name="filter[tag]"]').on('keyup', function() {
		let opt = parseInt($('select#opt').val());
		let text = $('input[name="filter[tag]"]').val();

		switch(opt) {
			case 1:
			utils.searchRequestBy('searchclient', text, 'show-result');
		break;

			case 2:
			utils.searchRequestBy('searchprovider', text, 'show-result');	
		break;

			case 4:
			utils.searchRequestBy('searchsalesman', text, 'show-result');	
		break;		
		}
	});

	// Clicar em um item da lista de busca no filtro
	$(document).on('click', 'div.show-result ul li', function() {
		let clicked = parseInt($(this).attr('data-list'));
		let text = $(this).html();

		$('input[name="filter[optionList]"]').val(clicked);
		$('input[name="filter[tag]"]').val(text);
		$('div.show-result').hide(100);
	});

	// Cif ou Fob
	$('input[type=radio]').on('click', function() {
		$('input[type="radio"]').prop('checked', false);
		$(this).prop('checked', true);		
	});

	// Busca e seleção de cliente
	$('input[name="search_client"]').on('keyup', function() {
		if($(this).val() != '') {
			let text = $(this).val();		
			utils.searchRequestBy('searchclient', text, 'searchresultclient');
		} else {
			$('.searchresultclient').hide();
		}
	});

	$(document).on('click', 'div.searchresultclient ul li', function() {
		let clicked = parseInt($(this).attr('data-list'));
		let text = $(this).html();

		$('input[name="client_selected"]').val(clicked);
		$('input[name="search_client"]').val(text);
		$('div.searchresultclient').hide(100);
	});

	$('#getClientInfo').on('click', function(e) {
		e.preventDefault();
		let client = parseInt($('input[name="client_selected"]').val());

		if(client) {
			request.getClientInfo(client);
			request.getClientFarms(client, 'farms_list');
		}
	});
	// Fim Busca e seleção de cliente

	// Buscar informações fazenda
	$('select[name="farms_list"]').on('change', function() {
		let farm = parseInt($('select[name="farms_list"]').val());

		if(farm != 0) {
			request.getFarmInfo(farm);
		}
	});
	// Fim Buscar informações fazenda

	// Buscar e seleção de fornecedor
	$('input[name="search_provider"]').on('keyup', function() {
		if($(this).val() != '') {
			let text = $(this).val();		
			utils.searchRequestBy('searchprovider', text, 'searchresultsprov');
		} else {
			$('.searchresultsprov').hide();
		}
	});

	$(document).on('click', 'div.searchresultsprov ul li', function() {
		let clicked = parseInt($(this).attr('data-list'));
		let text = $(this).html();

		$('input[name="provider_selected"]').val(clicked);
		$('input[name="search_provider"]').val(text);
		$('div.searchresultsprov').hide(100);
	});

	$('#getProviderInfo').on('click', function(e) {
		e.preventDefault();
		let provider = parseInt($('input[name="provider_selected"]').val());
		// let salesman = parseInt($('input[name="salesman_selected"]').val());

		if(provider) {
			request.getProviderInfo(provider);
			request.getProducts(provider, 'product_list');
		}
	});
	// Fim Buscar e seleção de fornecedor

	// Busca produtos
	$('select[name="product_list"]').on('change', function() {
		let groupId = parseInt($('select[name="product_list"] option:selected').attr('data-groupid'));
		let groupName = $('select[name="product_list"] option:selected').attr('data-group');
		let unit = $('select[name="product_list"] option:selected').attr('data-unit');
		let presentation = $('select[name="product_list"] option:selected').attr('data-presentation');
		let costPrice = $('select[name="product_list"] option:selected').attr('data-costprice');
		let price = $('select[name="product_list"] option:selected').attr('data-price');
		let valueComission = $('select[name="product_list"] option:selected').attr('data-comvalue');

		$('#percent_supp').val(valueComission);
		$('#product_groupid').val(groupId);
		$('#product_group').val(groupName);
		$('#product_unit').val(unit);
		$('#product_presentation').val(presentation);
		$('#product_price_coust').val(costPrice);
		$('#product_price_sale').val(price);

		$('#product_quantity').val('');

		// Verificar se produto tem preço de custo e venda para calcular margem de lucro
		if(costPrice != '' && price != '') {
			request.calculateValueProfit(costPrice, price);
		}
		// Fim Verificar se produto tem preço de custo e venda para calcular margem de lucro

		// Buscar % do vendedor caso haja cadastro automático
		let provider = parseInt($('input[name="provider_selected"]').val());
		var salesman = parseInt($('input[name="salesman_selected"]').val());

		request.getComissionPercentage(provider, salesman, valueComission);
		// Fim Buscar % do vendedor caso haja cadastro automático

		// Se for Pedido com estoque habiliando campo percentual da comissão
		let type_request = $('input[name="type_request"]').val();
		if(type_request == 'withstock') {

			if(salesman) {
				$('#exist_comission_salesman').attr('checked', true);
				$('#salesman_percentage').attr('readonly', false);
			}
		}

		// Fim Se for Pedido com estoque habiliando campo percentual da comissão

	});
	// Fim Busca produtos

	// A Vista / Prazo
	$('select[name="receiver_form"]').on('change', function() {
		let form = parseInt($(this).val());

		if(form == 1) {
			$('#in_term').hide(100);
			$('#in_cash').show(110);			
		} else if(form == 2) {
			$('#in_cash').hide(100);
			$('#in_term').show(110);
			
		} else {
			$('#in_cash, #in_term').hide(100);
		}
	});
	// Fim A Vista / Prazo


	// Comissão do Vendedor
	$('#exist_comission_salesman').on('click', function() {

		if($('#exist_comission_salesman').is(':checked')) {

			$('input[name="search_salesman"]').attr('readonly', false);
			$('#salesman_percentage').attr('readonly', false);

		} else {
			$('input[name="search_salesman"]').attr('readonly', true);
			$('#salesman_percentage').attr('readonly', true);

			$('input[name="search_salesman"]').val('');
			$('input[name="salesman_selected"]').val('');
			$('#salesman_name').val('');
			$('#real_to_unity').val('');
			$('#salesman_percentage').val('');
			$('#salesman_comission_value').val('');
			$('#estimative_commision_salesman').val('0,00');

			request.getTotalCoust();
		}
	});

	$('input[name="search_salesman"]').on('keyup', function() {
		if($(this).val() != '') {
			let text = $(this).val();		
			utils.searchRequestBy('searchsalesman', text, 'searchresultsalesman');
		} else {
			$('.searchresultsalesman').hide();
		}
	});

	$(document).on('click', 'div.searchresultsalesman ul li', function(e) {
		e.preventDefault();
		let clicked = parseInt($(this).attr('data-list'));
		let text = $(this).html();

		$('input[name="salesman_selected"]').val(clicked);
		$('input[name="search_salesman"]').val(text);
		$('#salesman_name').val(text);	
		$('div.searchresultsalesman').hide(100);
		$('#salesman_percentage').focus();
	});

	$('#salesman_percentage').on('keyup', function() {
		let value = $(this).val();
		request.getComissionSalesman(value);
	});

	// Fim Comissão do Vendedor

	$('#product_price_sale').on('click', function() {
		$(this).select();
	});

	// Inserção de itens no pedido
	$('#product_quantity, #product_price_sale').on('keyup', function() {
		let qt = $('#product_quantity').val();
		let value = $('#product_price_sale').val();

		if(qt && value) {
			request.getTotalItem(qt, value);
		}

		// Buscar nova margem de lucro caso o valor de venda seja alterado
		let costPrice = $('select[name="product_list"] option:selected').attr('data-costprice');

		if(costPrice != '' && value != '') {
			request.calculateValueProfit(costPrice, value);
		}
	});

	// Verificação para inserção de produto no pedido
	$('#addProductInRequest').on('click', function(e) {
		e.preventDefault();
		let product_id = parseInt($('select[name="product_list"]').val());

		if(product_id) {

			let quantity = parseInt($('#product_quantity').val());
			if(quantity) {
				let price_sale = $('#product_price_sale').val();
				price_sale = price_sale.replace('.', '');
				price_sale = price_sale.replace(',', '.');

				if(price_sale > 0) {
					let product_group = parseInt($('#product_groupid').val());

					if(product_group == 2) {
						addProductInRequest();
					} else {

						if($('input[name="percent_supp"]').val() != '' && $('input[name="percent_supp"]').val() != 0) {
							addProductInRequest();
						} else {
							utils.showAlerts('.message-add', 'Informe a % da Supporte!');
						}
					}					
				} else {
					utils.showAlerts('.message-add', 'Informe o preço de venda do produto!');
				}
			} else {
				utils.showAlerts('.message-add', 'Informe a quantidade do produto!');
			}
		} else {
			utils.showAlerts('.message-add', 'Selecione o produto!');
		}
	});

	// Inserção de produto no pedido
	function addProductInRequest() {
		let product_group = parseInt($('#product_groupid').val());		

		if(product_group == 2) {
			var percent_supp = $('input[name="profit_margin"]').val();
			var quantity = parseInt($('#product_quantity').val());
		} else {
			var percent_supp = $('input[name="percent_supp"]').val();
			var quantity = $('#product_quantity').val();
		}
		
		let request_id = $('input[name="id_request"]').val();
		let product_id = parseInt($('select[name="product_list"]').val());		
		
		let cost_price = $('#product_price_coust').val();
		let price_sale = $('#product_price_sale').val();
		let provider_id = $('input[name="provider_selected"]').val();
		let type_request = $('input[name="type_request"]').val();
		let reference_request = parseInt($('input[name="request_reference"]').val());

		request.insertProductInRequest(product_group, request_id, product_id, percent_supp, quantity, cost_price, price_sale, provider_id, type_request, reference_request);
	}

	// Remover item do pedido
	$(document).on('click', '#insert_products a', function(e) {
		e.preventDefault();

		let product = parseInt($(this).attr('id'));
		let reference_request = $('input[name="id_request"]').val();

		request.removeItem(product, reference_request);
	});

	// Fim Inserção de itens no pedido

	// Inserção de valor de outras despesa - solicitando função de resultado estimado
	$('#other_expenses_value').on('keyup', function() {
		let od_value = $(this).val();
		$('#estimaive_others_unity').val(od_value);

		request.getTotalCoust();
	});
	// Fim Inserção de valor de outras despesa - solicitando função de resultado estimado

	// Verificar data de pagamento
	$('#date_receiver, #date_in_term').on('keyup', function() {
		let date = $(this).val();
		let ref = $(this).attr('id');

		if(date.length == 10) {
			request.verifyDate(date, 'ajax', ref);
		} else {
			$('#'+ref).attr('status', false);
		}
	});
	// Fim Verificar data de pagamento

	// Iniciar verificação para salvar pedido
	$('#save_oppened, #save_and_delivery').on('click', function(e) {
		e.preventDefault();
		let status = parseInt($(this).attr('data-status'));		

		if( verifyBeforeSave() ) {
			$('input[name="status_save"]').val(status);
			form.submit();
		}

	});

	function verifyBeforeSave() {

		if($('input[type="radio"]').is(':checked')) {

			if($('input[name="client_selected"]').val() != '') {

				if($('select[name="farms_list"]').val() != 0) {

					if($('input[name="provider_selected"]').val() != 0) {

						let hasProduct = $('input[name="read_to_save"]').val();

						if(hasProduct) {

							let receiver_where = parseInt($('select[name="receiver_where"]').val());

							if(receiver_where != 0) {

								if(datePaymentVerify() == 'true') {

									if($('#exist_comission_salesman').is(':checked')) {

										if($('input[name="salesman_selected"]').val() != '') {

											if($('#salesman_percentage').val() != '') {

												return true;

											} else {
												utils.showAlerts('.message-add', 'Digite a porcentagem do vendedor!');
											}

										} else {
											utils.showAlerts('.message-add', 'Vendedor não selecionado!');
										}

									} else {
										return true;
									}

								} else {
									utils.showAlerts('.message-add', 'Data a receber inválida!');
								}

							} else {
								utils.showAlerts('.message-add', 'Selecione a forma de Recebimento!');
							}

						} else {
							utils.showAlerts('.message-add', 'Nenhum produto adicionado!');
						}

					} else {
						utils.showAlerts('.message-add', 'Fornecedor não selecionado!');
					}

				} else {
					utils.showAlerts('.message-add', 'Fazenda não selecionada!');
				}

			} else {
				utils.showAlerts('.message-add', 'Cliente não selecionado!');
			}

		} else {
			utils.showAlerts('.message-add', 'Selecione o tipo de Pedido, CIF-FOB!');
		}
	}

	function datePaymentVerify() {
		let option = parseInt($('select[name="receiver_form"]').val());

		switch(option) {
			case 0:
			response = 'true';
		break;

			case 1:
			response = $('input[name="date_receiver_incash"]').attr('status');
		break;

			case 2:
			response = $('input[name="date_receiver_interm"]').attr('status');
		break;

		}

		return response;
	}

	// Atualização de nota do pedido(após salvar e entregar)
	$('.save_note').on('click', function(e) {
		e.preventDefault();
		$('#save_note').addClass('loading');
		var obs = $('textarea[name="note"]').val();
		var id_request = $('input[name="id_request"]').val();

		request.updateRequestNote(obs, id_request);
	});

	// Gatilho para atualizar comissão de vendedor ao mudar porcentagem de comissão
	$('input[name="percent_supp"]').on('keyup', function() {
		let valueComission = $(this).val();
		
		let provider = parseInt($('input[name="provider_selected"]').val());
		let salesman = parseInt($('input[name="salesman_selected"]').val());
		request.getComissionPercentage(provider, salesman, valueComission);
	});
});