$(document).ready(function() {
	/* funciones fuera del formulario */

	$( ".btn-cancelar" ).click(function() {
		var button = $(this);
		var id = button.data('id');
		if (confirm('¿Seguro que deseas cancelar este traspaso? Esta acción es irreversible.')) {
			var parametros = {
				id : id
			};
			$.ajax({
				data: parametros,
				url:  '/traspasos/cancelar',
				type: 'post',
				beforeSend: function () {
				
				},
				success:  function (response) {
					button.parent().parent().find('.badge-status').removeClass('traspaso-status-0','traspaso-status-1','traspaso-status-2','traspaso-status-3').addClass('traspaso-status-5').html('Cancelado');
					button.parent().parent().find('.btn-editar').remove();
					button.remove();
				}
			});
		}
	});

	$( ".btn-liberar" ).click(function() {
		var button = $(this);
		var id = button.data('id');
		if (confirm('¿Seguro que deseas liberar este traspaso?')) {
			var parametros = {
				id : id
			};
			$.ajax({
				data: parametros,
				url:  '/traspasos/liberar',
				type: 'post',
				beforeSend: function () {
				
				},
				success:  function (response) {
					button.hide();
					button.parent().parent().find('.btn-editar').attr('data-original-title', 'Empezar a Preparar');
					button.parent().parent().find('.badge-status').removeClass('traspaso-status-2').addClass('traspaso-status-1').html('Solicitado');
					button.parent().parent().find('.badge-preparador').remove();
				}
			});
		}
	});

	$('.iniciar-preparacion').click(function() {
		var button = $(this);
		var id = button.data('id');
		// Mostrar confirm
		var result = confirm("¿Deseas empezar a preparar el pedido?");
		if (result) {
			$.ajax({
				url:   '/traspasos/preparar/' + id,
				type:  'get',
				success:  function (response) {
					// Se tomó correctamente el traspaso
					if (response.status == 'success') {
						// Abrir modal si se acepta el confirm
						$('#modalTraspasoForm').modal('show', button);
						// Editar Dom
						// Cambiar estado a "En Preparación"
						button.parent().parent().find('.badge-status').removeClass('traspaso-status-1').addClass('traspaso-status-2').html('En Preparación');
						// Cambiar Botón de editar
						button.unbind('click');
						button.removeClass('iniciar-preparacion').attr('title', 'Continuar Preparación').attr('data-toggle', 'modal').attr('data-target', '#modalTraspasoForm');
					}
					else {
						// Alert drama y cerrar modal
						alert('Error: ' + response.message);
					}
				}
			});
		}
	});

	/* Funciones dentro del formulario */
	$('#modalTraspasoForm').on('show.bs.modal', function (event) {
		// Abre Modal para cualquier caso
		var button = $(event.relatedTarget)
		var modal = $(this);
		var id_traspaso = button.data('id');
		var accion = button.data('accion');

		//Limpia Modal
		limpia_form();

		if (id_traspaso == 0) {
			// Nuevo traspaso
			modal.find('.btn-eliminar').hide();
			habilita_productos();
			modal.find('.modal-wait').show();
		}
		else {
			if (accion == 'ver') {
				carga_ver(id_traspaso);
			}
			if (accion == 'editar') {
				carga_editar(id_traspaso);
			}
			modal.find('.modal-wait').show();
		}
	});

	// Al cambiar origen cambia destino al primer distinto
	$(document).on('change', '.select-id-origen', function() {
		id_origen = $(this).val();
		id_destino = $('.select-id-destino').val();
		if (id_origen == id_destino || id_destino <= 0) {
			let seleccionado = false;
			$('.select-id-destino option').each(function() {
				val = $(this).val();
				if (id_origen != val && !seleccionado) {
					$('.select-id-destino').val(val);
					seleccionado = true;
				}
			});
		}
		habilita_productos();
	});

	// Al cambiar destino cambia origen al primer distinto
	$(document).on('change', '.select-id-destino', function() {
		id_destino = $(this).val();
		id_origen = $('.select-id-origen').val();
		if (id_destino == id_origen || id_origen <= 0) {
			let seleccionado = false;
			$('.select-id-origen option').each(function() {
				val = $(this).val();
				if (id_destino != val && !seleccionado) {
					$('.select-id-origen').val(val);
					seleccionado = true;
				}
			});
		}
		habilita_productos();
	});

	$(".btn-agregar").click(function() { 
		let html = $(".agregar-articulo").clone();
		html.removeClass('agregar-articulo');
		html.find('.btn-agregar').remove();
		let btn_delete = '<button type="button" class="btn btn-xs btn-danger btn-delete"><i class="fas fa-trash-alt"></i></button>';
		html.find('.div-acciones').append(btn_delete);
		html.find('.input-producto').attr('disabled', 'disabled');
		//html.find('.input-solicitado').attr('disabled', 'disabled');
		let imagen = html.find('.imagen-producto');
		let id_imagen = imagen.data('id-imagen');
		imagen.removeClass('has-tooltip');

		html.find('.tt').tooltip({
			animated: 'fade',
			placement: 'top',
			html: true
		});

		muestra_imagen(imagen, id_imagen);
		$('#formTraspaso').find('.lista-productos').append(html);
		limpia_agregar();
		recalcular_posiciones();
	});

	// Asocia autocomplete a input de nombre de producto
	$(document).on('click', '.input-producto', function() {
		if($(this).hasClass('new')){
			autocompleteProducto($(this));
			$(this).removeClass('new');
		}
	});

	// Al cambiar la cantidad de preparados valida
	$(document).on('change', '.input-preparado', function() {
		let preparado = $(this).val();
		let articulo = $(this).parent().parent();
		let solicitado = articulo.find('.div-solicitado span').html();

		if(preparado == solicitado) {
			articulo.find('.input-diferencia').val(0);
			articulo.find('.div-diferencia').hide();
			articulo.find('.btn-validar').removeAttr('disabled');
		}
		else {
			articulo.find('.input-diferencia').val(1);
			articulo.find('.div-diferencia').show();
			articulo.find('.div-razon-recibido').hide();
			// disabled a validar hasta que seleccione un motivo de diferencia
			if (articulo.find('.select-razon-preparado').val() == 0) {
				articulo.find('.btn-validar').attr('disabled', 'disabled');
			}
		}
	});

	// Al cambiar la cantidad de recibidos valida
	$(document).on('change', '.input-recibido', function() {
		let recibido = $(this).val();
		let articulo = $(this).parent().parent();
		let preparado = articulo.find('.div-preparado span').html();

		if(recibido == preparado) {
			articulo.find('.input-diferencia').val(0);
			if (articulo.find('.select-razon-preparado').val() == 0) {
				articulo.find('.div-diferencia').hide();
			}
			articulo.find('.div-razon-recibido').hide();
			articulo.find('.btn-validar').removeAttr('disabled');
		}
		else {
			articulo.find('.input-diferencia').val(1);
			articulo.find('.div-diferencia').show();
			if (articulo.find('.select-razon-preparado').val() == 0) {
				articulo.find('.div-razon-preparado').hide();
			}
			articulo.find('.div-razon-recibido').show();
			// disabled a validar hasta que seleccione un motivo de diferencia
			if (articulo.find('.select-razon-recibido').val() == 0) {
				articulo.find('.btn-validar').attr('disabled', 'disabled');
			}
		}
	});

	// Al cambiar la cantidad de preparados valida
	$(document).on('change', '.select-razon-preparado', function() {
		let select = $(this);
		let razonPreparado = $(this).val();
		let articulo = $(this).parent().parent();

		if(razonPreparado != 0) {
			articulo.find('.btn-validar').removeAttr('disabled');
			if (select.find('option').first().val() == 0) {
				select.find('option').first().remove();
			}
		}
	});

	// Al cambiar la cantidad de recibidoss valida
	$(document).on('change', '.select-razon-recibido', function() {
		let select = $(this);
		let razonRecibido = $(this).val();
		let articulo = $(this).parent().parent();

		if(razonRecibido != 0) {
			articulo.find('.btn-validar').removeAttr('disabled');
			if (select.find('option').first().val() == 0) {
				select.find('option').first().remove();
			}
		}
	});

	// Al eliminar producto
	$(document).on('click', '.btn-delete', function() {
		let articulo = $(this).closest('.articulo-traspaso');
		articulo.remove();
		recalcular_posiciones();
	});

	// Al validar producto
	$(document).on('click', '.btn-validar', function() {
		let button = $(this);
		$('#' + button.attr('aria-describedby')).remove();

		let articulo = $(this).closest('.articulo-traspaso');
		let estado = $('#estadoTraspaso').val();
		
		// Dependiendo del estado del traspaso tiene distinta función
		if (estado == 2) {
			// Si está preparando pasa a lista de preparados
			let html = articulo.clone();
			//Cambiar preparado a read only
			html.find('.input-preparado').attr('readonly', 'readonly');
			html.find('.btn-validar').hide();
			html.find('.btn-devolver').show();
			html.find('.select-razon-preparado').val(articulo.find('.select-razon-preparado').val());
			html.find('.select-razon-preparado').attr('readonly', 'readonly');
			html.find('.input-validado').val(1);
			articulo.remove();
			$('#formTraspaso').find('.lista-validados').append(html);
			$('.lista-validados .articulo-traspaso').last().find('.tt').tooltip({
				animated: 'fade',
				placement: 'top',
				html: true
			});
			valida_pendientes();
		}

		if (estado == 3) {
			// Si está validando pasa a lista de validados
			let html = articulo.clone();
			//Cambiar recibido a read only
			html.find('.input-recibido').attr('readonly', 'readonly');
			html.find('.btn-validar').hide();
			html.find('.btn-devolver').show();
			html.find('.select-razon-preparado').val(articulo.find('.select-razon-preparado').val());
			html.find('.select-razon-recibido').val(articulo.find('.select-razon-recibido').val());
			html.find('.select-razon-recibido').attr('readonly', 'readonly');
			html.find('.input-validado').val(1);
			articulo.remove();
			$('#formTraspaso').find('.lista-validados').append(html);
			$('.lista-validados .articulo-traspaso').last().find('.tt').tooltip({
				animated: 'fade',
				placement: 'top',
				html: true
			});
			valida_pendientes();
		}
	});

	// Al validar producto
	$(document).on('click', '.btn-devolver', function() {
		let button = $(this);
		$('#' + button.attr('aria-describedby')).remove();
		let articulo = $(this).closest('.articulo-traspaso');
		let estado = $('#estadoTraspaso').val();
		// Dependiendo del estado del traspaso tiene distinta función
		if (estado == 2) {
			// Si está preparando pasa a lista de preparados
			let html = articulo.clone();
			//Cambiar solicitado a read only
			html.find('.input-preparado').removeAttr('readonly');
			html.find('.btn-validar').show();
			html.find('.btn-devolver').hide();
			html.find('.select-razon-preparado').val(articulo.find('.select-razon-preparado').val());
			html.find('.select-razon-preparado').removeAttr('readonly');
			html.find('.input-validado').val(0);
			articulo.remove();
			$('#formTraspaso').find('.lista-productos').append(html);
			$('.lista-productos .articulo-traspaso').last().find('.tt').tooltip({
				animated: 'fade',
				placement: 'top',
				html: true
			});
			valida_pendientes()
		}

		if (estado == 3) {
			// Si está preparando pasa a lista de preparados
			let html = articulo.clone();
			//Cambiar solicitado a read only
			html.find('.input-recibido').removeAttr('readonly');
			html.find('.btn-validar').show();
			html.find('.btn-devolver').hide();
			html.find('.select-razon-preparado').val(articulo.find('.select-razon-preparado').val());
			html.find('.select-razon-recibido').val(articulo.find('.select-razon-recibido').val());
			html.find('.select-razon-recibido').removeAttr('readonly');
			html.find('.input-validado').val(0);
			articulo.remove();
			$('#formTraspaso').find('.lista-productos').append(html);
			$('.lista-productos .articulo-traspaso').last().find('.tt').tooltip({
				animated: 'fade',
				placement: 'top',
				html: true
			});
			valida_pendientes()
		}
	});

	// Carga datos del producto
	$(document).on('change', '.input-producto', function() {
		let articulo = $(this).closest('.articulo-traspaso');
		let id_producto = articulo.find('.input-id-producto').val();

		let id_origen = $('.select-id-origen').val();
		let nombre_origen = $('.select-id-origen option:selected').html();
		let id_destino = $('.select-id-destino').val();
		articulo.find('.product-warning.duplicado').hide();
		$('.btn-agregar').hide();

		if (info_productos[id_producto] == undefined) {
			articulo.find('.input-id-producto').val('');
			$(this).addClass('not-found').removeClass('found');
		}
		else {
			let count = 0;
			$('.input-id-producto').each(function() {
				if ($(this).val() == id_producto) {
					if (count > 0) {
						articulo.find('.input-producto').addClass('not-found').removeClass('found');
						articulo.find('.product-warning.duplicado').show();
					}
					count++;
				}
			});

			if (count == 1) {
				$(this).addClass('found').removeClass('not-found');
				$('.btn-agregar').show();
				if (typeof info_productos[id_producto] != "undefined") {
					articulo.find('.span-reservados-origen').html(info_productos[id_producto][id_origen]['reservados']);
					articulo.find('.span-disponibles-origen').html(info_productos[id_producto][id_origen]['disponibles']);
					articulo.find('.span-reservados-destino').html(info_productos[id_producto][id_destino]['reservados']);
					articulo.find('.span-disponibles-destino').html(info_productos[id_producto][id_destino]['disponibles']);

					if (info_productos[id_producto][id_origen]['disponibles'] < 1) {
						articulo.find('.nombre-origen').html(nombre_origen);
						articulo.find('.product-warning.sin-stock').show();
						articulo.find('.span-disponibles-origen').addClass('danger');
					}
					else {
						articulo.find('.product-warning.sin-stock').hide();
						articulo.find('.span-disponibles-origen').removeClass('danger');
					}
				}
				else {
					//html.find('.span-solicitado-actual').html("n/a");
				}
				if (articulo.find('.input-solicitado').val() == 0) {
					articulo.find('.input-solicitado').val(1);
				}
				carga_imagen(articulo);
			}
		}
	});

	$('#modalTraspasoForm #formTraspaso').submit(function( event ) {
		event.preventDefault();
		$('#modalTraspasoForm .btn-guardar').click();
	});

	$('#modalTraspasoForm .btn-guardar' ).click(function() {
		let button = $(this);
		let texto = button.html();
		button.html('Guardando...');
		guardar(button, 0, texto);
	});

	$('#modalTraspasoForm .btn-avanzar' ).click(function() {
		let button = $(this);
		let texto = button.html();
		button.html('Enviado...');
		guardar(button, 1, texto);
	});

	$('#modalTraspasoForm .btn-completar' ).click(function() {
		let button = $(this);
		$('.alert-traspaso').html('').hide();
		button.attr('disabled', 'disabled');
		button.html('Enviando');
		let parametros = $('#formTraspaso').serialize();
		//let id = $('#idTraspaso').val();

		$.ajax({
			data:  parametros,
			url:   '/traspasos/completar',
			type:  'post',
			beforeSend: function () {
			},
			success:  function (response) {

				if (response.status == 'success') {
					location.reload();
				}
				else {
					// Mostrar errores en div flash
					$('.alert-traspaso').html(response.message).show();
					button.removeAttr('disabled');
					button.html('Completar');
				}
			},
			error: function() {
				$('.alert-traspaso').html('Error de servidor. Por favor informar el problema al administrador.').show();
				button.removeAttr('disabled');
				button.html('Completar');
			}
		});
	});


	$('#modalTraspasoForm .btn-eliminar').click(function() {
		if (confirm('Eliminar')) {
			var id = $('#idTraspaso').val();

			$.ajax({
				data:  {id: id},
				url:   '/traspasos/eliminar',
				type:  'post',
				beforeSend: function () {
				
				},
				success:  function (response) {
					$('#traspaso' + id).remove();
					$('#modalTraspasoForm').modal('hide');
				}
			});
		}
	});


	// Carga productos faltantes, deseados y sugeridos de tienda
	$(".select-add-automatic").change(function() { 
		let select = $(this);
		let categoria = $(this).val();
		let opcion = $(this).find(":selected");
		let opcionTexto = $(this).find(":selected").text();
		let accion = 'auto';
		let idDestino = $('#idDestino').val();
		var soloDeseados = 0;
		if ($('#soloDeseados').is(':checked')){
			soloDeseados = 1;
		}

		opcion.attr('disabled', 'disabled');
		opcion.html('Cargando...');

		$('.lista-productos .articulo-traspaso').each(function() {
			if ($(this).find('.input-id-producto').val() == '') {
				$(this).remove();
			}
		});

		$.ajax({
			url:   '/traspasos/automatico/'+ idDestino + '/' + categoria + '/' + soloDeseados,
			type:  'get',
			beforeSend: function () {
			},
			success:  function (response) {
				if (response.status == 'success') {

					let traspaso = response.traspaso;
					if (typeof traspaso.productos != "undefined" && typeof traspaso.productos != null) {
						for (let producto of traspaso.productos) {
							let count = 0;
							// Busca si producto ya está en el listado para no duplicarlo
							$('.input-id-producto').each(function() {
								if ($(this).val() == producto.id_producto) {
									count++;
								}
							});
							if (count == 0) {
								carga_producto(producto, accion);
							}
						}
						// Muestra form agregar
						$('.div-nombre-producto').removeClass('col-md-6').addClass('col-md-8');
						$('.div-preparado').hide();
						$('.div-recibido').hide();
					}
				} else {
					alert(response.message);
				}
				if(categoria == 0) {
					$('.div-add-automatic').hide();
				}
				//esconder solo opcion seleccionada
				opcion.hide();
				opcion.html(opcionTexto);
				opcion.removeAttr('disabled');
				select.val('');
			}
		});
	});

	$(document).on('click', '.btn-cambiar-destino', function() {

		let idTraspaso = $(this).data('id');
		let destino = $(this).data('destino');

		$('#cambiarDestinoIdTraspaso').val(idTraspaso);
		$('#cambiarDestinoSelect').val(destino);

		$('#modalCambiarDestino').modal('show');
	});

	$(document).on('click', '.btn-guardar-cambio-destino', function() {

		let idTraspaso = $('#cambiarDestinoIdTraspaso').val();
		let idDestino = $('#cambiarDestinoSelect').val();

		$.ajax({
			url: '/traspasos/cambiar_destino',
			type: 'post',
			dataType: 'json',
			data: {
				id_traspaso: idTraspaso,
				id_destino: idDestino
			},
			success: function(response) {

				if (response.status == 'success') {
					location.reload();
				}
				else {
					$('.div-error-destino')
						.html(response.message)
						.show();
				}
			},
			error: function() {
				alert('Error al cambiar destino');
			}
		});
	});

});


function limpia_form() {
	$('#idTraspaso').val(0);
	$('#estadoTraspaso').val('');
	$('.input-descripcion').val('').removeAttr('disabled');
	$('.select-id-origen').val(0).removeAttr('disabled');
	$('.select-id-destino').val(0).removeAttr('disabled');
	$('.check-solo-deseados').prop('checked', false);
	$('.text-observaciones').val('').removeAttr('disabled');

	$('.form-agregar').show();
	$('.agregar-articulo .input-id-producto').removeAttr('disabled');
	$('.agregar-articulo .input-producto').removeAttr('disabled');
	$('.agregar-articulo .input-solicitado').removeAttr('disabled');
	$('.btn-agregar').hide();

	$('.observaciones-creacion').hide();
	$('.observaciones-preparacion').hide();
	$('.observaciones-recepcion').hide();
	
	$('.lista-productos').html('');

	$('.productos-validados').hide();
	$('.lista-validados').html('');

	$('.botones-editar').show();
	$('.boton-completar').hide();
	$('.btn-guardar').removeAttr('disabled').html('Guardar Borrador');
	$('.btn-avanzar').removeAttr('disabled').html('Solicitar');

	$('.alert-traspaso').html('').hide();

	$('.div-add-automatic').hide();
	$('.div-add-automatic').find('option').show();
	$('.select-add-automatic').val('');

	$('.productos .titulo-nombre-producto').addClass('col-md-8').removeClass('col-md-6 col-md-7 col-md-9');
	$('.titulo-preparado').hide();
	$('.titulo-recibido').hide();
	$('.titulo-acciones').show();

	$('.div-observaciones').show();

	$('.btn-edicion').show();
	$('.btn-cerrar').hide();
}

function limpia_agregar() {
	// muestra
	$('.form-agregar').show();
	//limpia imagen
	$('.agregar-articulo').find('.imagen-producto').removeClass('has-tooltip').attr('data-id-imagen', 0).attr('src','').attr('data-original-title','');
	//limpia producto
	$('.agregar-articulo').find('.input-id-producto').val(0);
	$('.agregar-articulo').find('.input-producto').val('').removeClass('found');

	//limpia disponibles
	$('.agregar-articulo').find('.span-stock').html('');
	//limpia solicitados
	$('.agregar-articulo').find('.input-solicitado').val('');

	//oculta agregar
	$('.btn-agregar').hide();
}

function carga_imagen(articulo){
	let ps_id = articulo.find('.input-id-producto').val();
	let parametros = {
		id : ps_id
	};
	$.ajax({
		data:  parametros,
		url:   '/productos/get_ps_image',
		type:  'post',
		beforeSend: function () {
		},
		success:  function (response) {
			let res = JSON.parse(response);
			let imagen = articulo.find('.imagen-producto');
			imagen.attr('data-id-imagen', res.id_image);
			muestra_imagen(imagen, res.id_image);
		}
	});
}

function habilita_productos() {
	let id_origen = $('.select-id-origen').val();
	let nombre_origen = $('.select-id-origen option:selected').html();
	let id_destino = $('.select-id-destino').val();

	if (id_origen <= 0 || id_destino <= 0) {
		$('.agregar-articulo .input-producto').attr('disabled', 'true');
		$('.agregar-articulo .input-solicitado').attr('disabled', 'true');
	}
	else {
		$('.agregar-articulo .input-producto').removeAttr('disabled', 'true');
		$('.agregar-articulo .input-solicitado').removeAttr('disabled', 'true');
	}

	// Valida si hay productos
	$('.articulo-traspaso').each(function() {
		articulo = $(this);
		id_producto = $(this).find('.input-id-producto').val();

		if (typeof info_productos[id_producto] != "undefined") {
			articulo.find('.span-reservados-origen').html(info_productos[id_producto][id_origen]['reservados']);
			articulo.find('.span-disponibles-origen').html(info_productos[id_producto][id_origen]['disponibles']);
			articulo.find('.span-reservados-destino').html(info_productos[id_producto][id_destino]['reservados']);
			articulo.find('.span-disponibles-destino').html(info_productos[id_producto][id_destino]['disponibles']);

			if (info_productos[id_producto][id_origen]['disponibles'] < 1) {
				articulo.find('.nombre-origen').html(nombre_origen);
				articulo.find('.product-warning.sin-stock').show();
				articulo.find('.span-disponibles-origen').addClass('danger');
			}
			else {
				articulo.find('.product-warning.sin-stock').hide();
				articulo.find('.span-disponibles-origen').removeClass('danger');
			}
		}
		else {
			articulo.find('.span-reservados-origen').html('');
			articulo.find('.span-disponibles-origen').html('');
			articulo.find('.span-reservados-destino').html('');
			articulo.find('.span-disponibles-destino').html('');
		}
	});

	if(id_origen == 1 && id_destino == 2 && $('#idTraspaso').val() == '0') {
		$('.div-add-automatic').show();
	}
	else if(id_origen == 1 && id_destino == 5 && $('#idTraspaso').val() == '0') {
		$('.div-add-automatic').show();
	}
	else if(id_origen == 1 && id_destino == 8 && $('#idTraspaso').val() == '0') {
		$('.div-add-automatic').show();
	}
	else if(id_origen == 9 && id_destino == 8 && $('#idTraspaso').val() == '0') {
		$('.div-add-automatic').show();
	}
	else if(id_origen == 1 && id_destino == 12 && $('#idTraspaso').val() == '0') {
		$('.div-add-automatic').show();
	}
	else if(id_origen == 10 && id_destino == 1 && $('#idTraspaso').val() == '0') {
		$('.div-add-automatic').show();
	}
	else {
		$('.div-add-automatic').hide();
	}
}

// Funcion que habilita la accion ver según estado del pedido
function carga_ver(id_traspaso) {
	// Desabilita campos de creación
	$('.input-descripcion').attr('disabled', true);
	$('.select-id-origen').attr('disabled', true);
	$('.select-id-destino').attr('disabled', true);
	$('.text-observaciones').attr('disabled', true);
	$('.div-observaciones').hide();
	// Oculta sección para agregar producto
	$('.form-agregar').hide();

	$('.btn-edicion').hide();
	$('.btn-cerrar').show();

	carga_traspaso(id_traspaso, 'ver').done(function(response) {
		let estadoTraspaso = $('#estadoTraspaso').val();

		$('.productos .titulo-nombre-producto').addClass('col-md-7').removeClass('col-md-6 col-md-8 col-md-9');
		$('.productos .div-nombre-producto').addClass('col-md-7').removeClass('col-md-6 col-md-8 col-md-9');

		$('.titulo-acciones').hide();
		$('.lista-productos .div-acciones').hide();

		// Según ele stado del traspaso muestra u oculta info
		if (estadoTraspaso == 0 || estadoTraspaso == 1 || estadoTraspaso == 2) {
			$('.lista-productos .div-preparado').hide();
			$('.lista-productos .div-recibido').hide();
			if ($('.div-observaciones-creacion').html() != '') {
				$('.observaciones-creacion').show();
			}

			$('.productos .titulo-nombre-producto').addClass('col-md-9').removeClass('col-md-7');
			$('.productos .div-nombre-producto').addClass('col-md-9').removeClass('col-md-7');
		}
		if (estadoTraspaso == 3) {
			$('.lista-productos .div-recibido').hide();
			if ($('.div-observaciones-creacion').html() != '') {
				$('.observaciones-creacion').show();
			}
			if ($('.div-observaciones-preparacion').html() != '') {
				$('.observaciones-preparacion').show();
			}

			$('.productos .titulo-nombre-producto').addClass('col-md-8').removeClass('col-md-7');
			$('.productos .div-nombre-producto').addClass('col-md-8').removeClass('col-md-7');
			$('.titulo-preparado').show();
			$('.div-preparado').show();
		}
		if (estadoTraspaso == 4 || estadoTraspaso == 5) {
			
			if ($('.div-observaciones-creacion').html() != '') {
				$('.observaciones-creacion').show();
			}
			if ($('.div-observaciones-preparacion').html() != '') {
				$('.observaciones-preparacion').show();
			}
			if ($('.div-observaciones-recepcion').html() != '') {
				$('.observaciones-recepcion').show();
			}

			$('.titulo-preparado').show();
			$('.titulo-recibido').show();
		}
	});
}

function carga_editar(id_traspaso) {
	carga_traspaso(id_traspaso, 'editar').done(function(response){

		$('.form-agregar').hide();
		$('.agregar-articulo .input-id-producto').attr('disabled', 'disabled');
		$('.agregar-articulo .input-producto').attr('disabled', 'disabled');
		$('.agregar-articulo .input-solicitado').attr('disabled', 'disabled');
		let estadoTraspaso = $('#estadoTraspaso').val();

		$('.titulo-acciones').show();

		if (estadoTraspaso == 0) {
			// Muestra form agregar
			$('.form-agregar').show();
			$('.agregar-articulo .input-id-producto').removeAttr('disabled');
			$('.agregar-articulo .input-producto').removeAttr('disabled');
			$('.agregar-articulo .input-solicitado').removeAttr('disabled');
			$('.productos .titulo-nombre-producto').addClass('col-md-8').removeClass('col-md-6 col-md-7 col-md-9');
			$('.titulo-preparado').hide();
			$('.titulo-recibido').hide();
			$('.productos .div-nombre-producto').removeClass('col-md-6').addClass('col-md-8');
			$('.div-preparado').hide();
			$('.div-recibido').hide();
		}

		// Empieza a preparar o continua preparando
		if (estadoTraspaso == 2) {

			$('.input-descripcion').attr('disabled', 'disabled');
			$('.select-id-origen').attr('disabled', 'disabled');
			//$('.select-id-destino').attr('disabled', 'disabled');
			if ($('.div-observaciones-creacion').html() != '') {
				$('.observaciones-creacion').show();
			}

			$('.productos .titulo-nombre-producto').addClass('col-md-7').removeClass('col-md-6 col-md-8 col-md-9');
			$('.titulo-preparado').show();
			$('.titulo-recibido').hide();
			$('.productos .div-nombre-producto').addClass('col-md-7').removeClass('col-md-6');
			$('.div-preparado').show();
			$('.div-recibido').hide();

			$('.productos-validados').show();

			// Ocultar Delete producto
			$('.lista-productos .btn-delete').hide();
			$('.lista-productos .btn-validar').show();
			$('.lista-validados .btn-delete').hide();
			$('.lista-validados .btn-validar').hide();
			$('.lista-validados .btn-devolver').show();
			// Mostrar validar producto
			$('.btn-guardar').html('Guardar Avance');
			$('.btn-avanzar').html('Finalizar');

			valida_pendientes();
		}

		// Empieza a validar
		if (estadoTraspaso == 3) {

			$('.input-descripcion').attr('disabled', 'disabled');
			$('.select-id-origen').attr('disabled', 'disabled');
			//$('.select-id-destino').attr('disabled', 'disabled');
			if ($('.div-observaciones-creacion').html() != '') {
				$('.observaciones-creacion').show();
			}
			if ($('.div-observaciones-preparacion').html() != '') {
				$('.observaciones-preparacion').show();
			}

			$('.productos .titulo-nombre-producto').addClass('col-md-6').removeClass('col-md-7 col-md-8 col-md-9');
			$('.productos .titulo-preparado').show();
			$('.productos .titulo-recibido').show();
			$('.productos .titulo-acciones').show();
			//$('.productos .div-nombre-producto').addClass('col-md-6').removeClass('col-md-7 col-md-8 col-md-9');
			$('.productos .div-solicitado').show();
			$('.productos .div-preparado').show();
			$('.productos .div-recibido').show();

			$('.productos-validados').show();

			// Ocultar Delete producto
			$('.lista-productos .btn-delete').hide();
			$('.lista-productos .btn-validar').show();
			$('.lista-validados .btn-delete').hide();
			$('.lista-validados .btn-validar').hide();
			$('.lista-validados .btn-devolver').show();
			// Mostrar validar producto
			$('.botones-editar').hide();
			$('.btn-completar').attr('disabled', 'disabled');
			$('.boton-completar').show();


			valida_pendientes();
		}
	});
}

function carga_traspaso(id_traspaso, accion = 'editar') {
	var parametros = {
		id : id_traspaso
	};
	return $.ajax({
		data:  parametros,
		url:   '/traspasos/info',
		type:  'post',
		beforeSend: function () {
		},
		success:  function (response) {
			if (response.status == 'success') {
				let traspaso = response.traspaso;
				$('#idTraspaso').val(traspaso.id);
				$('#estadoTraspaso').val(traspaso.estado_traspaso);
				$('.input-descripcion').val(traspaso.descripcion);
				$('.select-id-origen').val(traspaso.id_origen);
				$('.select-id-destino').val(traspaso.id_destino);
				$('.div-observaciones-creacion').html(traspaso.observaciones_creacion);
				$('.div-observaciones-preparacion').html(traspaso.observaciones_preparacion);
				$('.div-observaciones-recepcion').html(traspaso.observaciones_recepcion);
				if (accion == 'editar') {
					if (traspaso.estado_traspaso == 0) {
						$('.text-observaciones').val(traspaso.observaciones_creacion);
					}
					if (traspaso.estado_traspaso == 2) {
						$('.text-observaciones').val(traspaso.observaciones_preparacion);
					}
					if (traspaso.estado_traspaso == 3) {
						$('.text-observaciones').val(traspaso.observaciones_recepcion);
					}
				}
				// Muestra lista de productos
				if (typeof traspaso.productos_traspasos != "undefined") {
					for (let producto of traspaso.productos_traspasos) {
						//carga_producto(producto, accion, traspaso.estado_traspaso);
						carga_producto(producto, accion, traspaso.estado_traspaso);
					}
				}

			} else {
				alert(response.message);
			}
		}
	});
}

function carga_producto(producto, accion = 'editar', estado = 0) {
	let id_origen = $('.select-id-origen').val();
	let id_destino = $('.select-id-destino').val();
	let html = $($.parseHTML($('.copy').html()));
	let procesado = 0;

	html.find('.input-id-producto-traspaso').val(producto.id);
	html.find('.input-id-producto').val(producto.id_producto);
	html.find('.input-producto').val(producto.nombre + ' [' + proveedores[producto.id_proveedor] + ']').attr('disabled','disabled');

	if (accion == 'ver'){
		// Siempre se bloquean los solicitados
		html.find('.div-solicitado').html('<span class="badge badge-pill badge-primary">' + producto.solicitado + '</span>');
		html.find('.div-preparado').html('<span class="badge badge-pill badge-primary">' + producto.preparado + '</span>');
		html.find('.div-recibido').html('<span class="badge badge-pill badge-primary">' + producto.recibido + '</span>');
		if (estado == 3) {
			// Muestra diferencias
			if (producto.razon_preparado != 0) {
				html.find('.div-diferencia').show();
				html.find('.select-razon-preparado').val(producto.razon_preparado).attr('disabled', 'disabled');
				html.find('.div-razon-recibido').hide();
			}
		}
		if (estado == 4) {
			if (producto.razon_preparado != 0) {
				html.find('.div-diferencia-relleno').removeClass('col-md-9').addClass('col-md-6');
			}
			html.find('.div-razon-preparado').hide();
			html.find('.div-razon-recibido').hide();
			// Muestra diferencias
			if (producto.razon_preparado != 0) {
				html.find('.div-diferencia-relleno').show();
				html.find('.div-razon-preparado').show();
				html.find('.select-razon-preparado').val(producto.razon_preparado).attr('disabled', 'disabled');
			}
			if (producto.razon_recibido != 0) {
				html.find('.div-diferencia-relleno').show();
				html.find('.div-razon-recibido').show();
				html.find('.select-razon-recibido').val(producto.razon_recibido).attr('disabled', 'disabled');
			}
		}
	}

	if (accion == 'editar'){
		if (estado == 0) {
			html.find('.input-solicitado').val(producto.solicitado);
		}
		if (estado == 2) {
			html.find('.div-solicitado').html('<span class="badge badge-pill badge-primary">' + producto.solicitado + '</span>');
			if (producto.preparado == 0 && producto.razon_preparado == 0) {
				// No ha sido procesado se deja en lista de por procesar
				html.find('.input-preparado').val(producto.solicitado);
			}
			else {
				// Se pasa bloqueado a lista de procesado
				html.find('.input-preparado').val(producto.preparado).attr('readonly', 'readonly');
				if (producto.razon_preparado != 0) {
					html.find('.input-diferencia').val(1);
					html.find('.div-diferencia').show();
					html.find('.select-razon-preparado').val(producto.razon_preparado).attr('readonly', 'readonly');
					html.find('.div-razon-recibido').hide();
				}
				procesado = 1;
			}
		}
		if (estado == 3) {
			html.find('.div-solicitado').html('<span class="badge badge-pill badge-primary">' + producto.solicitado + '</span>');
			html.find('.div-preparado').html('<span class="badge badge-pill badge-primary">' + producto.preparado + '</span>');

			if (producto.razon_preparado != 0) {
				html.find('.div-diferencia').show();
				html.find('.div-razon-recibido').hide();
				html.find('.select-razon-preparado').val(producto.razon_preparado).attr('disabled', 'disabled');
				html.find('.div-diferencia-relleno').removeClass('col-md-9').addClass('col-md-6');
			}
			html.find('.input-recibido').val(producto.preparado);
		}
	}

	if(accion == 'auto' && info_productos[producto.id_producto][id_origen]['disponibles'] < producto.solicitado) {
		producto.solicitado = info_productos[producto.id_producto][id_origen]['disponibles'];
	}

	if (accion == 'auto') {
		html.find('.input-solicitado').val(producto.solicitado);
	}

	let imagen = html.find('.imagen-producto');
	muestra_imagen(imagen, producto.id_image);

	// Si el traspaso está en proceso => estado < 4; siempre se muestra el stock actual
	if (estado < 4) {
		html.find('.span-reservados-origen').html(info_productos[producto.id_producto][id_origen]['reservados']);
		html.find('.span-disponibles-origen').html(info_productos[producto.id_producto][id_origen]['disponibles']);
		html.find('.span-reservados-destino').html(info_productos[producto.id_producto][id_destino]['reservados']);
		html.find('.span-disponibles-destino').html(info_productos[producto.id_producto][id_destino]['disponibles']);

		if (info_productos[producto.id_producto][id_origen]['disponibles'] < 1) {
			let nombre_origen = $('.select-id-origen option:selected').html();
			html.find('.nombre-origen').html(nombre_origen);
			html.find('.product-warning.sin-stock').show();
			html.find('.product-warning.sin-stock').removeClass('hidden');
			html.find('.span-disponibles-origen').addClass('danger');
		}
		else {
			html.find('.product-warning.sin-stock').hide();
			html.find('.span-disponibles-origen').removeClass('danger');
		}
	}
	else {
		html.find('.span-reservados-origen').html(producto['reservados_origen']);
		html.find('.span-disponibles-origen').html(producto['disponibles_origen']);
		html.find('.span-reservados-destino').html(producto['reservados_destino']);
		html.find('.span-disponibles-destino').html(producto['disponibles_destino']);
	}

	if (accion == 'auto') {
		// Para carga automática solo agrega productos disponibles en origen
		if (info_productos[producto.id_producto][id_origen]['disponibles'] > 0) {
			$('.lista-productos').append(html);
			$('.lista-productos .articulo-traspaso').last().find('.tt').tooltip({
				animated: 'fade',
				placement: 'top',
				html: true
			});
		}
	}
	else {
		if (procesado == 0) {
			$('.lista-productos').append(html);
			$('.lista-productos .articulo-traspaso').last().find('.tt').tooltip({
				animated: 'fade',
				placement: 'top',
				html: true
			});
		}
		else {
			html.find('.input-validado').val(1);
			$('.lista-validados').append(html);
			$('.lista-validados .articulo-traspaso').last().find('.tt').tooltip({
				animated: 'fade',
				placement: 'top',
				html: true
			});
		}
		
	}
	recalcular_posiciones();
}

function guardar(button, avanzar, texto) {
	$('.alert-traspaso').html('').hide();
	$('.btn-envio').attr('disabled', 'disabled');

	let parametros = $('#formTraspaso').serialize();
	let id = $('#idTraspaso').val();

	$.ajax({
		data:  parametros,
		url:   '/traspasos/guardar/' + avanzar,
		type:  'post',
		beforeSend: function () {
		},
		success:  function (response) {
			if (response.status == 'success') {
				var id = $('#idTraspaso').val();
				location.reload();
			}
			else {
				// Mostrar errores en div flash
				$('.alert-traspaso').html(response.message).show();
				$('.btn-envio').removeAttr('disabled');
				button.html(texto);
			}
		},
		error: function() {
			$('.alert-traspaso').html('Error de servidor. Por favor informar el problema al administrador.').show();
			$('.btn-envio').removeAttr('disabled');
			button.html(texto);
		}
	});
}

// Revisa si todos los productos han sido validados y habilita el boton de finalizar preparación
function valida_pendientes() {
	// revisa largo de lista-productos => Si es 0 se puede finalizar
	let pendientes = $('.lista-productos .articulo-traspaso').length;
	if (pendientes == 0) {
		// Habilita avanzar
		if ($('#estadoTraspaso').val() == 3) {
			$('.btn-completar').removeAttr('disabled');
		}
		else {
			$('.btn-avanzar').removeAttr('disabled');
		}
	}
	else {
		// Desabilita avanzar
		if ($('#estadoTraspaso').val() == 3) {
			$('.btn-completar').attr('disabled', 'disabled');
		}
		else {
			$('.btn-avanzar').attr('disabled', 'disabled');
		}
	}
}

function recalcular_posiciones() {
	$('.lista-productos .articulo-traspaso').each(function(index) {
		$(this).find('.pos-producto').text(index + 1);
	});

	$('.lista-validados .articulo-traspaso').each(function(index) {
		$(this).find('.pos-producto').text(index + 1);
	});
}