$(function() {
	$('#option').change(function() {
		var searchoption = $(this).val();

		switch(searchoption) {
			case '1':
			setTimeout(function() {
				$('#providerList, #prod_search').hide();
				$('#productList').show();
			}, 500);
			break;
			case '2':
			setTimeout(function() {
				$('#productList, #prod_search').hide();
				$('#providerList').show();
			}, 500);
			break;
			default:
				$('#productList, #providerList').hide();
			break;
		}
	});

	// Buscar produtos do fornecedor
	$('select[name="provider"]').on('change', function() {
		let provider = parseInt($(this).val());

		if(provider != 0) {
			utils.getListProductsProvider('inputProduct', provider);
		}
	});

	// Informações adicionais do produto
	$('select[name="product"]').on('change', function() {
		let product = parseInt($(this).val());

		utils.getInfoProduct(product);
	});

	// Verificar existencia do número da nota
	$('input[name="note_number"]').on('blur', function() {
		if($(this).val() != '') {
			utils.verifyExistsNotePurchase('note_number', $('input[name="note_number"]').val());
		}
	});

	// Verificar existencia do número da nota
	$('input[name="note_date"]').on('blur', function() {
		if($(this).val() != '') {
			utils.verifyPurchaseNoteDate('note_date', $('input[name="note_date"]').val());
		}
	});

	// Retornar o valor total do produto a inserir
	$('input[name="product_price"]').on('keyup', function() {
		let qt = $('input[name="quantity"]').val();
		let price = $('input[name="product_price"]').val();

		if(qt != '' && price != '') {
			utils.getTotal(qt, price, 'total');
		} else {
			$('input[name="total"]').val('');
		}
	});	

	// Inicio da inserção do produto na compra
	$('a#addProduct').on('click', function(e) {
		e.preventDefault();
		if( verifyBeforeInsert() ) {
			// Vericação com sucesso, criando objeto que será enviado para o servidor, com o produto
			let purchase = {
				override: parseInt($('input[name="override_stock"]').val()),
				note_number: parseInt($('input[name="note_number"]').val()),
				provider: parseInt($('select[name="provider"]').val()),
				note_date: $('input[name="note_date"]').val(),
				product: parseInt($('select[name="product"]').val()),
				group: parseInt($('input[name="group"]').val()),
				unity: parseInt($('input[name="unity"]').val()),
				presentation: parseInt($('input[name="presentation"]').val()),
				quantity: parseInt($('input[name="quantity"]').val()),
				product_price: $('input[name="product_price"]').val()
			};
			
			utils.addProductPurchase(purchase);
		}		
	});

	// Verificar se tem produtos antes de adicionar na compra
	function verifyBeforeInsert() {
		if( BSValidator.handleSubmit() ) {
			// Validação número da nota
			let noteStatus = $('input[name="note_number"]').attr('status');
			if(noteStatus == 'true') {
				utils.clearErrors();

				// Validação Fornecedor
				let provider = parseInt($('select[name="provider"]').val());
				if(provider != 0) {
					utils.errorImputs('select', 'provider', '#ced4da');
					utils.messageErrorImputs('.errorpv', '', false);

					// Validação data da nota
					let dateStatus = $('input[name="note_date"]').attr('status');
					if(dateStatus == 'true') {
						utils.clearErrors();

						// Produto
						let product = parseInt($('select[name="product"]').val());

						if(product != 0) {
							utils.errorImputs('select', 'product', '#ced4da');
							utils.messageErrorImputs('.errorpd', '', false);

							// Validação Quantidade
							let qt = parseInt($('input[name="quantity"]').val());
							if(qt != '') {
								utils.clearErrors();

								// Validação Valor
								let qt = parseInt($('input[name="product_price"]').val());
								if(qt != '') {
									utils.clearErrors();									
									
									// Tudo certo com os passos anteriores, pode inserir o item na compra
									return true;

								} else {
									utils.showError('product_price', 'Campo não pode ser vazio!');
								}
								// Fim Validação Valor

							} else {
								utils.showError('quantity', 'Campo não pode ser vazio!');
							}
							// Fim Validação Quantidade

						} else {
							utils.errorImputs('select', 'product', '#FF0000');
							utils.messageErrorImputs('.errorpd', 'Selecione o Produto!', true);
						}
						// Fim Produto
					
					} else {
						utils.showError('note_date', 'Data Inválida!');
					}
					// Fim Validação data da nota
				} else {
					utils.errorImputs('select', 'provider', '#FF0000');
					utils.messageErrorImputs('.errorpv', 'Selecione o Fornecedor!', true);
				}
				// Fim Validação Fornecedor			
			} else {
				utils.showError('note_number', 'Nota já cadastrada!');
			}
			// Fim Validação número da nota			
		}
	}

	//Remover Produto do Pedido
	$(document).on('click', '#insert_products a', function(e) {
		e.preventDefault();
		var product = parseInt($(this).attr('id'));

		// Marcar item clicado
		$('#insert_products table tr').attr('id', '');
		$('#insert_products table tr:hover').attr('id', 'remove');
		// Marcar item clicado

		utils.removeItemPurchase(product);
	});

	$('input[type="checkbox"]').click(function() {

		if($('#paymentIntegral').is(':checked')) {
			$('#paymentAdvance').attr('disabled', true);

			$("#rowInputIntegral").show(200);
			$('input[type="submit"]').attr('data-type', 'integral');
			$('#type_payment').val('Integral');

		} else {
			$('#paymentAdvance').attr('disabled', false);
			$("#rowInputIntegral").hide(200);
		}

		if($('#paymentAdvance').is(':checked')) {			
			$('#paymentIntegral').attr('disabled', true);
			$("#rowInputAdvance").show(200);
			$('input[type="submit"]').attr('data-type', 'advance');
			$('#type_payment').val('Adiantamento');

		} else {
			$('#paymentIntegral').attr('disabled', false);
			$("#rowInputAdvance").hide(200);
		}

	});

	// Caso o pagamento seja Adiantamento (Pegar o valor do adiantamento pela porcentagem informada)
	$('#inputPercentAdvance').on('keyup', function() {
		let advance = parseInt($('#inputPercentAdvance').val());

		if(advance > 0 && advance < 101) {
			utils.getPurchaseAdvanceValue(advance);

			utils.clearErrors();
		} else {
			utils.clearErrors();
			utils.showError('percent_advance', 'Digite um número inteiro maior que 0 e menor que 100 !');
			$('input[name="percent_advance"]').val('');
			$('input[name="total_advance"]').val('');
		}	
	});

	// Abrir próxima sessão da compra
	$('#form_validator input[type="submit"]').on('click', function(e) {
		e.preventDefault();
		let can_proceed = parseInt($('input[name="can_proceed"]').val());

		if(can_proceed == 1) {
			utils.clearErrors();
			let type = $('input[type="submit"]').attr('data-type');

			if(type == 'integral') {
				var qtd_payment = parseInt($('input[name="qtd_payment"]').val());
				var opt_payment = 'qtd_payment';
			} else if(type == 'advance') {
				var qtd_payment = parseInt($('input[name="advance_qtd_payment"]').val());
				var opt_payment = 'advance_qtd_payment';
			} else {
				utils.clearErrors();
				utils.showAlerts('.message-add', 'Adicione a forma de Pagamento!');
			}

			if(qtd_payment > 1) {
				if(qtd_payment <= 20) {
					utils.clearErrors();
					//Todos os passos acima para abrir o modal.
					$('.qtd_days').show();
					$('input[name="daysPayment"]').val('');
					$('input[name=firstPayment]').val('');
					$('input[name="daysPayment"]').attr('status', '');
					$('input[name=firstPayment]').attr('status', '');
					$('.modal-purchase').show(200);
					
				} else {
					utils.clearErrors();
					utils.showError(opt_payment, 'Máximo 20!');
					$('input[name="'+opt_payment+'"]').focus();	
				}
			} else if(qtd_payment == 1) {

				$('.qtd_days').hide();
				$('input[name="daysPayment"]').val(0);
				$('input[name=firstPayment]').val('');
				$('input[name="daysPayment"]').attr('status', '');
				$('input[name=firstPayment]').attr('status', '');
				$('.modal-purchase').show(200);				

			} else {
				utils.clearErrors();
				utils.showError(opt_payment, 'Mínimo 1!');
				$('input[name="'+opt_payment+'"]').focus();
			}
		} else {
			utils.clearErrors();
			utils.showAlerts('.message-add', 'Adicione ao menos 1 produto!');
		}
	});

	// Validação da data do primeiro pagamento
	$('input[name="firstPayment"]').on('keyup', function() {

		if($(this).val().length == 10) {			
			let firstPayment = $('input[name="firstPayment"]').val();
			let dateNote = $('input[name="note_date"]').val();

			utils.verifyAndCompareDate(firstPayment, dateNote, 'migual', 'Data não pode ser menor que a nota!', '.payment-date', '#firstPayment');
		}
	});

	// Proximo passo esse, verificar o intervalo de pagamento caso haja
	$('input[name="daysPayment"]').on('keyup', function() {
		let days = parseInt($('input[name="daysPayment"]').val());

		if(days >= 1) {
			if(days <= 30) {
				$('input[name="daysPayment"]').attr('status', true);
				$('p.qtd_days').html('');
			} else {
				$('p.qtd_days').html('Digite algo menor que 31!');
				$('input[name="daysPayment"]').attr('status', false);
				$('input[name="daysPayment"]').val('');
				$('input[name="daysPayment"]').focus();
			}
		} else {
			$('p.qtd_days').html('Digite algo maior que 0!');
			$('input[name="daysPayment"]').attr('status', false);
			$('input[name="daysPayment"]').val('');
			$('input[name="daysPayment"]').focus();
		}		

	});

	// Fechar modal data e intervalo de pagamento
	$('#close-modal').on('click', function(e) {
		e.preventDefault();
		$('.modal-purchase').hide(100);
	});

	// Opção selecionada pelo usuário sobre estoque atual do produto da compra
	$('#confirm_override').on('click', function(e) {
		e.preventDefault();
		$('input[name="override_stock"]').val(1);
		$('.modal-stock').hide(100);
	});
	// Manter estoque atual
	$('#cancel_override').on('click', function(e) {
		e.preventDefault();
		$('input[name="override_stock"]').val(2);
		$('.modal-stock').hide(100);
	});

	// Finalizando pedido e salvando
	$('#finalize').on('click', function (e) {
		e.preventDefault();

		let type_payment = $('input[type="submit"]').attr('data-type');
		var qtd_payment = 0;

		if(type_payment == 'advance') {
			qtd_payment = $('input[name="advance_qtd_payment"]').val();
			
		} else if(type_payment == 'integral') {
			qtd_payment = $('input[name="qtd_payment"]').val();
		}

		if(qtd_payment == 1) {
			let dateFirstPayment = $('input[name="firstPayment"]').attr('status');

			if(dateFirstPayment == 'true') {
				form.submit();
			} else {
				utils.showAlerts('.message-add', 'Verifique a data do pagamento!');
			}

		} else if(qtd_payment > 1) {
			let dateFirstPayment = $('input[name="firstPayment"]').attr('status');

			if(dateFirstPayment == 'true') {
				let breakDays = $('input[name="daysPayment"]').attr('status');

				if(breakDays == 'true') {

					form.submit();

				} else {
					utils.showAlerts('.message-add', 'Verifique o intervalo entre os pagamentos!');
				}

			} else {
				utils.showAlerts('.message-add', 'Verifique a data do pagamento!');
			}
		}
	});

	// Códigos relacionado a exclusão de compras
	$("#table_purchases button").on('click', function(e) {
		e.preventDefault();
		let ref = $(this).attr('data-button');

		$('input[name="clicked"]').val(ref);
		$('.modal-confirme-cancel').show(100);
	});

	$('#confirm_delete').on('click', function(e) {
		e.preventDefault();
		let ref = parseInt($('input[name="clicked"]').val());

		utils.deletePurchase(ref);
	});

	$("#cancel_delete").on('click', function(e) {
		e.preventDefault();

		$('input[name="clicked"]').val('');
		$('.modal-confirme-cancel').hide(100);
	});

	$('#option').change();
});