<script class='controller'>
    setTimeout(function() {

        /*           ACTUALIZAR CONTADORES               */
        $(document).off('click', "#updateCharts");
        $(document).on('click', '#updateCharts', function(e) {
            var userIntel = JSON.parse(window.localStorage.getItem("userIntel")),
                panelToShow = userIntel.panelUsuario,
                userId = $('#sidebarLoaded').attr('userIdPanel');
            $("#loading").fadeIn("fast", function() {
                showPanel(panelToShow, userId);
            });
        });

        /** CUANDO INICIA EL MODULO CARGAMOS LAS PRIMERAS TARJETAS */
        $('.anim1').velocity("transition.slideUpBigIn", {
            stagger: 250,
            complete: function() {
                $('#buscarDevol').focus();
            }
        });

        /** LE RESTAMOS 1 UNIDAD AL LISTADO SELECCIONADO */
        $(document).off('click', ".restarUnidad");
        $(document).on('click', '.restarUnidad', function(e) {

            var codigoBarrasDevuelto = $(this).parent().parent().parent().find('.codigoBarrasDevuelto').html(),
                unidTotales = $(this).parent().parent().parent().find('.unidTotales').html(),
                unidXDevolver = $(this).parent().parent().parent().find('.unidXDevolver').html();

            unidXDevolver--;
            if (unidXDevolver == 0) {
                $(this).parent().parent().parent().parent().remove();
                return;
            }
            var newPropor = (+unidXDevolver * 100) / +unidTotales
            $(this).parent().parent().parent().find('.unidXDevolver').html(unidXDevolver);
            $(this).parent().parent().parent().find('.unidXDevolverPropor').attr('style', 'width: ' + newPropor.toFixed(0) + '%');
        });

        /** ELIMINAMOS EL LISTADO SELECCIONADO */
        $(document).off('click', ".deletethisLine");
        $(document).on('click', '.deletethisLine', function(e) {
            var amountRead = $(this).parent().find('.cantProd').html();
            $(this).parent().remove();


            var totalEscan = $('.unidadesEscaenadasTotal span').html();
            totalEscan = +totalEscan - +amountRead;
            $('.unidadesEscaenadasTotal span').html(totalEscan);
            return;
        });

        /** GUARDAMOS EL TRASLADO */
        $(document).off('click', "#saveNewDevol");
        $(document).on('click', '#saveNewDevol', function(e) {

            var rowsCount = 1,
                reubDet = [],
                userId = $('#sidebarLoaded').attr('userIdPanel');

            var idtransaccion = userId + new Date();
            idtransaccion = Math.abs(idtransaccion.hashCode());
            $(document).find('.listadoTraslad tbody tr').each(function(i, n) {

                var reubRow = {};
                reubRow.prod = $(n).find('.codigoBarras').html();
                reubRow.orig = $(n).find('.origProd').attr('data-origProd');
                reubRow.dest = $(n).find('.destProd').attr('data-destProd');
                reubRow.tiporig = $(n).find('.tipOrigProd').html();
                reubRow.tipdest = $(n).find('.tipDestProd').html();
                reubRow.totalUnidades = $(n).find('.cantProd').html();
                reubRow.idtransaccion = idtransaccion;
                reubRow.idlinea = rowsCount;

                reubDet.push(reubRow);
                rowsCount++;
            });

            if (rowsCount > 0) {

                $(this).velocity("transition.slideUpOut", {
                    duration: 200,
                    complete: function() {
                        $('#saveNewDevolFake').velocity("transition.slideUpIn", {
                            duration: 200,
                            complete: function() {
                                console.log(reubDet);
                                var formData = new FormData(),
                                    userId = $('#sidebarLoaded').attr('userIdPanel');
                                formData.append('userReub', userId);
                                formData.append('objReub', JSON.stringify(reubDet));
                                formData.append('meth', 'saveNewReub');
                                apiCall(formData, function(data) {
                                    console.log(data);
                                    if (data.status == "saved") {
                                        $('.anim3, .anim2,.porDevolInfoBox,#saveNewDevolFake').velocity("transition.slideUpOut", {
                                            duration: 200,
                                            complete: function() {
                                                swal({
                                                    title: "Felicitaciones",
                                                    text: "La reubicacion de los productos ha sido registrada exitosamente.",
                                                    type: "success",
                                                    showCancelButton: false,
                                                    confirmButtonText: 'Entendido',
                                                    cancelButtonText: 'salir'
                                                });
                                                $('.porDevolInfoBox,.thisReubicProd,.thisTrasladoProd').remove();
                                                $('.anim11,#saveNewDevol').velocity("transition.slideUpIn", {
                                                    duration: 200
                                                })
                                            }
                                        });
                                    } else {
                                        $('#saveNewDevolFake').velocity("transition.slideUpOut", {
                                            duration: 200,
                                            complete: function() {
                                                swal({
                                                    title: "Lo Sentimos",
                                                    text: "Hubo un problema para guardar sus datos, intente de nuevo",
                                                    type: "error",
                                                    showCancelButton: false,
                                                    confirmButtonText: 'Entendido',
                                                    cancelButtonText: 'salir'
                                                });
                                                $('#saveNewDevol').velocity("transition.slideUpIn", {
                                                    duration: 200
                                                })
                                            }
                                        });
                                    }
                                });

                            }
                        });
                    }
                });
            } else {
                $.growl.error({
                    message: "No hay productos leidos para reubicar"
                });
            }

        });

        /*           ACTUALIZAR CAJA O INDIVIDUAL               */
        $(document).off('click', ".leerCajaCompleta");
        $(document).on('click', '.leerCajaCompleta', function(e) {
            $('.readerPistolBox').velocity("transition.slideLeftBigOut", {
                duration: 200,
                complete: function() {
                    $('.readerPistolCaja').velocity("transition.slideLeftBigIn", {
                        duration: 200
                    });
                }
            });
        });
        $(document).off('click', ".leerProductosIndividuales");
        $(document).on('click', '.leerProductosIndividuales', function(e) {
            $('.readerPistolCaja').velocity("transition.slideLeftBigOut", {
                duration: 200,
                complete: function() {
                    $('.readerPistolBox').velocity("transition.slideLeftBigIn", {
                        duration: 200
                    });
                }
            });
        });

        /** OBTENEMOS LOS DATOS DE LA ORDEN DE REUBICACION */
        $(document).off('click', "#newListadoReubicBtn");
        $(document).on('click', '#newListadoReubicBtn', function(e) {

            $('#updateCharts i').addClass('fa-spin');
            var formData = new FormData(),
                userId = $('#sidebarLoaded').attr('userIdPanel');
            formData.append('userId', userId);
            formData.append('meth', 'consultarReubic');
            apiCall(formData, function(data) {
                $('#updateCharts i').removeClass('fa-spin');
                //var resp = JSON.parse(data.resp.GetPickingDetailResult);
                console.log(data);
                if (data.rows.length > 0) {
                    $('.anim3').velocity("transition.slideUpBigOut", {
                        duration: 200,
                        complete: function() {
                            var code = '';
                            $('.listadoReubic tbody').html(code);
                            var totalListado = 0;
                            for (i = 0; i < data.rows.length; i++) {
                                $('.listadoReubic tbody').append(' <tr class="thisReubicProd">' +
                                    '<td class="codbarras" data-valtype="codbarras">' + data.rows[i]['CODBARRAS'] + '</td> ' +
                                    '<td class="descripcion" data-valtype="descripcion">' + data.rows[i]['DESCRIPCION'] + '</td> ' +
                                    '<td class="referencia" data-valtype="referencia">' + data.rows[i]['REFERENCIA'] + '</td> ' +
                                    '<td class="color" data-valtype="color">' + data.rows[i]['COLOR'] + '</td> ' +
                                    '<td class="talla" data-valtype="talla">' + data.rows[i]['TALLA'] + '</td> ' +
                                    '<td class="unidades" data-valtype="unidades">' + data.rows[i]['UNIDADES'] + '</td> ' +
                                    '<td class="unidadesLeidas" data-valtype="unidadesLeidas">0</td> ' +
                                    ' </tr>');
                                totalListado = +totalListado + +data.rows[i]['UNIDADES'];
                            }
                            $('.unidadesListadoTotal span').html(totalListado);
                            $('.anim11').velocity("transition.slideUpBigOut", {
                                stagger: 250,
                                complete: function() {
                                    $('.anim3').velocity("transition.slideUpBigIn", {
                                        stagger: 250,
                                        complete: function() {
                                            $('#productoBox').focus();
                                        }
                                    });
                                }
                            });
                        }
                    });
                } else {
                    $.growl.error({
                        message: "No existen documentos por procesar"
                    });
                    return;
                }
            });

        });

        $(document).off('click', ".readerPistolCaja button.enviarCaja");
        $(document).on('click', '.readerPistolCaja button.enviarCaja', function(e) {
            savehisCaja();
        });
        $('.cajaBoxInp').keypress(function(e) {
            if (e.which == 13) {
                savehisCaja();
            }
        });

        /** CONSULTAMOS LA UBICAION SI EXISTE*/
        $(document).off('change', "#locationBox");
        $(document).on('change', "#locationBox", function(e) {
            var formData = new FormData(),
                tiporigdest = $(document).find("input[type=radio][name=dest-radios]:checked").val(),
                codUbi = $(document).find('#locationBox').val();
            if (tiporigdest == 'U') {
                formData.append('codUbi', codUbi);
                formData.append('meth', 'consultarUbic');
                apiCall(formData, function(data) {
                    console.log(data);
                    if (data.status == "gotProd") {
                        $(document).find('#saveNewDevol').removeAttr('disabled');
                    } else {
                        $.growl.error({
                            message: "Codigo de Ubicacion no existe en el sistema ",
                            duration: 6000
                        });
                        $(document).find('#locationBox').val('');
                        $(document).find('#locationBox').focus();
                    }
                });
            }
        });
        $(document).off('change', "#cajamasterBox");
        $(document).on('change', "#cajamasterBox", function(e) {
            var formData = new FormData(),
                tiporigdest = $(document).find("input[type=radio][name=orig-radios]:checked").val(),
                codUbi = $(document).find('#cajamasterBox').val();
            if (tiporigdest == 'U') {
                formData.append('codUbi', codUbi);
                formData.append('meth', 'consultarUbic');
                apiCall(formData, function(data) {
                    console.log(data);
                    if (data.status == "gotProd") {
                        $(document).find('#saveNewDevol').removeAttr('disabled');
                    } else {
                        $.growl.error({
                            message: "Codigo de Ubicacion no existe en el sistema ",
                            duration: 6000
                        });
                        $(document).find('#cajamasterBox').val('');
                        $(document).find('#cajamasterBox').focus();
                    }
                });
            }
        });

        enterSubm();
    }, 1000);

    /** AL LEER CON PISTOLA UN CODIGO DE BARRA */
    function getThisProd() {

        var origVal = $(document).find('#cajamasterBox').val(),
            destVal = $(document).find('#locationBox').val(),
            prodVal = $(document).find('#productoBox').val(),
            tiporigVal = $(document).find("input[type=radio][name=orig-radios]:checked").val(),
            tipdestVal = $(document).find("input[type=radio][name=dest-radios]:checked").val(),
            isListed = 0,
            isPresentInDB = 0,
            isPresent = 0;

        $(document).find('.listadoReubic tbody tr').not('.anim').each(function(i, n) {
            var prod = $(n).find('.codbarras').html(),
                unidadesLeidas = $(n).find('.unidadesLeidas').html(),
                totalUnidades = $(n).find('.unidades').html();

            if (prod == prodVal) {
                isListed = 1;
                unidadesLeidas = +unidadesLeidas + 1;
                $(n).find('.unidadesLeidas').html(unidadesLeidas);
                if (unidadesLeidas == totalUnidades) {
                    $(n).addClass('anim');
                }
            }
        });

        if (isListed == 1) {
            var formData = new FormData();
            formData.append('codbar', prodVal);
            formData.append('meth', 'consultarPNL');
            apiCall(formData, function(data) {
                if (data.status != "gotProd") {
                    isPresentInDB == 1;
                    $(document).find('#productoBox').val('');
                    $(document).find('#productoBox').focus();
                    $.growl.error({
                        message: "Codigo de barras no existe en el sistema ",
                        duration: 6000
                    });
                } else {
                    $(document).find('.listadoTraslad tbody tr').each(function(i, n) {
                        var prod = $(n).find('.codigoBarras').html(),
                            orig = $(n).find('.origProd').attr('data-origProd'),
                            dest = $(n).find('.destProd').attr('data-destProd'),
                            tiporig = $(n).find('.tipOrigProd').html(),
                            tipdest = $(n).find('.tipDestProd').html(),
                            totalUnidades = $(n).find('.cantProd').html();

                        if (prod == prodVal && destVal == dest && origVal == orig && tiporigVal == tiporig && tipdestVal == tipdest) {
                            isPresent = 1;
                            totalUnidades = +totalUnidades + 1;
                            $(n).find('.cantProd').html(totalUnidades);


                            var totalEscan = $('.unidadesEscaenadasTotal span').html();
                            totalEscan++;
                            $('.unidadesEscaenadasTotal span').html(totalEscan);
                        }
                    });
                    if (isPresent == 0) {
                        $('.listadoTraslad tbody').prepend(' <tr class="thisTrasladoProd">' +
                            '<td class="codigoBarras" data-valtype="codigoBarras">' + prodVal + '</td>' +
                            '<td class="origProd" data-origProd="' + origVal + '">(' + tiporigVal + ')-' + origVal + '</td> ' +
                            '<td class="destProd" data-destProd="' + destVal + '">(' + tipdestVal + ')-' + destVal + '</td> ' +
                            '<td class="cantProd" data-valtype="cantProd">' + 1 + '</td> ' +
                            '<td class="offscreen tipOrigProd" data-valtype="tipOrigProd">' + tiporigVal + '</td> ' +
                            '<td class="offscreen tipDestProd" data-valtype="tipDestProd">' + tipdestVal + '</td> ' +
                            '<td class="offscreen tipDestProd" data-valtype="tipDestProd">' + tipdestVal + '</td> ' +
                            '<td class="deletethisLine btn-danger text-center" data-valtype="deletethisLine"><i class="fa fa-2x fa-window-close" aria-hidden="true"></i></td> ' +
                            ' </tr>');

                        var totalEscan = $('.unidadesEscaenadasTotal span').html();
                        totalEscan++;
                        $('.unidadesEscaenadasTotal span').html(totalEscan);
                    }
                    $(document).find('#productoBox').val('');
                    $(document).find('#productoBox').focus();

                }
            });
        } else {
            $.growl.error({
                message: "Este codigo no existe en el Listado"
            });
            $(document).find('#productoBox').val('');
            $(document).find('#productoBox').focus();
            return;
        }
    }

    /** FUNCIONALIDAD DE LOS INPUT */
    function enterSubm() {
        /*  ORIGEN! */
        $('.cajamasterBoxInp').keypress(function(e) {
            if (e.which == 13) {
                $('.locationBoxInp').val('');
                $('.locationBoxInp').focus();
            }
        });

        /*  DESTINO! */
        $('.locationBoxInp').on('keypress', function(e) {
            if (e.which == 13) {
                $('.productoBoxInp').val('');
                $('.productoBoxInp').focus();
            }
        });
        $('.productoBoxInp').keypress(function(e) {
            if (e.which == 13) {
                var origVal = $(document).find('#cajamasterBox').val(),
                    destVal = $(document).find('#locationBox').val(),
                    prodVal = $(document).find('#productoBox').val();
                if (origVal == '' || destVal == '' || prodVal == '') {
                    $.growl.error({
                        message: "Debe llenar todos los campos"
                    });
                    return;
                }
                getThisProd();
            }
        });

        $(document).off('change', "input[type=radio][name=orig-radios]");
        $(document).on('change', "input[type=radio][name=orig-radios]", function(e) {
            console.log(this.value);
            if (this.value == 'U') {
                $(document).find('.DestRadios').slideDown('slow');
            } else if (this.value == 'C') {
                //$(document).find('.DestRadios').slideUp('slow');
            }
        });

        /** AL PRESIONAR EL BOTON EL CODIGO DE BARRA Y LO CARGAMOS AL LISTADO */
        $(document).off('click', ".readerPistolBox button.envi");
        $(document).on('click', '.readerPistolBox button.envi', function(e) {

            var origVal = $(document).find('#cajamasterBox').val(),
                destVal = $(document).find('#locationBox').val(),
                prodVal = $(document).find('#productoBox').val(),
				tipoOrigVal = $(document).find('input[type=radio][name=orig-radios]:checked').val();
            if (origVal == '' || destVal == '' || prodVal == '') {
                $.growl.error({
                    message: "Debe llenar todos los campos"
                });
                return;
            }else{
				var formData = new FormData(),
				//userId = $('#sidebarLoaded').attr('userIdPanel');
				formData.append('codUbi', origVal);
				formData.append('tipoUbi', tipoOrigVal);
				formData.append('prod', prodVal);
				formData.append('meth', 'consultarOrigProd');
				apiCall(formData, function(data) {
					console.log(data);
					if(data.status == 'gotProd' && data.result == 'N'){
						$.growl.error({
							message: "El producto no existe en el Origen"
						});
						return;
					}
				}
			}
            getThisProd();
        });

    }

    /** REUBICAR CAJA COMPLETA */
    function savehisCaja() {

        var rowsCount = 0,
            reubDet = [],
            dest = $(document).find('#fullCajaDestInp').val(),
            orig = $(document).find('#fullCajaOrigInp').val(),
            cajacod = $(document).find('#cajaBoxInp').val(),
            userId = $('#sidebarLoaded').attr('userIdPanel');

        if (dest == '' || orig == '' || cajacod == '') {
            $.growl.error({
                message: "Debe llenar todos los campos"
            });
            return;
        }

        var reubRow = {};
        reubRow.prod = cajacod;
        reubRow.orig = orig;
        reubRow.dest = dest;
        reubDet.push(reubRow);

        var formData = new FormData(),
            userId = $('#sidebarLoaded').attr('userIdPanel');
        formData.append('userReub', userId);
        formData.append('objReubCaja', JSON.stringify(reubDet));
        formData.append('meth', 'saveNewReubCaja');
        apiCall(formData, function(data) {
            console.log(data);

            if (data.rowErr.length > 0) {
                swal({
                    title: "Lo Sentimos",
                    text: "La caja seleccionada no aparece registrada en la ubicacion de origen",
                    type: "error",
                    showCancelButton: false,
                    confirmButtonText: 'Entendido',
                    cancelButtonText: 'salir'
                });
                return;
            }
            if (data.status == "saved") {
                swal({
                    title: "Felicitaciones",
                    text: "La reubicacion de la caja ha sido registrada exitosamente.",
                    type: "success",
                    showCancelButton: false,
                    confirmButtonText: 'Entendido',
                    cancelButtonText: 'salir'
                });
                /** OCULTAMOS TODO COMO SI ABRIERA EL MODULO DESDE CERO */
                /* $('.readerPistolCaja').velocity("transition.slideLeftBigOut", {
                    duration: 200,
                    complete: function() {
                        $('.readerPistolBox').velocity("transition.slideLeftBigIn", {
                            duration: 200
                        });
                    }
                }); */

                $('#cajaBoxInp').val('');
                $('#cajaBoxInp').focus();

            } else {
                swal({
                    title: "Lo Sentimos",
                    text: "Hubo un problema para guardar sus datos, intente de nuevo",
                    type: "error",
                    showCancelButton: false,
                    confirmButtonText: 'Entendido',
                    cancelButtonText: 'salir'
                });
            }
        });
    }
</script>