
'use strict';
window.addEventListener( 'load', function( event )
 { 
   console.log('entra');
   $('#filtrarReportes').click(function(){
    $("input[name='stock']").prop('checked', false);
    $.fn.dataTable.ext.errMode = 'none';
    $('#reporte-inventario').on('error.dt', function(e, settings, techNote, message) {
       console.log( 'An error has been reported by DataTables: ', message);
    });
    $('#reporte-inventario').empty();

    $('#reporte-inventario').unbind();
        var filtrarPor = $('#queryReporte').val();
        console.log(filtrarPor);
        

        if(filtrarPor != ''){
                console.log(filtrarPor);
                $.ajax({
                url:base_url+"inventario/Franquiciatario/InventarioF/Buscar/",
                type:'POST',
                dataType: 'json',
                data:{filtro : filtrarPor},
                success:function(response){
                     toastr.success('Se realizó tu busqueda se encontraron '+ response.length +' resultados').css("width","100%"); 
                    var columns = [
                        { className: "Tipo","title":"Código" },
                        { className: "Tipo","title":"Producto" },
                        { className: "Tipo","title":"Tipo" },
                        { className: "Categoria","title":"Categoria" },
                        { className: "Minimo","title":"Stock Minimo" },
                        { className: "PzaTotales","title":"Piezas Totales" },
                        { className: "PrecioVenta","title":"Precio Venta" },
                        { className: "Movimiento","title":"Fecha Ultimo Movimiento" },
                        { "title":"estado" },
                    ];   
 
                     var hide = [
                            { targets: [0, 1,2,3,4,5,6,7], visible: true},
                        ];

                    $("#reporte-inventario").append('<tfoot class="dataFooter"><tr><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></tfoot>'); 
                    $('#reporte-inventario').DataTable( {
                        dom: 'T<"clear">Bfrtip',
                        responsive: true,
                        data: response,
                        columns: columns,
                        ServerSide: true,
                         destroy: true,
                         footer: true,
                         processing: true,
                        columnDefs: [ {
                            targets: [0, 1, 2, 3, 4, 5, 6, 7],
                            createdCell: function (td, cellData, rowData, row, col) {
                                if ( parseFloat(rowData[5]) === 0 ) {
                                    $(td).addClass('danger');
                                }else if(parseFloat(rowData[5])<=parseFloat(rowData[4]))
                                {
                                  $(td).addClass('warning');
                                }
                              }
                            },
                            {
                            "targets": [ 8 ],
                            "visible": false,
                            "searchable": true
                            }
                         ],
                         buttons: [
                        {
                            extend: 'print',
                            text:"IMPRIMIR",
                            footer: true,
                            title: '',
                            customize: function ( win ) {

                                $(win.document.body)
                                .css( 'font-size', '10pt' )
                                .prepend(
                                    '<div class="top" style="width: 100%; text-align:center; display:flex; align-items: center; align-content: center;">  <div style="width: 50%;"><img src="<?php echo base_url();?>assets/dist/img/logo.png" style="width: 50%;" /></div><div style="width: 50%; font-size:2em">Reporte de Inventario</div></div>'
                                    );

                                $(win.document.body).find( 'table' )
                                .addClass( 'compact' )
                                .css( 'font-size', 'inherit' );
                                $(win.document.body).find( 'table' )
                                .addClass( 'mayus' )
                                .css( 'text-transform', 'uppercase' );
                            },
                            
                        },
                        {
                            extend: 'pdf',
                            footer: true,
                            filename: 'ReporteDeInventario',
                            title: '',
                            orientation: 'landscape',
                            pageSize: 'letter',
                            key: { 
                                key: 'e',
                                altKey: false
                            }
                            , content: [{ style: 'fullWidth' }]
                            , styles: { 
                                fullWidth: { fontSize: 10, bold: true, alignment: 'right', margin: [0,0,0,0],   }
                            },
                            exportOptions: {
                                modifier: {
                                    pageMargins: [ 0, 0, 0, 0 ],  
                                    margin: [ 0, 0, 0, 0 ],  
                                    alignment: 'center',
                                    page: 'all',
                                   
                                }
                                , body : {margin: [ 0, 0, 0, 0 ], pageMargins: [ 0, 0, 0, 0 ]},
                                footer: true,
                                columns: [ 0, 1, 2, 3, 4, 5, 6,7]//son las columnas q quiero q se vean al exportarse          

                            },
                            body : {margin: [ 0, 0, 0, 0 ], pageMargins: [ 0, 0, 0, 0 ]},
                            customize: function ( doc ) {
                                console.log(doc.content);

                            },
                        },
                        {
                            extend: 'excel',
                            footer: true,
                            filename: 'ReporteDeInventario',
                            title: 'Reporte de Inventario',
                            footer: true,
                            exportOptions: {
                                columns: [ 0, 1, 2, 3, 4, 5, 6,7]//son las columnas q quiero q se vean al exportarse          
                            },
                        }
                        ],

                        language: {
                            "lengthMenu": "Mostrar _MENU_ registros por pagina",
                            "zeroRecords": "No se encontraron resultados en su busqueda",
                            "searchPlaceholder": "Buscar registros",
                            "info": "Mostrando registros de _START_ al _END_ de un total de  _TOTAL_ registros",
                            "infoEmpty": "No existen registros",
                            "infoFiltered": "(filtrado de un total de _MAX_ registros)",
                            "search": "Buscar:",
                            "paginate": {
                                "first": "Primero",
                                "last": "Último",
                                "next": "Siguiente",
                                "previous": "Anterior"
                            },
                        },
                        // initComplete: function(row, data, start, end, display) {
                                                     
                        //   var api = this.api();
                          
                        // var piezastotales = api
                        //                 .column( 5 )
                        //                 .data()
                        //                 .reduce(function(a, b) {
                        //                     var x = parseFloat(a) || 0;
                        //                     var y = parseFloat(b) || 0;
                        //                     return x + y;
                        //                   }, 0);

                          
                        //     api.columns(6, {
                        //     page: 'current'
                        //   }).every(function() {
                            
                        //          console.log("total" + piezastotales );  
                             
                        //         $( api.column( 0 ).footer() ).html('Piezas totales');
                        //         $( api.column( 1 ).footer() ).html("");
                        //         $( api.column( 2 ).footer() ).html("" );
                        //         $( api.column( 3 ).footer() ).html("" );
                        //         $( api.column( 4 ).footer() ).html("");
                        //         $( api.column( 5 ).footer() ).html(new Intl.NumberFormat('es-MX').format(piezastotales));
                        //         $( api.column( 6 ).footer() ).html( "" );
                        //         $( api.column( 7 ).footer() ).html( "" );
                                   
                                
                           
                        //   });
                        // },
                        "footerCallback": function ( row, data, start, end, display ) {
                            var api = this.api(), display;   
                            var total = api
                                .column( 5 )
                                .data()
                                .reduce( function (a, b) {
                                    return parseFloat(a) + parseFloat(b);
                                }, 0 );              
                                var sumCol4Filtered = display.map(el => data[el][5]).reduce((a, b) => parseFloat(a) + parseFloat(b), 0 );
                            // Update footer
                            $( api.column( 4 ).footer() ).html('Piezas: ');
                            $( api.column(5).footer() ).html(
                                sumCol4Filtered +" de " +total
                            );
                        }
                                         
                    });
                    $('#reporte-inventario').wrap("<div id='scrooll_div' class='scrollbar-tabla' style='width: 100%;'></div>");
                    $('#scrooll_div').doubleScroll({
                          resetOnWindowResize: true
                        });
                    return false;

                },//end success ajax response
                error:function(error){

                    console.log("error");
                    console.error(error);
                    toastr.error("Ocurrio Algun Error verifica los datos ingresados");
                },

                });//end ajax
        return false;
        }//end filtrar por 1 ventas Generales
       else {
             toastr.error("Elige el tipo de Reporte");
              $('#reporte-inventario').empty();
              $('#reporte-inventario').unbind();
              var table = $('#reporte-inventario').DataTable().clear().draw();
             /* table
                .clear()
                .draw();*/
             return false;
       }
    });//end click

    $('#ventasReporte select option[value="-100"]').attr("selected",true);
    $('#filtrarReportes').trigger( "click" );

    var botonAbastecimiento = document.getElementById('abastecer');
    var botonDesabastecer = document.getElementById('desabastecer');
    var InputPiezasProducto = document.getElementById('NuevasPiezas');
    var InputPiezasProductoI = document.getElementById('NuevasPiezasPI');
    var InputPiezasProductoDI = document.getElementById('DescontarPiezas');
    var actualizarProductos= document.getElementById('actualizar');
    var actualizarProductosPI= document.getElementById('actualizarPI');
    InputPiezasProducto.oninput = sumaPiezas;
    InputPiezasProductoI.oninput = sumaPiezasPI;
    InputPiezasProductoDI.oninput = descuentaPiezas;
    botonAbastecimiento.addEventListener("click", function() {
      document.getElementById('reabastecimiento').classList.remove('invisible');
      document.getElementById('descuento').classList.add('invisible');
      document.getElementById('DescontarPiezas').value='';
      document.getElementById('pzaTotalesPI2').innerHTML='';
      document.getElementById('desabastecer').classList.remove('boton-clickeado');
      document.getElementById('abastecer').classList.add('boton-clickeado');      
    });
    botonDesabastecer.addEventListener("click", function() {
      document.getElementById('reabastecimiento').classList.add('invisible');
      document.getElementById('descuento').classList.remove('invisible');
      document.getElementById('NuevasPiezasPI').value='';
      document.getElementById('pzaTotalesPI').innerHTML='';
      document.getElementById('desabastecer').classList.add('boton-clickeado');
      document.getElementById('abastecer').classList.remove('boton-clickeado');
    });
    actualizarProductos.addEventListener("click", function() {
      var pzasTotales=document.getElementById('pzaTotales').innerHTML;
      var codigo=document.getElementById('idProducto').value;
      var datos="codigo="+codigo+"&piezas="+pzasTotales;
      if(pzasTotales!="")
      {
        actualizaProducto(datos);  
      }else{
        $('#NuevasPiezas').notify('Ingrese una cantidad');
      }
           
    });
    actualizarProductosPI.addEventListener("click", function() {
      var codigo=document.getElementById('idProductoPI').value;
      var pzasTotales=document.getElementById('pzaTotalesPI').innerHTML;
      var pzasTotales2=document.getElementById('pzaTotalesPI2').innerHTML;
      var piezas="";
      if(pzasTotales!="")
      {
        piezas=pzasTotales;
      }else{
        piezas=pzasTotales2;
      }
      if(piezas!="")
      {
        var datos="codigo="+codigo+"&piezas="+piezas;
        actualizaProducto(datos); 
      }else{
        $('#NuevasPiezasPI').notify('Ingrese una cantidad');
        $('#DescontarPiezas').notify('Ingrese una cantidad');
      }
                
    });
 
          $("input[type='radio']").click(function() {	
            var table = $('#reporte-inventario').DataTable();
            if(this.value=="TODOS")
            {
              table.search(' ').draw();
              // table.columns([8]).search("VALIDANDO").draw();
            }else{ 
             table.search(this.value).draw();
            }
           });
 }); //Fin window.addEventListener
//  ---------------Funciones----------------
function productosInternos(id, piezas, producto)
{
  document.getElementById('abastecer').click();
  document.getElementById('idProductoPI').value=id;
  document.getElementById('productoPI').innerHTML=producto;
  document.getElementById('pzaActualesPI').innerHTML=piezas;
  document.getElementById('pzaActualesPI2').innerHTML=piezas;
  document.getElementById('NuevasPiezasPI').value='';
  document.getElementById('pzaTotalesPI').innerHTML='';
  document.getElementById('DescontarPiezas').value='';
  document.getElementById('pzaTotalesPI2').innerHTML='';
  $('#modalInterno').modal();
}
function inventarioProductos(id,piezas, producto)
{
  document.getElementById('producto').innerHTML=producto;
  document.getElementById('pzaActuales').innerHTML=piezas;
  document.getElementById('idProducto').value=id;
  document.getElementById('NuevasPiezas').value='';
  document.getElementById('pzaTotales').innerHTML='';
  $('#modalProductos').modal();
}
function sumaPiezas(e) {
      var pzaAct=parseFloat(document.getElementById('pzaActuales').innerHTML);
      var NuePza=parseFloat(e.target.value);
      var suma=(pzaAct+NuePza);
      if(isNaN(suma))
      {
        suma=pzaAct;
      }
      document.getElementById('pzaTotales').innerHTML=suma;
}
function sumaPiezasPI(e) {
      var pzaAct=parseFloat(document.getElementById('pzaActualesPI').innerHTML);
      var NuePza=parseFloat(e.target.value);
      var suma=(pzaAct+NuePza);
      if(isNaN(suma))
      {
        suma=pzaAct;
      }
      document.getElementById('pzaTotalesPI').innerHTML=suma;
}
function descuentaPiezas(e) {
      var pzaAct=parseFloat(document.getElementById('pzaActualesPI2').innerHTML);
      var DesPza=parseFloat(e.target.value);
      var suma=(pzaAct-DesPza);
      if(isNaN(suma))
      {
        suma=pzaAct;
      }
      if(DesPza>pzaAct)
      {
        e.target.value=0;
        suma=pzaAct;
        console.log('No se puede');
        $(e.target).notify('Debe ser menor');
      }
      document.getElementById('pzaTotalesPI2').innerHTML=suma;
}
function actualizaProducto(datos)
{
      $.ajax({
                url:base_url+"inventario/Franquiciatario/InventarioF/actualizar/",
                type:'POST',
                dataType: 'json',
                data:datos,
                success:function(response){
                    console.log(response);
                    if(response=='correcto')
                    {
                      $('.modal').modal('hide');
                      toastr.success('Producto actualizado correctamente').css("width","100%"); 
                      $('#filtrarReportes').trigger( "click" );
                    }else{
                      $('.modal').modal('hide');
                      toastr.warning('Producto no actualizado').css("width","100%"); 
                      // $('#filtrarReportes').trigger( "click" );
                    }
                },
                error:function(error){
                  toastr.error("Ocurrio un error, no se actualizó ningun producto");
                  location.href="";
                },
      });
}
function validaPunto(e){
                var tecla = (document.all) ? e.keyCode : e.which;

                //Tecla de retroceso para borrar, siempre la permite
                if (tecla==8){
                  return true;
                }
        
                // Patron de entrada, en este caso solo acepta numeros
                var patron =/["0123456789."]/;
                var tecla_final = String.fromCharCode(tecla);
                return patron.test(tecla_final);
            }
(function(){
            function removeAccents ( data ) {
                if ( data.normalize ) {
                    /* Use la API I18n si está disponible para dividir caracteres y acentos, luego elimine
                       los acentos al por mayor. Tenga en cuenta que utilizamos los datos originales, así como
                       lo nuevo para permitir la búsqueda de cualquiera de los formularios.*/
                    return data +' '+ data
                        .normalize('NFD')
                        .replace(/[\u0300-\u036f]/g, '');
                }
             
                return data;
            }
             
            var searchType = jQuery.fn.DataTable.ext.type.search; 
            searchType.string = function ( data ) {
                return ! data ?
                    '' :
                    typeof data === 'string' ?
                        removeAccents( data ) :
                        data;
            };
             
            searchType.html = function ( data ) {
                return ! data ?
                    '' :
                    typeof data === 'string' ?
                        removeAccents( data.replace( /<.*?>/g, '' ) ) :
                        data;
            };
        }());