var tabla;

//funcion que se ejecuta al inicio
function init() {
  saldo();
  mostrarform(false);
  listar();

  $("#btnGuardar").on("click", function (e) {
    /* Evitamos el envío real del formulario */
    e.preventDefault();

    validar();
    var val = $("#validado").val();
    console.log(val);
    if (val == 1) {
      bootbox.confirm(
        "¿Esta seguro que quiere guardar los dato?",
        function (result) {
          if (result) {
            modificarValoresAnumerico();
            guardaryeditar(e);
          }
        }
      );
    }
  });

  //cargamos Categoria InterBankWare
  $.post(
    "controladores/categoriainterbankControlador.php?op=select",
    function (ca) {
      console.log(ca);
      $("#idcategoriainterbank").html(ca);
      $("#idcategoriainterbank").val(0);
      $("#idcategoriainterbank").selectpicker("refresh");
      buscarcategoria(1);
    }
  );

  //cargamos los items al select Cuenta de Banco
  $.post(
    "controladores/cuentabancoControlador.php?op=selectCuentabanco",
    function (c) {
      console.log(c);
      $("#idbancocuenta").html(c);
      //$('#idbancocuenta').selectpicker('refresh');
      buscarcuenta(); //Buscamos la cuenta de caja chica
    }
  );
}

function saldo() {
  idbancocuenta1 = $("#idbancocuenta1").val();
  $.post(
    "controladores/registrodecuentasControlador.php?op=saldo",
    { idbancocuenta1: idbancocuenta1 },
    function (data, status) {
      //alert ('estatus: '+status);
      //	console.log("data1 antes "+data1);
      data1 = JSON.parse(data);
      console.log("data1 " + data1);
      //	console.log("data1.saldo "+data1.saldod);
      $("#saldo").val(number_format(data1.saldob, 2));
      $("#saldo1").val(number_format(data1.saldob, 2));
      //$("#tasa_euro").val(data1.tasa_euro);
      //	console.log("saldo: "+$("#saldo").val());
      //		alert ('Control: '+data1.nrocontrol+' Factura: '+data1.nrofactura);
    }
  );

  //Para capturar el evento de cierre de una ventana modal
  $("#myModallistarexportar").on("hidden.bs.modal", function () {
    console.log("Cerrando ventana modal");
    if ($.fn.DataTable.isDataTable("#tblistarexportar")) {
      $("#tblistarexportar").DataTable().destroy();
      console.log("eliminando tabla del modal");
    }
  });
}

function buscarcuenta() {
  var select1 = document.getElementById("idbancocuenta");
  var idbancocuenta1 = $("#idbancocuenta1").val();
  var idbancocuenta2 = "";
  //Recorremos la cuenta para buscar correcto
  for (var i = 0; i < select1.length; i++) {
    var opt = select1[i];
    var nombre3 = opt.text;
    var valoroo = opt.value;
    var valorooo = valoroo.split("-");
    console.log(
      "i vale: " + i + "Y nombre: " + nombre3 + " valoroo : " + valoroo
    );
    if (valorooo[0] == idbancocuenta1) {
      valor = i;
      console.log("Lo consiguio i vale: " + i + "Y nombre: " + nombre3);
      idbancocuenta2 = valorooo[0] + "-" + valorooo[1];
      break;
    }
  }

  $("#idbancocuenta").val(idbancocuenta2);
  $("#idbancocuenta").selectpicker("refresh");
}

function buscarcategoria(categoria) {
  var select2 = document.getElementById("idcategoriainterbank");

  $("#idcategoriainterbank").val(0);
  if (select2.length > 0) {
    $("#idcategoriainterbank").val(categoria);
  }
  $("#idcategoriainterbank").selectpicker("refresh");
}

function buscarTasaDeCambio() {
  idempresa_venta = $("#idempresa_venta").val();
  //alert ('idempresa_venta: '+idempresa_venta);
  $.post(
    "controladores/empresaControlador.php?op=buscarTasaDeCambio",
    { idempresa_venta: idempresa_venta },
    function (data, status) {
      //alert ('estatus: '+status);
      data1 = JSON.parse(data);
      $("#tasa_dollar").val(number_format(data1.tasa_dollar, 2));
      //$("#tasa_euro").val(data1.tasa_euro);
      console.log("data1.tasa_dollar: " + $("#tasa_dollar").val());
      //		alert ('Control: '+data1.nrocontrol+' Factura: '+data1.nrofactura);
    }
  );
}

function modificarValoresAnumerico() {
  $("#monto").val(numero($("#monto").val()));
  $("#montod").val(numero($("#montod").val()));
  $("#tasa_dollar").val(numero($("#tasa_dollar").val()));
}

//funcion limpiar
function limpiar() {
  $("#formulario").data("bootstrapValidator").resetForm(true);
  $("#monto").val("");
  $("#montod").val("");
  $("#idregistrodecuentas").val("");
  $("#tasa_dollar").val("");
  //$("#idbancocuenta").val("");
  buscarcuenta();
  $("#fecha_hora").val("");
  $("#detalle").val("");

  //obtenemos la fecha actual
  var now = new Date();
  var today = new Date();
  var dd = ("0" + now.getDate()).slice(-2);
  var mm = ("0" + (now.getMonth() + 1)).slice(-2);
  var yyyy = now.getFullYear();
  var today = yyyy + "-" + mm + "-" + dd;
  $(fecha_hora).val(today);
}

//funcion mostrar formulario
function mostrarform(flag) {
  limpiar();
  buscarTasaDeCambio();

  if (flag) {
    $("#listadoregistros").hide();
    $("#formularioregistros").show();
    $("#formularioregistros1").show();
    $("#btnGuardar").prop("disabled", false);
    $("#btnagregar").hide();
    buscarcuenta();
    buscarcategoria(1);
  } else {
    $("#listadoregistros").show();
    $("#formularioregistros").hide();
    $("#formularioregistros1").hide();
    $("#btnagregar").show();
  }
}

//cancelar form
function cancelarform() {
  limpiar();
  mostrarform(false);
}

//funcion listar
function listarexportar() {
  idbancocuenta1 = $("#idbancocuenta1").val();
  console.log("id banco: ", idbancocuenta1);
  tablalistarexportar = $("#tblistarexportar")
    .dataTable({
      aProcessing: true, //activamos el procedimiento del datatable
      aServerSide: true, //paginacion y filrado realizados por el server
      dom: "Bfrtip", //definimos los elementos del control de la tabla
      buttons: [
        {
          text: "Excel",
          extend: "excelHtml5",
          footer: true,
          filename: "Comisión de: ",
          //orientation: 'landscape', //portrait
          //pageSize: 'A4', //A3 , A5 , A6 , legal , letter
          title: "Comisión de: ",
          exportOptions: {
            columns: [1, 2, 3, 4, 5],
            //columns: ':visible',
            search: "applied",
            order: "applied",
          },
        },
        {
          text: "PDF",
          extend: "pdfHtml5",
          footer: true,
          filename: "Comisión de: ",
          orientation: "landscape", //portrait
          pageSize: "A4", //A3 , A5 , A6 , legal , letter
          title: "Comisión de: ",
          exportOptions: {
            columns: [1, 2, 3, 4, 5],
            //columns: ':visible',
            search: "applied",
            order: "applied",
          },
        },
      ],

      ajax: {
        url: "controladores/registrodecuentasControlador.php?op=listarexportar",
        type: "post",
        data: {
          idbancocuenta1: idbancocuenta1,
        },
        dataType: "json",
        error: function (e) {
          console.log("Error: ", e.responseText);
        },
      },
      columnDefs: [
        //Oculto La columna por donde ordeno
        {
          targets: [0, 6, 7, 8, 9],
          visible: false,
          searchable: false,
        },
      ],
      drawCallback: function () {
        var api = this.api();
        /* var data	= api.column(3).data();
			var data1	= api.column(5).data();
			var data2	= api.column(4).data(); */

        var data = api.column(3, { page: "current" }).data();
        var data1 = api.column(6, { page: "current" }).data();
        var data2 = api.column(5, { page: "current" }).data();

        var total = 0;

        for (var i = 0; i < data.length; i++) {
          var pos = data1[i].indexOf(">");
          var pos2 = data2[i].indexOf(">");
          var tipo = data2[i].substring(pos2 + 1, pos2 + 6);
          var palabra = data1[i].substring(pos + 1, pos + 10);
          console.log(
            "data: " +
              data[i] +
              " data1: " +
              data1[i] +
              " posicion: " +
              pos +
              " palabra: " +
              palabra +
              " data2: " +
              data2[i] +
              " tipo: " +
              tipo
          );
          if (
            palabra == "Procesado" ||
            palabra == "Cobro</sp" ||
            palabra == "Pago</spa"
          ) {
            if (tipo == "CARGO" || tipo == "PAGO<") {
              total = total - numero(data[i]);
            } else {
              total = total + numero(data[i]);
            }
          }
        }
        total = number_format(total * 1, 2);
        $(api.column(0).footer()).html("Total:");
        $(api.column(3).footer()).html(total);
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[9, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
  $("#myModallistarexportar").modal("show");
}

//funcion listar
function listar() {
  idbancocuenta1 = $("#idbancocuenta1").val();
  console.log("id banco: ", idbancocuenta1);
  tabla = $("#tbllistado")
    .dataTable({
      aProcessing: true, //activamos el procedimiento del datatable
      aServerSide: true, //paginacion y filrado realizados por el server
      dom: "Bfrtip", //definimos los elementos del control de la tabla
      buttons: {
        dom: {
          button: {
            className: "btn btn-block btn-primary btn-sm btn-rounded",
          },
        },
        buttons: [
          // Muestra botones para exportar en diferentes formatos
          {
            text: "Exportar", // Texto del botón personalizado
            action: function (e, dt, node, config) {
              // Acción a realizar cuando se hace clic en el botón personalizado
              listarexportar();
            },
          },
        ],
      },
      ajax: {
        url: "controladores/registrodecuentasControlador.php?op=listarbs",
        type: "post",
        data: {
          idbancocuenta1: idbancocuenta1,
        },
        dataType: "json",
        error: function (e) {
          console.log("Error: ", e.responseText);
        },
      },
      columnDefs: [
        //Oculto La columna por donde ordeno
        {
          targets: [6, 7, 8, 9],
          visible: false,
          searchable: false,
        },
      ],
      drawCallback: function () {
        var api = this.api();
        /* var data	= api.column(3).data();
			var data1	= api.column(5).data();
			var data2	= api.column(4).data(); */

        var data = api.column(3, { page: "current" }).data();
        var data1 = api.column(6, { page: "current" }).data();
        var data2 = api.column(5, { page: "current" }).data();

        var total = 0;

        for (var i = 0; i < data.length; i++) {
          var pos = data1[i].indexOf(">");
          var pos2 = data2[i].indexOf(">");
          var tipo = data2[i].substring(pos2 + 1, pos2 + 6);
          var palabra = data1[i].substring(pos + 1, pos + 10);
          console.log(
            "data: " +
              data[i] +
              " data1: " +
              data1[i] +
              " posicion: " +
              pos +
              " palabra: " +
              palabra +
              " data2: " +
              data2[i] +
              " tipo: " +
              tipo
          );
          if (
            palabra == "Procesado" ||
            palabra == "Cobro</sp" ||
            palabra == "Pago</spa"
          ) {
            if (tipo == "CARGO" || tipo == "PAGO<") {
              total = total - numero(data[i]);
            } else {
              total = total + numero(data[i]);
            }
          }
        }
        total = number_format(total * 1, 2);
        $(api.column(0).footer()).html("Total:");
        $(api.column(3).footer()).html(total);
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[9, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
}

//funcion para guardaryeditar
function guardaryeditar(e) {
  e.preventDefault(); //no se activara la accion predeterminada
  $("#btnGuardar").prop("disabled", true);
  var formData = new FormData($("#formulario")[0]);

  $.ajax({
    url: "controladores/registrodecuentasControlador.php?op=guardaryeditar",
    type: "POST",
    data: formData,
    contentType: false,
    processData: false,

    success: function (datos) {
      bootbox.alert(datos);
      saldo();
      mostrarform(false);
      tabla.ajax.reload();
    },
  });

  limpiar();
}

function mostrar(idregistrodecuentas) {
  $.post(
    "controladores/registrodecuentasControlador.php?op=mostrar",
    { idregistrodecuentas: idregistrodecuentas },
    function (data, status) {
      data = JSON.parse(data);
      mostrarform(true);
      /* $("#monto").val("");
      $("#montod").val("");
      $("#idregistrodecuentas").val("");
      $("#tasa_dollar").val("");
      $("#idbancocuenta").val("");
      $("#fecha_hora").val("");
      $("#detalle").val(""); */
      $("#monto").val(number_format(data.monto, 2));
      $("#montod").val(number_format(data.montod, 2));
      $("#idregistrodecuentas").val(data.idregistrodecuentas);
      /*  $("#idbancocuenta").val(data.idbancocuenta);
      $("#idbancocuenta").selectpicker('refresh'); */
      buscarcuenta();

      $("#tiporegistro").val(data.tiporegistro);
      $("#tiporegistro").selectpicker("refresh");
      $("#idcategoriainterbank").val(data.idcategoriainterbank);
      $("#idcategoriainterbank").selectpicker("refresh");
      $("#fecha_hora").val(data.fecha);
      $("#detalle").val(data.detalle);
      $("#tasa_dollar").val(data.tasa);
    }
  );
}

//funcion para desactivar
function eliminar(idregistrodecuentas) {
  bootbox.confirm("¿Esta seguro de eliminar este dato?", function (result) {
    if (result) {
      $.post(
        "controladores/registrodecuentasControlador.php?op=eliminar",
        { idregistrodecuentas: idregistrodecuentas },
        function (e) {
          bootbox.alert(e);
          tabla.ajax.reload();
        }
      );
    }
  });
}

//funcion para desactivar
function desactivar(idregistrodecuentas) {
  bootbox.confirm("¿Esta seguro de desactivar este dato?", function (result) {
    if (result) {
      $.post(
        "controladores/registrodecuentasControlador.php?op=desactivar",
        { idregistrodecuentas: idregistrodecuentas },
        function (e) {
          bootbox.alert(e);
          saldo();
          tabla.ajax.reload();
        }
      );
    }
  });
}

function activar(idregistrodecuentas) {
  bootbox.confirm("¿Esta seguro de activar este dato?", function (result) {
    if (result) {
      $.post(
        "controladores/registrodecuentasControlador.php?op=activar",
        { idregistrodecuentas: idregistrodecuentas },
        function (e) {
          bootbox.alert(e);
          saldo();
          tabla.ajax.reload();
        }
      );
    }
  });
}

function mostrarc(idmovimiento) {
  //bootbox.alert('mostar idmoviento '+idmovimiento);
  tabla1 = $("#tbdocumentos")
    .dataTable({
      aProcessing: true, //activamos el procedimiento del datatable
      aServerSide: true, //paginacion y filrado realizados por el server
      dom: "Bfrtip", //definimos los elementos del control de la tabla
      buttons: [],
      ajax: {
        url: "controladores/movimientobancoControlador.php?op=listarmovimientocobro",
        method: "get",
        data: {
          idmovimiento: idmovimiento,
        },
        dataType: "json",
        error: function (e) {
          console.log(e.responseText);
        },
      },
      drawCallback: function () {
        var api = this.api();
        var data1 = api.column(2).data();
        var data2 = api.column(3).data();
        var data3 = api.column(4).data();
        var data4 = api.column(5).data();
        var total1 = 0;
        var total2 = 0;
        var total3 = 0;
        var total4 = 0;

        for (var i = 0; i < data1.length; i++) {
          total1 = total1 + numero(data1[i]);
          total2 = total2 + numero(data2[i]);
          total3 = total3 + numero(data3[i]);
          total4 = total4 + numero(data4[i]);
        }
        total1 = number_format(total1 * -1, 2);
        total2 = number_format(total2 * -1, 2);
        total3 = number_format(total3 * -1, 2);
        total4 = number_format(total4 * -1, 2);
        $(api.column(0).footer()).html("Total:");
        $(api.column(2).footer()).html(
          '<div style="text-align:center">' + total1 + "</div>"
        );
        $(api.column(3).footer()).html(
          '<div style="text-align:center">' + total2 + "</div>"
        );
        $(api.column(4).footer()).html(
          '<div style="text-align:center">' + total3 + "</div>"
        );
        $(api.column(5).footer()).html(
          '<div style="text-align:center">' + total4 + "</div>"
        );
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[0, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
  $("#myModalM").modal("show");
}

function mostrarp(idmovimiento) {
  //bootbox.alert('mostar idmoviento '+idmovimiento);
  tabla1 = $("#tbdocumentos")
    .dataTable({
      aProcessing: true, //activamos el procedimiento del datatable
      aServerSide: true, //paginacion y filrado realizados por el server
      dom: "Bfrtip", //definimos los elementos del control de la tabla
      buttons: [],
      ajax: {
        url: "controladores/movimientobancoControlador.php?op=listarmovimientopago",
        method: "get",
        data: {
          idmovimiento: idmovimiento,
        },
        dataType: "json",
        error: function (e) {
          console.log(e.responseText);
        },
      },
      drawCallback: function () {
        var api = this.api();
        var data1 = api.column(2).data();
        var data2 = api.column(3).data();
        var data3 = api.column(4).data();
        var total1 = 0;
        var total2 = 0;
        var total3 = 0;

        for (var i = 0; i < data1.length; i++) {
          total1 = total1 + numero(data1[i]);
          total2 = total2 + numero(data2[i]);
          total3 = total3 + numero(data3[i]);
        }
        total1 = number_format(total1 * 1, 2);
        total2 = number_format(total2 * 1, 2);
        total3 = number_format(total3 * 1, 2);
        $(api.column(0).footer()).html("Total:");
        $(api.column(2).footer()).html(total1);
        $(api.column(3).footer()).html(total2);
        $(api.column(4).footer()).html(total3);
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[0, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
  $("#myModalM").modal("show");
}

init();
