PageSourceSearch

https://admin-electronico.contamatic.ec/factumatic/vistas/js/empresas.js?rev=1790261997

js contamatic.ec collected 2026-09-24 15:01:41 UTC 275,108 bytes, 7,558 lines download raw bytes

1if (window.location.href.indexOf("crearEmpresa") > -1 || window.location.href.indexOf("crear-empresa-contable") > -1) {
2  class Empresas {
3
4    constructor() {
5      this.codigoEmpresa = "";
6      this.codigoPlan = "";
7      this.tipoPlan = "";
8    }
9    /* -------------------------------------------------------------------------- */
10    /*                               GUARDAR EMPRESA                              */
11    /* -------------------------------------------------------------------------- */
12
13    guardarEmpresa() {
14      $("#guardarEmpresa").click(function () {
15
16        $("#guardarEmpresa").prop("disabled", true);
17        var usuario = $("#usuarioEmpresa").val();
18        var correo = $("#emailEmpresa").val();
19        var sistema = $("#tipoSistema").val();
20
21
22        var datos = new FormData();
23        datos.append("validarUsuarioFacturacion", usuario);
24        datos.append("emailEmpresa", correo);
25        datos.append("sistema", sistema);
26        $.ajax({
27          url: "ajax/empresas.ajax.php",
28          type: "POST",
29          data: datos,
30          cache: false,
31          contentType: false,
32          processData: false,
33          dataType: "json",
34          success: function (respuesta) {
35            if (respuesta) {
36              $("#guardarEmpresa").prop("disabled", false);
37              //USUARIO REPETIDO
38              $("#usuarioEmpresa").val("");
39              $("#emailsUsuarioEmpresa").val("");
40              toastr.error("Este usuario ya existe, intente con uno distinto!");
41            } else {
42              if ($("#ruc").val() == '') {
43                toastr.info("Por favor ingrese el ruc es un campo obligatorio se encuentra en la primera pestaña", "Importante", { timeOut: 3000 });
44              }
45              var datos = new FormData();
46              datos.append("validarRUCEmpresa", true);
47              datos.append("ruc", $("#ruc").val());
48              datos.append("sistema", $("#tipoSistema").val());
49              $.ajax({
50                url: "ajax/empresas.ajax.php",
51                type: "POST",
52                data: datos,
53                cache: false,
54                contentType: false,
55                processData: false,
56                dataType: "json",
57                success: function (respuesta) {
58                  if (respuesta) {
59                    toastr.info("Ya existe un registro con este RUC", "Importante", { timeOut: 3000 });
60                    $("#guardarEmpresa").prop("disabled", false);
61                    $("#ruc").val("");
62                  } else {
63                    const empresa = new Empresas();
64                    if (
65
66                      empresa.validarFormVacios("ruc") &&
67                      empresa.validarFormVacios("razon") &&
68                      empresa.validarFormVacios("nombreComercial") &&
69                      empresa.validarFormVacios("nombreMostrar") &&
70                      empresa.validarFormVacios("actividadEmpresa") &&
71                      empresa.validarFormVacios("ciudad") &&
72                      empresa.validarFormVacios("direccion") &&
73                      empresa.validarFormVacios("telefono1") &&
74                      empresa.validarFormVacios("emailEmpresa") &&
75                      empresa.validarFormVacios("llevarContabilidad") &&
76                      empresa.validarFormVacios("claveFirmaElectronica") &&
77                      empresa.validarFormVacios("tipoAmbienteConf") &&
78                      empresa.validarRuc("ruc") &&
79                      empresa.validarFormVacios("usuarioEmpresa") &&
80                      empresa.validarFormVacios("passwordCodificar") &&
81                      empresa.validarIdentificacion("identificacionUsuarioEmpresa") &&
82                      empresa.validarFormVacios("nombresUsuarioEmpresa") &&
83                      empresa.validarFormVacios("cant_facturas")
84                    ) {
85
86                      let email = document.getElementById('emailEmpresa').value;
87                      let emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
88                      if (!emailPattern.test(email)) {
89                        toastr.info("Ingrese un correo electrónico de empresa válido", "Importante", { timeOut: 3000 });
90                        $("#guardarEmpresa").prop("disabled", false);
91                        return;
92                      }
93                      if ($("#tipoPlanEmpresa").val() == "normal" && document.getElementById('seleccionPlanNormal').value == "") {
94                        toastr.info("Seleccione la cantidad de documentos del plan", "Importante", { timeOut: 3000 });
95                        $("#guardarEmpresa").prop("disabled", false);
96                        return;
97                      }
98                      if ($("#tipoSistema").val() == "") {
99                        toastr.info("Seleccione la cantidad de documentos del plan", "Importante", { timeOut: 3000 });
100                        $("#guardarEmpresa").prop("disabled", false);
101                        return;
102                      }
103
104
105                      var numeroArchivos = $("#comprobanteArchivoPago")[0].files;
106                      var numcomprobante = $("#numeropago_solicitudSJ").val().trim();
107                      var bancocomprobante = $("#bancopago_solicitudSJ").val().trim();
108                      var valorcomprobante = $("#valorcomprobante").val().trim();
109                      var fechacomprobante = $("#fechacomprobante").val().trim();
110                      let jsonCliente = [];
111                      let esPlanPruebas = document.getElementById('referenciaPlan').value.trim() == "PLAN PRUEBAS ILIMITADO";
112
113                      if ($("#tipoPlanEmpresa").val() == "normal" && esPlanPruebas) {
114                        if ($("#idPlanSeleccionado").val().trim() == "") {
115                          toastr.info("Seleccione el Plan Pruebas en la pestaña (Plan)", "Importante", { timeOut: 3000 });
116                          $("#guardarEmpresa").prop("disabled", false);
117                          return;
118                        }
119                        let diasPrueba = $("#diasPrueba").val().trim();
120                        if (diasPrueba === "" || parseInt(diasPrueba, 10) <= 0) {
121                          toastr.info("Ingrese los días de prueba para este plan", "Importante", { timeOut: 3000 });
122                          $("#guardarEmpresa").prop("disabled", false);
123                          return;
124                        }
125                      } else if ($("#tipoPlanEmpresa").val() == "normal") {
126                        let terminosCondiciones = $("#aceptarCondiciones").is(":checked");
127                        if (!terminosCondiciones) {
128                          toastr.info("Acepte los terminos y condiciones", "Importante", { timeOut: 3000 });
129                          $("#guardarEmpresa").prop("disabled", false);
130                          return;
131                        }
132                        if ($("#idPlanSeleccionado").val().trim() == "") {
133                          toastr.info("Seleccione la cantidad de documentos en la pestaña (Plan)", "Importante", { timeOut: 3000 });
134                          $("#guardarEmpresa").prop("disabled", false);
135                          return;
136                        }
137
138                        if (numcomprobante == "" || valorcomprobante == "" || fechacomprobante == "" || bancocomprobante == "" || numeroArchivos == '') {
139                          toastr.info("Ingrese los campos para guardar el registro");
140                          $("#guardarEmpresa").prop("disabled", false);
141
142                          return;
143                        } else {
144                          if (document.getElementById('referenciaPlan').value != "GRATUITO-ANUAL") {
145                            if (numeroArchivos.length != 0) {
146                              if (numeroArchivos[0].type == "application/pdf" || numeroArchivos[0].type == "image/png" || numeroArchivos[0].type == "image/jpeg") {
147                              } else {
148                                toastr.info("El documento cargado debe ser una Imagen o PDF");
149                                $("#guardarEmpresa").prop("disabled", false);
150
151                                return false;
152                              }
153                            } else {
154                              $("#guardarEmpresa").prop("disabled", false);
155                              toastr.info("Cargue el documento pdf o imagen del comprobante de pago");
156                              return false;
157                            }
158                          }
159                        }
160
161                        let facturarEmpresa = document.getElementById('facturarEmpresaMisDatos').value;
162
163                        if (facturarEmpresa == 0) {
164                          toastr.info("Seleccione los datos de factura", "Importante", { timeOut: 3000 });
165                          $("#guardarEmpresa").prop("disabled", false);
166                          return;
167                        }
168                        if (facturarEmpresa == 1) {
169                          facturarEmpresa = true;
170                          if ($("#identificacion_contador").val() == "") {
171                            toastr.info("Ingrese la identificación del contador", "Importante", { timeOut: 3000 });
172                            $("#guardarEmpresa").prop("disabled", false);
173                            return;
174                          }
175
176                          if ($("#nombre_contador").val() == "") {
177                            toastr.info("Ingrese el nombre del contador", "Importante", { timeOut: 3000 });
178                            $("#guardarEmpresa").prop("disabled", false);
179                            return;
180                          }
181                          if ($("#direcion_contador").val() == "") {
182                            toastr.info("Ingrese la dirección del contador", "Importante", { timeOut: 3000 });
183                            $("#guardarEmpresa").prop("disabled", false);
184                            return;
185                          }
186                          if ($("#telefono_contador").val() == "") {
187                            toastr.info("ngrese el telefono del contador", "Importante", { timeOut: 3000 });
188                            $("#guardarEmpresa").prop("disabled", false);
189                            return;
190                          }
191                          if ($("#correo_contador").val() == "") {
192                            toastr.info("Ingrese el correo del contador", "Importante", { timeOut: 3000 });
193                            $("#guardarEmpresa").prop("disabled", false);
194                            return;
195                          }
196
197                        } else {
198                          facturarEmpresa = false;
199                          if ($("#identificacion_cliente").val() == "") {
200                            toastr.info("Ingrese la identificación del cliente para facturar", "Importante", { timeOut: 3000 });
201                            $("#guardarEmpresa").prop("disabled", false);
202                            return;
203                          }
204
205                          if ($("#nombre_cliente").val() == "") {
206                            toastr.info("Ingrese el nombre del cliente para facturar", "Importante", { timeOut: 3000 });
207                            $("#guardarEmpresa").prop("disabled", false);
208                            return;
209                          }
210                          if ($("#direccion_cliente").val() == "") {
211                            toastr.info("Ingrese la dirección del cliente para facturar", "Importante", { timeOut: 3000 });
212                            $("#guardarEmpresa").prop("disabled", false);
213                            return;
214                          }
215                          if ($("#telefono_cliente").val() == "") {
216                            toastr.info("Ingrese el teléfono del cliente para facturar", "Importante", { timeOut: 3000 });
217                            $("#guardarEmpresa").prop("disabled", false);
218                            return;
219                          }
220                          if ($("#correo_cliente").val() == "") {
221                            toastr.info("Ingrese el correo del cliente para facturar", "Importante", { timeOut: 3000 });
222                            $("#guardarEmpresa").prop("disabled", false);
223                            return;
224                          }
225                        }
226
227                        jsonCliente.push({
228                          identificacion_cliente: document.getElementById('identificacion_cliente').value,
229                          nombre_cliente: document.getElementById('nombre_cliente').value,
230                          direccion_cliente: document.getElementById('direccion_cliente').value,
231                          telefono_cliente: document.getElementById('telefono_cliente').value,
232                          correo_cliente: document.getElementById('correo_cliente').value,
233                          observacion_cliente: document.getElementById('observacioncomprobante').value,
234                          facturarConMisDatos: facturarEmpresa,
235                          identificacion_contador: document.getElementById('identificacion_contador').value,
236                          nombre_contador: document.getElementById('nombre_contador').value,
237                          direcion_contador: document.getElementById('direcion_contador').value,
238                          telefono_contador: document.getElementById('telefono_contador').value,
239                          correo_contador: document.getElementById('correo_contador').value,
240                          totalFactura: document.getElementById('valorcomprobante').value,
241                          fechapago_solicitudSJ: document.getElementById('fechacomprobante').value,
242                          bancopago_solicitudSJ: document.getElementById('bancopago_solicitudSJ').value,
243                          numeropago_solicitudSJ: document.getElementById('numeropago_solicitudSJ').value,
244                        });
245
246                        var precioContador = parseFloat(document.getElementById('valor_certificado').textContent.replace('$', '').replace(',', ''));
247
248                        const valorFacturarNum = parseFloat(valor_facturar);
249                        const precioContadorNum = parseFloat(precioContador);
250
251                        if (valorFacturarNum < precioContadorNum) {
252                          toastr.info("El valor a facturar no puede ser menor al precio contador.", "Importante", { timeOut: 3000 });
253                          return
254                        }
255
256                      }
257
258
259
260
261
262
263                      var datos = new FormData();
264                      datos.append("guardarEmpresa", true);
265                      datos.append("ruc", $("#ruc").val());
266                      datos.append("razon", $("#razon").val());
267                      datos.append("nombreComercial", $("#nombreComercial").val());
268                      datos.append("nombreMostrar", $("#nombreMostrar").val());
269                      datos.append("actividadEmpresa", $("#actividadEmpresa").val());
270                      datos.append("ciudad", $("#ciudad").val());
271                      datos.append("direccion", $("#direccion").val());
272                      datos.append("telefono1", $("#telefono1").val());
273                      datos.append("telefono2", $("#telefono2").val());
274                      datos.append("telefono3", $("#telefono3").val());
275                      datos.append("emailEmpresa", $("#emailEmpresa").val());
276                      datos.append("codigoArtesal", $("#codigoArtesal").val());
277                      datos.append("llevarContabilidad", $("#llevarContabilidad").val());
278                      datos.append("contribuyenteEspecial", $("#contribuyenteEspecial").val());
279                      datos.append("nuevaFoto", $("#nuevaFoto")[0].files[0]);
280                      datos.append("idContador", $("#idContador").val());
281                      datos.append("nombreContador", $("#nombreContador").val());
282                      datos.append("nombreFirmaElectronica", $("#nombreFirmaElectronica")[0].files[0]);
283                      datos.append("caducidadFirmaElectronica", $("#caducidadFirmaElectronica").val());
284                      datos.append("claveFirmaElectronica", $("#claveFirmaElectronica").val());
285                      datos.append("tipoAmbienteConf", $("#tipoAmbienteConf").val());
286                      datos.append("puntoEmisionT", $("#puntoEmisionT").val());
287                      datos.append("numeroEstablecimientoT", $("#numeroEstablecimientoT").val());
288                      datos.append("regimen", $("#regimen").val());
289                      datos.append("resolucion", $("#resolucion").val());
290                      datos.append("codigoCreador", $("#codigoUsuario").val());
291                      datos.append("codigoPlan", $("#codigoPlan").val());
292                      datos.append("tipoPlan", $("#tipoPlanEmpresa").val());
293                      datos.append("tipoSistema", $("#tipoSistema").val());
294                      datos.append("identificacionUsuarioEmpresa", $("#identificacionUsuarioEmpresa").val());
295                      datos.append("nombresUsuario", $("#nombresUsuarioEmpresa").val());
296                      datos.append("aliasUsuario", $("#usuarioEmpresa").val());
297                      datos.append("passwordUsuario", $("#passwordCodificar").val());
298                      datos.append("rolUsuario", $("#rolUsuarioEmpresa").val());
299                      datos.append("preciocontador", $("#contador").val());
300                      datos.append("preciopublico", $("#publico").val());
301                      datos.append("numdocumento", $("#numdocumento").val());
302                      datos.append("nombreplan", $("#nombreplan").val());
303                      datos.append("comision", $("#comision").val());
304                      datos.append("fotoUsuario", $("#nuevaFotoUsuarioEmpresa")[0].files[0]);
305                      datos.append("idPlanSeleccionado", $("#idPlanSeleccionado").val());
306                      if ($("#tipoPlanEmpresa").val() == "normal") {
307                        datos.append("jsonCliente", JSON.stringify(jsonCliente));
308                      }
309                      if (esPlanPruebas) {
310                        datos.append("diasPrueba", $("#diasPrueba").val().trim());
311                      }
312                      if ($("#tipoSistema").val() == "vendeFacil") {
313                        datos.append("numfirma", $("#tipoSistema").val());
314                      }
315                      $("#guardarEmpresa").prop("disabled", true);
316                      if ($("#tipoPlanEmpresa").val() == "normal") {
317                        $.ajax({
318                          url: "ajax/empresas.ajax.php",
319                          type: "POST",
320                          data: datos,
321                          cache: false,
322                          contentType: false,
323                          processData: false,
324                          success: function (respuesta) {
325                            var respuesta = JSON.parse(respuesta);
326                            $("#guardarEmpresa").prop("disabled", true);
327                            if (respuesta.estado) {
328                              setTimeout(() => {
329                                if (respuesta.tipo == "normal") {
330                                  $("#idCodigoPlan").val(btoa(respuesta.codplan));
331                                  $("#idCodigoEmpresa").val(btoa(respuesta.codempresa));
332                                  if (!esPlanPruebas) {
333                                    subirArchivoComprobantePagoEmpresa();
334                                  }
335                                  toastr.success("Empresa creada con exito!");
336                                  toastr.success("Usuario creado con exito!");
337                                  toastr.success("Plan creado con exito!");
338                                } else {
339                                  // location.reload();
340                                }
341
342                              }, 1000);
343                            } else {
344                              toastr.error("Error al crear la empresa!");
345                              // setTimeout(() => {
346                              //   location.reload();
347                              // }, 1000);
348                            }
349                          },
350                        });
351                      } else if ($("#tipoPlanEmpresa").val() == "prepago") {
352                        var data = new FormData();
353                        data.append("validarPlanUsuario", true);
354                        $.ajax({
355                          url: "ajax/usuarios.ajax.php",
356                          type: "POST",
357                          data: data,
358                          contentType: false,
359                          processData: false,
360                          success: function (respuesta) {
361                            var data = JSON.parse(respuesta);
362                            if (parseInt(data.cantidad) >= $("#codigoPlan").val()) {
363                              $.ajax({
364                                url: "ajax/empresas.ajax.php",
365                                type: "POST",
366                                data: datos,
367                                cache: false,
368                                contentType: false,
369                                processData: false,
370                                success: function (respuesta) {
371                                  let data = JSON.parse(respuesta);
372                                  $("#guardarEmpresa").prop("disabled", true);
373                                  if (data.estado && data.estado == true) {
374                                    toastr.success("Empresa creada con exito!");
375                                    toastr.success("Usuario creado con exito!");
376                                    toastr.success("Plan creado con exito!");
377
378                                    setTimeout(() => {
379                                      window.location = "empresas";
380                                    }, 2000);
381                                  } else {
382                                    toastr.error("Error al crear la empresa!");
383                                    $("#guardarEmpresa").prop("disabled", true);
384                                    // setTimeout(() => {
385                                    //   window.location = "empresas";
386                                    // }, 2000);
387                                  }
388                                },
389                              });
390                            } else {
391                              toastr.error("El número de documentos supera al total disponible del Plan Prepago");
392                            }
393                          },
394                        });
395                      }
396                    } else {
397                      $("#guardarEmpresa").prop("disabled", false);
398                    }
399                  }
400                }
401              })
402            }
403          },
404        });
405      });
406    }
407
408    guardarEmpresaContamatic() {
409      $("#guardarEmpresaContamatic").click(function () {
410
411        $("#guardarEmpresaContamatic").prop("disabled", true);
412
413        /*   if ($("#codigoUsuario").val() == "1") {
414             toastr.info("Este usuario no tiene permiso para el registro de sistema contables", "Importante", { timeOut: 3000 });
415             return;
416           }*/
417
418        const empresa = new Empresas();
419        if (
420          empresa.validarFormVacios("ruc") &&
421          empresa.validarFormVacios("razon") &&
422          empresa.validarFormVacios("nombreComercial") &&
423          empresa.validarFormVacios("nombreMostrar") &&
424          empresa.validarFormVacios("actividadEmpresa") &&
425          empresa.validarFormVacios("ciudad") &&
426          empresa.validarFormVacios("direccion") &&
427          empresa.validarFormVacios("telefono1") &&
428          empresa.validarFormVacios("emailEmpresa") &&
429          empresa.validarFormVacios("llevarContabilidad") &&
430          empresa.validarFormVacios("idReprensentante") &&
431          empresa.validarFormVacios("nombreRepresentante") &&
432          empresa.validarFormVacios("claveFirmaElectronica") &&
433          empresa.validarFormVacios("tipoAmbienteConf") &&
434          empresa.validarRuc("ruc") &&
435          empresa.validarIdentificacion("idRepresentante")
436        ) {
437
438          if ($("#seleccionPlanEmpresa").val() == "") {
439            $("#guardarEmpresaContamatic").prop("disabled", false);
440            toastr.info("Seleccione el plan!", "Importante", { timeOut: 3000 });
441            return;
442          }
443
444          var numeroArchivos = $("#comprobantePago")[0].files;
445          var numcomprobante = $("#numcomprobante").val().trim();
446          var bancocomprobante = $("#bancocomprobante").val().trim();
447          var valorcomprobante = $("#valorcomprobante").val().trim();
448          var fechacomprobante = $("#fechacomprobante").val().trim();
449
450          if (fechacomprobante == "") {
451            $("#guardarEmpresaContamatic").prop("disabled", false);
452            toastr.info("Ingrese la fecha de comprobante", "Importante", { timeOut: 3000 });
453            return;
454          }
455
456          if (valorcomprobante == "") {
457            $("#guardarEmpresaContamatic").prop("disabled", false);
458            toastr.info("Ingrese el valor de comprobante", "Importante", { timeOut: 3000 });
459            return;
460          }
461
462          if (bancocomprobante == "") {
463            $("#guardarEmpresaContamatic").prop("disabled", false);
464            toastr.info("Seleccione la entidad bancaria", "Importante", { timeOut: 3000 });
465            return;
466          }
467
468          if (numcomprobante == "") {
469            $("#guardarEmpresaContamatic").prop("disabled", false);
470            toastr.info("Ingrese el número de comprobante", "Importante", { timeOut: 3000 });
471            return;
472          }
473
474          if (numeroArchivos == "") {
475            $("#guardarEmpresaContamatic").prop("disabled", false);
476            toastr.info("Cargue el comprobante de pago", "Importante", { timeOut: 3000 });
477            return;
478          }
479
480          if (numcomprobante == "" || valorcomprobante == "" || fechacomprobante == "" || bancocomprobante == "" || numeroArchivos == '') {
481            $("#guardarEmpresaContamatic").prop("disabled", false);
482            toastr.info("Ingrese los datos de facturacion");
483            $("#guardarEmpresaContamatic").prop("disabled", false);
484
485            return;
486          } else {
487            if (numeroArchivos.length != 0) {
488              if (numeroArchivos[0].type == "application/pdf" || numeroArchivos[0].type == "image/png" || numeroArchivos[0].type == "image/jpeg") {
489              } else {
490                $("#guardarEmpresaContamatic").prop("disabled", false);
491                toastr.info("El documento cargado debe ser una Imagen o PDF");
492                $("#guardarEmpresaContamatic").prop("disabled", false);
493
494                return false;
495              }
496            } else {
497              $("#guardarEmpresaContamatic").prop("disabled", false);
498              toastr.info("Cargue el documento pdf o imagen del comprobante de pago");
499              return false;
500            }
501          }
502
503          // validar monto contrato
504          if ($("#montoContrato").val().trim() === "" || Number($("#montoContrato").val().trim()) <= 0 || isNaN(Number($("#montoContrato").val().trim()))) {
505            $("#guardarEmpresaContamatic").prop("disabled", false);
506            toastr.info("Ingrese un monto válido para el contrato", "Importante", { timeOut: 3000 });
507            return;
508          }
509
510
511          let jsonCliente = [];
512          let facturarEmpresa = document.getElementById('facturarEmpresaMisDatos').value;
513          if (facturarEmpresa == 1) {
514            facturarEmpresa = true;
515            if ($("#identificacion_contador").val() == "") {
516              $("#guardarEmpresaContamatic").prop("disabled", false);
517              toastr.info("Ingrese la identificación del contador", "Importante", { timeOut: 3000 });
518              return;
519            }
520
521            if ($("#nombre_contador").val() == "") {
522              $("#guardarEmpresaContamatic").prop("disabled", false);
523              toastr.info("Ingrese el nombre del contador", "Importante", { timeOut: 3000 });
524              return;
525            }
526            if ($("#direcion_contador").val() == "") {
527              $("#guardarEmpresaContamatic").prop("disabled", false);
528              toastr.info("Ingrese la dirección del contador", "Importante", { timeOut: 3000 });
529              return;
530            }
531            if ($("#telefono_contador").val() == "") {
532              $("#guardarEmpresaContamatic").prop("disabled", false);
533              toastr.info("ngrese el telefono del contador", "Importante", { timeOut: 3000 });
534              return;
535            }
536            if ($("#correo_contador").val() == "") {
537              $("#guardarEmpresaContamatic").prop("disabled", false);
538              toastr.info("Ingrese el correo del contador", "Importante", { timeOut: 3000 });
539              return;
540            }
541
542          } else {
543            facturarEmpresa = false;
544            if ($("#identificacion_cliente").val() == "") {
545              $("#guardarEmpresaContamatic").prop("disabled", false);
546              toastr.info("Ingrese la identificación del cliente para facturar", "Importante", { timeOut: 3000 });
547              return;
548            }
549
550            if ($("#nombre_cliente").val() == "") {
551              $("#guardarEmpresaContamatic").prop("disabled", false);
552              toastr.info("Ingrese el nombre del cliente para facturar", "Importante", { timeOut: 3000 });
553              return;
554            }
555            if ($("#direccion_cliente").val() == "") {
556              $("#guardarEmpresaContamatic").prop("disabled", false);
557              toastr.info("Ingrese la dirección del cliente para facturar", "Importante", { timeOut: 3000 });
558              return;
559            }
560            if ($("#telefono_cliente").val() == "") {
561              $("#guardarEmpresaContamatic").prop("disabled", false);
562              toastr.info("Ingrese el teléfono del cliente para facturar", "Importante", { timeOut: 3000 });
563              return;
564            }
565            if ($("#correo_cliente").val() == "") {
566              $("#guardarEmpresaContamatic").prop("disabled", false);
567              toastr.info("Ingrese el correo del cliente para facturar", "Importante", { timeOut: 3000 });
568              return;
569            }
570          }
571
572          let terminosCondiciones = $("#aceptarCondiciones").is(":checked");
573          if (!terminosCondiciones) {
574            toastr.info("Acepte los terminos y condiciones", "Importante", { timeOut: 3000 });
575            $("#guardarEmpresaContamatic").prop("disabled", false);
576            return;
577          }
578
579          if (Number($("#esGratuito").val()) == 1) {
580            if ($("#rolUsuarioContable").val().trim() == "") {
581              toastr.info("Ingrese el rol que cumple en la empresa", "Importante", { timeOut: 3000 });
582              $("#guardarEmpresaContamatic").prop("disabled", false);
583              return;
584            }
585          }
586
587          const selectElement = document.getElementById('bancocomprobante');
588          const selectedOption = selectElement.options[selectElement.selectedIndex];
589          const codigoBanco = selectedOption.getAttribute('codigoBanco');
590
591
592          jsonCliente.push({
593            identificacion_cliente: document.getElementById('identificacion_cliente').value,
594            nombre_cliente: document.getElementById('nombre_cliente').value,
595            direccion_cliente: document.getElementById('direccion_cliente').value,
596            telefono_cliente: document.getElementById('telefono_cliente').value,
597            correo_cliente: document.getElementById('correo_cliente').value,
598            observacion_cliente: document.getElementById('observacioncomprobante').value,
599            facturarConMisDatos: facturarEmpresa,
600            identificacion_contador: document.getElementById('identificacion_contador').value,
601            nombre_contador: document.getElementById('nombre_contador').value,
602            direcion_contador: document.getElementById('direcion_contador').value,
603            telefono_contador: document.getElementById('telefono_contador').value,
604            correo_contador: document.getElementById('correo_contador').value,
605            totalFactura: document.getElementById('valorcomprobante').value,
606            fechapago_solicitudSJ: document.getElementById('fechacomprobante').value,
607            bancopago_solicitudSJ: codigoBanco,
608            numeropago_solicitudSJ: document.getElementById('numcomprobante').value,
609          });
610
611
612          var precioContador = parseFloat(document.getElementById('valor_certificado').textContent.replace('$', '').replace(',', ''));
613
614          const valorFacturarNum = parseFloat(valor_facturar);
615          const precioContadorNum = parseFloat(precioContador);
616
617          if (valorFacturarNum < precioContadorNum) {
618            $("#guardarEmpresaContamatic").prop("disabled", false);
619            toastr.info("El valor a facturar no puede ser menor al precio contador.", "Importante", { timeOut: 3000 });
620            return
621          }
622
623          let tipoMensualidad = '';
624          const valorMensualidad = parseFloat(document.getElementById('valor_certificado').textContent.replace('$', '').replace(',', ''));;
625          if ($("#tipoPlanEmpresaContable").val() === 'anual') {
626            tipoMensualidad = "12"
627          } else if ($("#tipoPlanEmpresaContable").val() === 'mensual') {
628            tipoMensualidad = "1"
629          }
630
631          var datos = new FormData();
632          datos.append("guardarEmpresa", true);
633          datos.append("ruc", $("#ruc").val());
634          datos.append("razon", $("#razon").val());
635          datos.append("nombreComercial", $("#nombreComercial").val());
636          datos.append("nombreMostrar", $("#nombreMostrar").val());
637          datos.append("actividadEmpresa", $("#actividadEmpresa").val());
638          datos.append("ciudad", $("#ciudad").val());
639          datos.append("direccion", $("#direccion").val());
640          datos.append("telefono1", $("#telefono1").val());
641          datos.append("telefono2", $("#telefono2").val());
642          datos.append("telefono3", $("#telefono3").val());
643          datos.append("emailEmpresa", $("#emailEmpresa").val());
644          datos.append("codigoArtesal", $("#codigoArtesal").val());
645          datos.append("llevarContabilidad", $("#llevarContabilidad").val());
646          datos.append(
647            "contribuyenteEspecial",
648            $("#contribuyenteEspecial").val()
649          );
650          if ($("#nuevaFoto").val() != "") {
651            datos.append("nuevaFoto", $("#nuevaFoto")[0].files[0]);
652          } else {
653            datos.append("nuevaFoto", "");
654          }
655
656          datos.append("idRepresentante", $("#idRepresentante").val());
657          datos.append("nombreRepresentante", $("#nombreRepresentante").val());
658          datos.append("idContador", $("#idContador").val());
659          datos.append("nombreContador", $("#nombreContador").val());
660          datos.append("fechaFacturarContable", $("#fechaDeFacturarContable").val());
661          datos.append("montoContrato", $("#montoContrato").val());
662
663          datos.append(
664            "nombreFirmaElectronica",
665            $("#nombreFirmaElectronica")[0].files[0]
666          );
667
668          datos.append(
669            "comprobantePago",
670            $("#comprobantePago")[0].files[0]
671          );
672          //Caducidad Firma Electronica
673          datos.append("caducidadFirmaElectronica", $("#caducidadFirmaElectronica").val());
674          //datos.append("nombreFirmaElectronica", "firma");
675          datos.append("claveFirmaElectronica", $("#claveFirmaElectronica").val());
676          datos.append("tipoAmbienteConf", $("#tipoAmbienteConf").val());
677          datos.append("puntoEmisionT", $("#puntoEmisionT").val());
678          datos.append("numeroEstablecimientoT", $("#numeroEstablecimientoT").val());
679          datos.append("regimen", $("#regimen").val());
680          datos.append("resolucion", $("#resolucion").val());
681          datos.append("codigoCreador", $("#codigoUsuario").val());
682          //NUMERO DE DOCUMENTOS DEL PLAN
683          datos.append("tipoPlan", $("#tipoPlanEmpresaContable").val());
684          //Guardar usuarios
685          datos.append("identificacionUsuarioEmpresa", $("#identificacionUsuarioEmpresa").val());
686          datos.append("nombresUsuario", $("#nombresUsuarioEmpresa").val());
687          datos.append("aliasUsuario", $("#usuarioEmpresa").val());
688          datos.append("passwordUsuario", $("#passwordCodificar").val());
689          datos.append("rolUsuario", $("#rolUsuarioEmpresa").val());
690          //datos.append("emailUsuario", $("#emailsUsuarioEmpresa").val());
691
692          datos.append("seleccionPlanEmpresa", $("#seleccionPlanEmpresa").val());
693          datos.append("rolUsuarioCreaEmpresa", $("#rolUsuarioContable").val());
694          datos.append("idPlanEmpresa", $("#idPlanEmpresa").val());
695          datos.append("ilimitado", $("#ilimitado").val());
696
697
698          datos.append("fotoUsuario", "");
699          datos.append("bancocomprobante", $("#bancocomprobante").val());
700          datos.append("codigoBanco", $("#bancocomprobante option:selected").attr("codigoBanco"))
701          datos.append("numcomprobante", $("#numcomprobante").val());
702          datos.append("fechacomprobante", $("#fechacomprobante").val());
703          datos.append("valorcomprobante", $("#valorcomprobante").val());
704          datos.append("comentariocomprobante", $("#observacioncomprobante").val());
705          datos.append("tipoMensualidad", tipoMensualidad);
706          datos.append("valorMensualidad", valorMensualidad);
707          //INFORMACIÓN ADICIONAL PARA LIGAR A UN CONTADOR A LAS EMPRESA 
708          datos.append("codigoContadorPerteneciente", $("#codigoContadorPerteneciente").val());
709          datos.append("nombreContadorPerteneciente", $("#nombreContadorPerteneciente").val());
710          datos.append("checkInterbancaria", $("#toggleInterbancaria").prop("checked") ? 1 : 0);
711          datos.append("jsonCliente", JSON.stringify(jsonCliente));
712
713          /**seccion para las comisiones */
714          var valorFactura = parseFloat(document.getElementById('valorcomprobante').value);
715          var valorContadorElemt = document.getElementById("valor_certificado");
716          var valorContador = valorContadorElemt.textContent.trim();
717          valorContador = valorContador.replace(/[^0-9.]/g, '');
718          var valorContadorNumerico = parseFloat(valorContador);
719          var valorComi = valorFactura - valorContadorNumerico;
720
721          var valorComiRedondeado = valorComi.toFixed(2);
722          var valorComiNumerico = parseFloat(valorComiRedondeado);
723          datos.append("comisionPlan", valorComiNumerico);
724          $("#guardarEmpresaContamatic").prop("disabled", true);
725          $.ajax({
726            url: "ajax/empresa-contamatic.ajax.php",
727            type: "POST",
728            data: datos,
729            cache: false,
730            contentType: false,
731            processData: false,
732            success: function (respuesta) {
733              try {
734                $("#guardarEmpresaContamatic").prop("disabled", true);
735                if (JSON.parse(respuesta) == "ok") {
736                  toastr.success("Solicitud enviada con exito!");
737                  setTimeout(() => {
738                    window.location = "empresas";
739                  }, 2000);
740                } else {
741                  toastr.error("Error al crear la empresa!");
742                  setTimeout(() => {
743                    //window.location = "empresas";
744                  }, 2000);
745                }
746              } catch (e) {
747                toastr.error("Ocurrio un error inesperado!");
748                return;
749              }
750
751            },
752          });
753
754        } else {
755          $("#guardarEmpresaContamatic").prop("disabled", false);
756        }
757
758      });
759    }
760
761    /* -------------------------------------------------------------------------- */
762    /*                            CARGAR IMAGEN EMPRESA                           */
763    /* -------------------------------------------------------------------------- */
764    cargarImagenEmpresa() {
765      $(".nuevaFoto").change(function () {
766        var imagen = this.files[0];
767
768        // VALIDAMOS EL FORMATO DE LA IMAGEN SEA JPG O PNG
769        if (imagen["type"] != "image/jpeg" && imagen["type"] != "image/png") {
770          $(".nuevaFoto").val("");
771
772          swal({
773            icon: "error",
774            title: "!Error al subir la imagen",
775            text: "La imagen debe estar en formato JPG o PNG!",
776            showConfirmButton: true,
777            confirmButtonText: "Cerrar",
778            closeOnConfirm: false,
779          });
780        } else if (imagen["size"] > 2000000) {
781          swal({
782            icon: "error",
783            title: "!Error al subir la imagen",
784            text: "La imagen no debe pesar mas de 2MB!",
785            showConfirmButton: true,
786            confirmButtonText: "Cerrar",
787            closeOnConfirm: false,
788          });
789        } else {
790          var datosImagen = new FileReader();
791          datosImagen.readAsDataURL(imagen);
792          $(datosImagen).on("load", function (event) {
793            var rutaImagen = event.target.result;
794            $(".previsualizar").attr("src", rutaImagen);
795          });
796        }
797      });
798    }
799
800    /* -------------------------------------------------------------------------- */
801    /*                            CARGAR IMAGEN USUARIO                           */
802    /* -------------------------------------------------------------------------- */
803
804    cargarImagenUsuario() {
805      $(".nuevaFotoUsuario").change(function () {
806        var imagen = this.files[0];
807
808        // VALIDAMOS EL FORMATO DE LA IMAGEN SEA JPG O PNG
809        if (imagen["type"] != "image/jpeg" && imagen["type"] != "image/png") {
810          $(".nuevaFotoUsuario").val("");
811
812          swal({
813            icon: "error",
814            title: "!Error al subir la imagen",
815            text: "La imagen debe estar en formato JPG o PNG!",
816            showConfirmButton: true,
817            confirmButtonText: "Cerrar",
818            closeOnConfirm: false,
819          });
820        } else if (imagen["size"] > 2000000) {
821          swal({
822            icon: "error",
823            title: "!Error al subir la imagen",
824            text: "La imagen no debe pesar mas de 2MB!",
825            showConfirmButton: true,
826            confirmButtonText: "Cerrar",
827            closeOnConfirm: false,
828          });
829        } else {
830          var datosImagen = new FileReader();
831          datosImagen.readAsDataURL(imagen);
832          $(datosImagen).on("load", function (event) {
833            var rutaImagen = event.target.result;
834            $(".previsualizarFotoUsuario").attr("src", rutaImagen);
835          });
836        }
837      });
838    }
839
840    inhabilitarPlanesPorVences() {
841
842    }
843
844
845    /* -------------------------------------------------------------------------- */
846    /*                    VALIDACION SOLO NUMEROS EN LOS CAMPOS                   */
847    /* -------------------------------------------------------------------------- */
848
849    SoloNumeroEmail() {
850      $("#ruc").on("input", function () {
851        this.value = this.value.replace(/[^0-9]/g, "");
852      });
853      $("#telefono1").on("input", function () {
854        this.value = this.value.replace(/[^0-9]/g, "");
855      });
856
857      $("#emailEmpresa").change(function (e) {
858        var caracteres =
859          /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
860        var IdEmail = this.value;
861
862        if (caracteres.test(IdEmail)) this.style.backgroundColor = "";
863        else this.style.backgroundColor = "LightPink";
864      });
865
866      /* $("#telefono1").on("input", function () {
867        this.value = this.value.replace(/[^0-9]/g, "");
868      });
869 
870      $("#telefono2").on("input", function () {
871        this.value = this.value.replace(/[^0-9]/g, "");
872      });
873 
874      $("#telefono3").on("input", function () {
875        this.value = this.value.replace(/[^0-9]/g, "");
876      }); */
877
878      $("#idRepresentante").on("input", function () {
879        this.value = this.value.replace(/[^0-9]/g, "");
880      });
881
882      /*$("#idContador").on("input", function () {
883        this.value = this.value.replace(/[^0-9]/g, "");
884      });*/
885
886      $("#identificacionUsuarioEmpresa").on("input", function () {
887        this.value = this.value.replace(/[^0-9]/g, "");
888      });
889      $("#numeropago_solicitudSJ").on("input", function () {
890        this.value = this.value.replace(/[^0-9-]/g, "");
891      });
892      $("#valorcomprobante").on("input", function () {
893        //this.value = this.value.replace(/[^0-9.,]/g, "");
894        this.value = this.value.replace(/[^0-9.-]/g, "").replace(/(\..*)\./g, '$1').replace(/(?!^)-/g, '');
895
896      });
897
898
899
900      $("#cant_facturas").on("input", function () {
901        this.value = this.value.replace(/[^0-9]/g, "");
902      });
903
904      $("#codigoPlan").on("input", function () {
905        this.value = this.value.replace(/[^0-9]/g, "");
906      });
907    }
908
909    /* -------------------------------------------------------------------------- */
910    /*                       MENSAJE PARA MOSTRAR AL USUARIO                      */
911    /* -------------------------------------------------------------------------- */
912    mensajeMostrar() {
913      const mensaje = {
914        ruc: "Por favor ingrese el ruc es un campo obligatorio se encuentra en la primera pestaña",
915        razon:
916          "Por favor ingrese la razon es un campo obligatorio se encuentra en la primera pestaña",
917        nombreComercial:
918          "Por favor ingrese el nombre comercial es un campo obligatorio se encuentra en la primera pestaña",
919        nombreMostrar:
920          "Por favor ingrese el nombre mostrar es un campo obligatorio se encuentra en la primera pestaña",
921        actividadEmpresa:
922          "Por favor ingrese la actividad de su empresa es un campo obligatorio se encuentra en la primera pestaña",
923        ciudad:
924          "Por favor ingrese la ciudad donde se encuentra su empresa es un campo obligatorio se encuentra en la primera pestaña",
925        direccion:
926          "Por favor ingrese la dirección su empresa es un campo obligatorio se encuentra en la primera pestaña",
927        telefono1:
928          "Por favor ingrese un numero de teléfono de la empresa es un campo obligatorio se encuentra en la primera pestaña",
929        emailEmpresa:
930          "Por favor ingrese un correo electrónico de la empresa es un campo obligatorio se encuentra en la primera pestaña",
931        llevarContabilidad:
932          "Por favor indique si es obligado o no a llevar contabilidad es un campo obligatorio se encuentra en la primera pestaña",
933        idReprensentante:
934          "Por favor ingrese la indentificacion del representante legal de la empresa es un campo obligatorio se encuentra en la primera pestaña",
935        nombreRepresentante:
936          "Por favor ingrese el nombre del representante legal de la empresa es un campo obligatorio se encuentra en la primera pestaña",
937        idContador:
938          "Por favor ingrese la identificacion del contador de la empresa es un campo obligatorio se encuentra en la primera pestaña",
939        nombreContador:
940          "Por favor ingrese el nombre del contador de la empresa es un campo obligatorio se encuentra en la primera pestaña",
941        claveFirmaElectronica:
942          "Por favor ingrese la clave de la firma electronica es un campo obligatorio se encuentra en la tercera pestaña",
943        tipoAmbienteConf:
944          "Por favor seleccione el tipo de ambiente es un campo obligatorio se encuentra en la tercera pestaña",
945        telefono1:
946          "Por favor ingrese correctamente el teléfono recuerde que contiene 10 digitos,  se encuentra en la primera pestaña",
947        idRepresentante:
948          "Por favor ingrese correctamente la identificación del representante recuerde que contiene 13 digitos si es ruc o 10 digitos si es cedula,  se encuentra en la primera pestaña",
949        idContador:
950          "Por favor ingrese correctamente la identificación del contador recuerde que contiene 13 digitos si es ruc o 10 digitos si es cedula,  se encuentra en la primera pestaña",
951        usuarioEmpresa:
952          "Por favor ingrese un usuario es necesario para el ingreso al sistema",
953        passwordCodificar:
954          "Por favor ingrese una contraseña es necesario para el ingreso al sistema",
955        identificacionUsuarioEmpresa:
956          "Por favor ingrese correctamente la identificación del usuario recuerde que contiene 13 digitos si es ruc o 10 digitos si es cedula,  se encuentra en la segunda pestaña",
957        nombresUsuarioEmpresa:
958          "Por favor ingrese el nombre del usuario es necesario para  ingreso al sistema del se encuentra en la segunda pantalla",
959        /*emailsUsuarioEmpresa:
960          "Por favor ingrese el email del usuario es necesario para  ingreso al sistema del se encuentra en la segunda pantalla",
961        */cant_facturas: "La cantidad de facturas es necesario para el sistema",
962      };
963      return mensaje;
964    }
965
966    /* -------------------------------------------------------------------------- */
967    /*                     VALIDAR LOS CAMPOS QUE ESTAN VACIOS                    */
968    /* -------------------------------------------------------------------------- */
969    validarFormVacios(idInput) {
970      if ($(`#${idInput}`).val() == "") {
971        toastr.info(this.mensajeMostrar()[`${idInput}`]);
972
973        return false;
974      } else {
975        return true;
976      }
977    }
978
979    /* -------------------------------------------------------------------------- */
980    /*                        VALIDAR EL RUC DE LOS CAMPOS                        */
981    /* -------------------------------------------------------------------------- */
982    validarRuc(idInput) {
983      if ($(`#${idInput}`).val().length < 13) {
984        toastr.info(
985          "Por favor ingrese correctamente el ruc recuerde que contiene 13 digitos,  se encuentra en la primera pestaña"
986        );
987
988        return false;
989      } else {
990        return true;
991      }
992    }
993
994    /* -------------------------------------------------------------------------- */
995    /*                  VALIDAR LA INDENTIFICACION DE LOS CAMPOS                  */
996    /* -------------------------------------------------------------------------- */
997    validarIdentificacion(idInput) {
998      if ($(`#${idInput}`).val().length < 10) {
999        toastr.info(this.mensajeMostrar()[`${idInput}`]);
1000        return false;
1001      } else {
1002        return true;
1003      }
1004    }
1005
1006    /* -------------------------------------------------------------------------- */
1007    /*             VALIDAR CARACTERES DE LA CADENA USUARIO / ALIAS                */
1008    /* -------------------------------------------------------------------------- */
1009
1010    usuarioCredenciales() {
1011
1012      $('#usuarioEmpresa').on('keyup  change paste', function (e) {
1013
1014
1015        var textojuntado = document.getElementById('usuarioEmpresa').value;
1016        document.getElementById('usuarioEmpresa').value = textojuntado.replace(/\s/g, '');
1017
1018      });
1019    }
1020
1021    /* -------------------------------------------------------------------------- */
1022    /*             VALIDAR USUARIO REPETIDO EN FACTURACION ELECTRONICA            */
1023    /* -------------------------------------------------------------------------- */
1024
1025    usuariosRepetidoFacturacion() {
1026      $("#usuarioEmpresa").change(function () {
1027
1028        if (window.location.href.indexOf("crearEmpresa") > -1) {
1029
1030          /*  var usuario = $(this).val();
1031  
1032            var datos = new FormData();
1033  
1034            datos.append("validarUsuarioFacturacion", usuario);
1035            datos.append("sistema", 'facturalo');
1036            $.ajax({
1037              url: "ajax/empresas.ajax.php",
1038              type: "POST",
1039              data: datos,
1040              cache: false,
1041              contentType: false,
1042              processData: false,
1043              dataType: "json",
1044              success: function (respuesta) {
1045                if (respuesta) {
1046                  toastr.error("Este usuario ya existe, intente con uno distinto!");
1047                  $("#usuarioEmpresa").val("");
1048                }
1049              },
1050            });*/
1051
1052        }
1053        else if (window.location.href.indexOf("crear-empresa-contable") > -1) {
1054
1055          var usuario = $(this).val();
1056
1057          var datos = new FormData();
1058
1059          datos.append("validarUsuarioContamatic", usuario);
1060
1061          $.ajax({
1062            url: "ajax/empresas.ajax.php",
1063            type: "POST",
1064            data: datos,
1065            cache: false,
1066            contentType: false,
1067            processData: false,
1068            dataType: "json",
1069            success: function (respuesta) {
1070              if (respuesta) {
1071                toastr.error("Este usuario ya existe, intente con uno distinto!");
1072                $("#usuarioEmpresa").val("");
1073              }
1074            },
1075          });
1076
1077        }
1078
1079
1080
1081      });
1082    }
1083
1084    /* -------------------------------------------------------------------------- */
1085    /*             VALIDAR QUE EL CORREO NO FUE REGISTRADO ANTERIORMENTE          */
1086    /* -------------------------------------------------------------------------- */
1087
1088
1089    usuariosCorreoRepetidoCuenta() {
1090      $("#emailsUsuarioEmpresa").change(function () {
1091        var correo = $(this).val();
1092        var datos = new FormData();
1093
1094        datos.append("validarCorreoUsuario", true);
1095        datos.append("correoUsuario", correo);
1096
1097        $.ajax({
1098          url: "ajax/empresas.ajax.php",
1099          type: "POST",
1100          data: datos,
1101          cache: false,
1102          contentType: false,
1103          processData: false,
1104          success: function (respuesta) {
1105            if (respuesta.trim() == "repetido") {
1106              toastr.error("Este correo ya fue registrado por otro usuario!");
1107              $("#emailsUsuarioEmpresa").val("");
1108            }
1109          },
1110        });
1111      });
1112    }
1113
1114
1115
1116
1117
1118    empresaRepetidaFacturacion() {
1119      $("#nombreComercial").change(function () {
1120        var empresa = $(this).val();
1121        var datos = new FormData();
1122
1123        datos.append("validarEmpresa", empresa);
1124
1125        $.ajax({
1126          url: "ajax/empresas.ajax.php",
1127          type: "POST",
1128          data: datos,
1129          cache: false,
1130          contentType: false,
1131          processData: false,
1132          dataType: "json",
1133          success: function (respuesta) {
1134            if (respuesta) {
1135              toastr.error("Esta empresa ya existe!");
1136              $("#nombreComercial").val("");
1137            }
1138          },
1139        });
1140      });
1141    }
1142
1143    /*=============================================
1144    ACTIVAR Y DESACTIVAR ESTADO PLAN
1145    =============================================*/
1146
1147    empresaPlanEstado() {
1148      $(document).ready(function () {
1149        $(".btnActivarEstado").click(function () {
1150
1151
1152          var codDetallePlan = $(this).attr("coddetalleplan");
1153          var estadoPlan = $(this).attr("codestadodetalleplan");
1154
1155
1156        });
1157      });
1158    }
1159
1160    /*=============================================
1161    MOSTRAR TIPO DE PLAN DEL USUARIO
1162    =============================================*/
1163
1164    tipodeplan() {
1165      var datos = new FormData();
1166      datos.append("validarPlanUsuario", true);
1167      $.ajax({
1168        url: "ajax/usuarios.ajax.php",
1169        type: "POST",
1170        data: datos,
1171        contentType: false,
1172        processData: false,
1173        success: function (respuesta) {
1174          var datos = JSON.parse(respuesta);
1175          if (datos.tipo == "prepago") {
1176            $('#tipoPlanEmpresa').append(new Option("PLAN PREPAGO", "prepago"))
1177          } else {
1178
1179            $('#tipoPlanEmpresa').prop('disabled', true);
1180
1181
1182
1183          }
1184        },
1185      });
1186    }
1187
1188    /*=========================================================================
1189    VALIDAR EL NUMERO DE DOCUMENTOS DISPONIBLES PARA RECARAGAR POR PLAN PREPAGO 
1190    ===========================================================================*/
1191
1192
1193    numeroDocumentosPlanUsuario() {
1194
1195      $('#codigoPlan').on('keyup  change paste', function (e) {
1196
1197        var option = $("#tipoPlanEmpresa").val();
1198        var campo = $(this).val();
1199        campo = campo < 50 && campo != "" ? 50 : campo;
1200
1201        if (option == "prepago") {
1202
1203          var datos = new FormData();
1204          datos.append("validarPlanUsuario", true);
1205          $.ajax({
1206            url: "ajax/usuarios.ajax.php",
1207            type: "POST",
1208            data: datos,
1209            contentType: false,
1210            processData: false,
1211            success: function (respuesta) {
1212              var datos = JSON.parse(respuesta);
1213
1214              if (parseInt(datos.cantidad) >= campo) {
1215                $("#mensaje-info-prepago").show();
1216                $("#mensaje-documentos").show();
1217                $("#mensaje-documentos").addClass("badge-info");
1218                $("#mensaje-documentos").removeClass("badge-danger");
1219                $("#mensaje-documentos").text("Documentos restantes de su Plan Prepago: " + (datos.cantidad - campo));
1220
1221
1222
1223
1224              } else {
1225                $("#mensaje-info-prepago").show();
1226                $("#mensaje-documentos").show();
1227                $("#mensaje-documentos").removeClass("badge-info");
1228                $("#mensaje-documentos").addClass("badge-danger");
1229                $("#mensaje-documentos").text("La cantidad indicada sobrepasa el total de documentos electrónicos de su Plan Prepago");
1230              }
1231
1232
1233
1234            },
1235          });
1236
1237        }
1238        else {
1239
1240          $("#mensaje-info-prepago").hide();
1241          $("#mensaje-documentos").hide();
1242          $("#mensaje-documentos").text("");
1243        }
1244
1245      });
1246    }
1247
1248    /*=========================================================================
1249    VALIDAR EL NUMERO DE DOCUMENTOS DISPONIBLES PARA RECARAGAR POR PLAN PREPAGO 
1250    ===========================================================================*/
1251
1252    numeroDocumentosPlanUsuario2() {
1253
1254      $('#tipoPlanEmpresa').on('change', function (e) {
1255
1256        var option = $("#tipoPlanEmpresa").val();
1257        var campo = $("#codigoPlan").val();
1258        campo = campo < 50 && campo != "" ? 50 : campo;
1259        if (option == "prepago") {
1260          $("#pills-facturacion-tab").parent().hide();
1261
1262          // Si la pestaña de facturación está activa, desactivarla
1263          if ($('#pills-facturacion-tab').hasClass('active')) {
1264            $('#pills-facturacion-tab').removeClass('active');
1265            $('#pills-facturacion').removeClass('active show');
1266          }
1267
1268          // Seleccionar otra pestaña
1269          $('#pills-otra-tab').addClass('active');
1270          $('#pills-otra').addClass('active show');
1271
1272          var datos = new FormData();
1273          datos.append("validarPlanUsuario", true);
1274          $.ajax({
1275            url: "ajax/usuarios.ajax.php",
1276            type: "POST",
1277            data: datos,
1278            contentType: false,
1279            processData: false,
1280            success: function (respuesta) {
1281              var datos = JSON.parse(respuesta);
1282
1283              if (parseInt(datos.cantidad) >= campo) {
1284
1285                $("#campoIngresoPrepago").show();
1286                $("#campoIngresoNormal").hide();
1287                $("#mensaje-info-prepago").show();
1288                $("#mensaje-documentos").show();
1289                $("#mensaje-documentos").addClass("badge-info");
1290                $("#mensaje-documentos").removeClass("badge-danger");
1291                $("#mensaje-documentos").text("Documentos restantes de su Plan Prepago: " + (datos.cantidad - campo));
1292
1293              } else {
1294                $("#campoIngresoPrepago").show();
1295                $("#campoIngresoNormal").hide();
1296                $("#mensaje-info-prepago").show();
1297                $("#mensaje-documentos").show();
1298                $("#mensaje-documentos").removeClass("badge-info");
1299                $("#mensaje-documentos").addClass("badge-danger");
1300                $("#mensaje-documentos").text("La cantidad indicada sobrepasa el total de documentos electrónicos de su Plan Prepago");
1301
1302              }
1303            },
1304          });
1305
1306        }
1307        else {
1308          $("#pills-facturacion-tab").parent().show();
1309
1310          $("#codigoPlan").val("");
1311          $("#seleccionPlanNormal").val("");
1312          $("#campoIngresoPrepago").hide();
1313          $("#campoIngresoNormal").show();
1314          $("#mensaje-info-prepago").hide();
1315          $("#mensaje-documentos").hide();
1316          $("#mensaje-documentos").text("");
1317        }
1318
1319      });
1320    }
1321
1322
1323
1324
1325  }
1326
1327  class Facturacion {
1328
1329    constructor() {
1330
1331
1332
1333
1334    }
1335
1336    async postRequest($url, parametros) {
1337      try {
1338        const resultado = await fetch($url, {
1339          method: 'POST',
1340          body: parametros
1341        });
1342        const datos = resultado.json();
1343        return datos;
1344      } catch (error) {
1345        throw error;
1346      }
1347    }
1348
1349    async obtenerInformacionPerfil() {
1350
1351      let url = 'ajax/facturacion/facturacion.ajax.php';
1352      let parametros = new FormData();
1353      parametros.append("informacionPerfil", true);
1354      let resultado = await this.postRequest(url, parametros);
1355      if (resultado.operacion) {
1356        //id,  nombre,  direccion, email,  telefono 
1357        document.getElementById('identificacion_contador').value = resultado.data.identificacion;
1358        document.getElementById('nombre_contador').value = resultado.data.nombre;
1359        document.getElementById('direcion_contador').value = resultado.data.direccion;
1360        document.getElementById('telefono_contador').value = resultado.data.telefono;
1361        document.getElementById('correo_contador').value = resultado.data.email;
1362        $("#facturarEmpresa").prop('checked', true);
1363      } else {
1364        toastr.error(resultado.mensaje);
1365      }
1366
1367
1368    }
1369
1370    async actualizarInformacionPerfil() {
1371
1372      let identificacion = document.getElementById('identificacion_contador').value;
1373      if (identificacion.length > 10) {
1374        let ruc_ = identificacion.substr(10);
1375        if (ruc_ != '001') {
1376          toastr.info(
1377            "El ruc es invalido",
1378            "Importante",
1379            { timeOut: 3000 }
1380          );
1381          return false;;
1382        }
1383      } else {
1384        if (identificacion.length != 10) {
1385          toastr.info(
1386            "Identificación incorrecta",
1387            "Importante",
1388            { timeOut: 3000 }
1389          );
1390          return false;;
1391        }
1392      }
1393
1394      let nombre = document.getElementById('nombre_contador').value;
1395      let direccion = document.getElementById('direcion_contador').value;
1396      let email = document.getElementById('correo_contador').value;
1397      let telefono = document.getElementById('telefono_contador').value;
1398
1399      let url = 'ajax/facturacion/facturacion.ajax.php';
1400      let parametros = new FormData();
1401      parametros.append("actualizarPerfil", true);
1402      parametros.append("identificacion", identificacion);
1403      parametros.append("nombre", nombre);
1404      parametros.append("direccion", direccion);
1405      parametros.append("email", email);
1406      parametros.append("telefono", telefono);
1407
1408      let resultado = await this.postRequest(url, parametros);
1409      if (resultado.operacion) {
1410
1411        toastr.success(resultado.mensaje);
1412      } else {
1413        toastr.error(resultado.mensaje);
1414      }
1415    }
1416
1417
1418    async actualizarInformacionPerfilMensualidad() {
1419
1420      let identificacion = document.getElementById('identificacion_contadorMensualidad').value;
1421      if (identificacion.length > 10) {
1422        let ruc_ = identificacion.substr(10);
1423        if (ruc_ != '001') {
1424          toastr.info(
1425            "El ruc es invalido",
1426            "Importante",
1427            { timeOut: 3000 }
1428          );
1429          return false;;
1430        }
1431      } else {
1432        if (identificacion.length != 10) {
1433          toastr.info(
1434            "Identificación incorrecta",
1435            "Importante",
1436            { timeOut: 3000 }
1437          );
1438          return false;;
1439        }
1440      }
1441
1442      let nombre = document.getElementById('nombre_contadorMensualidad').value;
1443      let direccion = document.getElementById('direcion_contadorMensualidad').value;
1444      let email = document.getElementById('correo_contadorMensualidad').value;
1445      let telefono = document.getElementById('telefono_contadorMensualidad').value;
1446
1447      let url = 'ajax/facturacion/facturacion.ajax.php';
1448      let parametros = new FormData();
1449      parametros.append("actualizarPerfil", true);
1450      parametros.append("identificacion", identificacion);
1451      parametros.append("nombre", nombre);
1452      parametros.append("direccion", direccion);
1453      parametros.append("email", email);
1454      parametros.append("telefono", telefono);
1455
1456      let resultado = await this.postRequest(url, parametros);
1457      if (resultado.operacion) {
1458
1459        toastr.success(resultado.mensaje);
1460      } else {
1461        toastr.error(resultado.mensaje);
1462      }
1463
1464
1465    }
1466
1467
1468    eventoChangeCampoTexto(id, limite, mensaje) {
1469      $(document).on("change", id, function () {
1470        if ($(this).val().length < limite) {
1471          $(`#mensaje_${$(this).attr("id")}`).html(mensaje);
1472        } else {
1473          $(`#mensaje_${$(this).attr("id")}`).html("");
1474          $(".requerircampoletras").css("border", "1px solid #e9ecef");
1475          $(".requerircamponumero").css("border", "1px solid #e9ecef");
1476          $(".requerircorreo").css("border", "1px solid #e9ecef");
1477          $(".requerircampo").css("border", "1px solid #e9ecef");
1478        }
1479      });
1480    }
1481
1482    eventoChangeCampoIdentificacion(id, limite, mensaje) {
1483      $(document).on("change", id, function () {
1484        let valor = $(this).val();
1485        if (valor.length > 10) {
1486          let ruc_ = valor.substr(10);
1487          if (ruc_ != '001') {
1488            $(`#mensaje_${$(this).attr("id")}_solicitudSJ`).html(mensaje);
1489            $(`#mensaje_${$(this).attr("id")}_solicitudSJ`).css("color", "red");
1490          } else {
1491            $(`#mensaje_${$(this).attr("id")}_solicitudSJ`).html('');
1492          }
1493        } else {
1494          if (valor.length != 10) {
1495            $(`#mensaje_${$(this).attr("id")}_solicitudSJ`).html(mensaje);
1496            /*  $(".requerircampoletras").css("border", "1px solid #e9ecef"); */
1497            $(".requerircamponumero").css("border", "1px solid #e9ecef");
1498            $(`#mensaje_${$(this).attr("id")}_solicitudSJ`).css("color", "red");
1499            /*  $(".requerircorreo").css("border", "1px solid #e9ecef");
1500             $(".requerircampo").css("border", "1px solid #e9ecef"); */
1501          } else {
1502            $(`#mensaje_${$(this).attr("id")}_solicitudSJ`).html('');
1503          }
1504        }
1505      });
1506    }
1507
1508
1509  }
1510
1511  var objetoFacturacion = new Facturacion();
1512  document.addEventListener('DOMContentLoaded', async () => {
1513    objetoFacturacion.obtenerInformacionPerfil();
1514
1515    objetoFacturacion.eventoChangeCampoIdentificacion(
1516      "#identificacion_contador",
1517      10,
1518      "¡Ingrese la identificación del contador valida!"
1519    );
1520
1521    objetoFacturacion.eventoChangeCampoIdentificacion(
1522      "#identificacion_cliente",
1523      10,
1524      "¡Ingrese la identificación del cliente valida!"
1525    );
1526
1527    $("#misDatos").hide();
1528    $("#datosCliente").hide();
1529
1530  });
1531
1532  $(document).on("click", "#buscarContador", async function () {
1533    var dato = $("#identificacion_contador").val();
1534    if (dato.trim().length < 10) {
1535      toastr.info("Ingrese la cédula correctamente", "Importante", {
1536        timeOut: 4000,
1537      });
1538      return;
1539    }
1540    $(".cargandoInformacion").show();
1541    var tipo = "cedula";
1542    var respuesta = await interfaz.obtenerInformacionPersona(tipo, dato);
1543    $(".cargandoInformacion").hide();
1544    document.getElementById('nombre_contador').value = respuesta.nombres + ' ' + respuesta.apellidos;
1545  });
1546
1547  $(document).on("click", "#buscar_cliente", async function () {
1548    var dato = $("#identificacion_cliente").val();
1549    if (dato.trim().length < 10) {
1550      toastr.info("Ingrese la cédula correctamente", "Importante", {
1551        timeOut: 4000,
1552      });
1553      return;
1554    }
1555    $(".cargandoInformacion_cliente").show();
1556    var tipo = "cedula";
1557    var respuesta = await interfaz.obtenerInformacionPersona(tipo, dato);
1558    $(".cargandoInformacion_cliente").hide();
1559    document.getElementById('nombre_cliente').value = respuesta.nombres + ' ' + respuesta.apellidos;
1560  });
1561
1562  $(document).on("click", "#buscarContadorMensualidad", async function () {
1563    var dato = $("#identificacion_contadorMensualidad").val();
1564    if (dato.trim().length < 10) {
1565      toastr.info("Ingrese la cédula correctamente", "Importante", {
1566        timeOut: 4000,
1567      });
1568      return;
1569    }
1570    $(".cargandoInformacionMensualidad").show();
1571    var tipo = "cedula";
1572    var respuesta = await interfaz.obtenerInformacionPersona(tipo, dato);
1573    $(".cargandoInformacionMensualidad").hide();
1574    document.getElementById('nombre_contadorMensualidad').value = respuesta.nombres + ' ' + respuesta.apellidos;
1575  });
1576
1577  $(document).on("click", "#buscar_clienteMensualidad", async function () {
1578    var dato = $("#identificacion_clienteMensualidad").val();
1579    if (dato.trim().length < 10) {
1580      toastr.info("Ingrese la cédula correctamente", "Importante", {
1581        timeOut: 4000,
1582      });
1583      return;
1584    }
1585    $(".cargandoInformacion_clienteMensualidad").show();
1586    var tipo = "cedula";
1587    var respuesta = await interfaz.obtenerInformacionPersona(tipo, dato);
1588    $(".cargandoInformacion_clienteMensualidad").hide();
1589    document.getElementById('nombre_clienteMensualidad').value = respuesta.nombres + ' ' + respuesta.apellidos;
1590  });
1591
1592
1593
1594  $(document).on("change", "#vigenciafirma_solicitudSJ", async function () {
1595    let id = $(this).val();
1596    let paquete_selecionado = interfaz.listadoVigenciaFirma.filter(function (planes) {
1597      return planes.id == id;
1598    });
1599
1600    let tipoProveedorFirma = interfaz.proveedorFirma;
1601
1602    Object.entries(interfaz.listadoFirmas).forEach(([indice, elemento]) => {
1603
1604      if (parseInt(tipoProveedorFirma) === parseInt(elemento.firma.id)) {
1605
1606        document.getElementById('observacion_cliente').value = 'FIRMA DE ' + paquete_selecionado[0].nombre.split(' - ')[0] + ' - ' + elemento.firma.nombre;
1607
1608      }
1609
1610    });
1611    let precioContador = paquete_selecionado[0].nombre.split(' - ')[1];
1612    document.getElementById('valor_certificado').innerHTML = precioContador.split(' ')[0];
1613
1614
1615  });
1616
1617
1618  $(document).on("click", "#btnActualizarPerfil", async function () {
1619    objetoFacturacion.actualizarInformacionPerfil();
1620  });
1621
1622  $(document).on("click", "#btnActualizarPerfilMensualidad", async function () {
1623    objetoFacturacion.actualizarInformacionPerfilMensualidad();
1624  });
1625
1626
1627
1628
1629
1630
1631
1632
1633  const empresas = new Empresas();
1634  empresas.SoloNumeroEmail();
1635  empresas.guardarEmpresa();
1636  empresas.guardarEmpresaContamatic();
1637  empresas.validarFormVacios();
1638  empresas.cargarImagenEmpresa();
1639  empresas.cargarImagenUsuario();
1640
1641  empresas.usuariosRepetidoFacturacion();
1642  empresas.empresaRepetidaFacturacion();
1643  empresas.empresaPlanEstado();
1644  empresas.tipodeplan();
1645  empresas.numeroDocumentosPlanUsuario();
1646  empresas.numeroDocumentosPlanUsuario2();
1647  empresas.usuarioCredenciales();
1648  empresas.usuariosCorreoRepetidoCuenta();
1649  /* -------------------------------------------------------------------------- */
1650  /*                                 SOLO LETRAS                                */
1651  /* -------------------------------------------------------------------------- */
1652
1653  function soloLetras(e) {
1654    key = e.keyCode || e.which;
1655    tecla = String.fromCharCode(key).toLowerCase();
1656    letras = " áéíóúabcdefghijklmnñopqrstuvwxyz";
1657    especiales = "8-37-39-46";
1658
1659    tecla_especial = false;
1660    for (var i in especiales) {
1661      if (key == especiales[i]) {
1662        tecla_especial = true;
1663        break;
1664      }
1665    }
1666
1667    if (letras.indexOf(tecla) == -1 && !tecla_especial) {
1668      return false;
1669    }
1670  }
1671}
1672
1673
1674if (window.location.href.indexOf("crearProyecto") > -1) {
1675
1676  $(document).on("click", "#informacionRucProyecto", function () {
1677
1678
1679    var ruc = $("#rucProyecto").val();
1680    var datos = new FormData();
1681
1682    datos.append("buscarRuc", true);
1683    datos.append("ruc", ruc);
1684    toastr.info("Consultando la información");
1685    $.ajax({
1686      url: "ajax/empresas_v2.ajax.php",
1687      type: "POST",
1688      data: datos,
1689      cache: false,
1690      contentType: false,
1691      processData: false,
1692      dataType: "json",
1693      timeout: 10000,
1694
1695      success: function (respuesta) {
1696        if (respuesta["estado"] == "ok") {
1697          toastr.success("Datos consultados correctamente");
1698          $("#desarrolloEmpresa").val(respuesta["razonsocial"]);
1699        } else {
1700          toastr.info("No fue posible obtener información, intente nuevamente");
1701        }
1702
1703      },
1704      error: function (request, status, error) {
1705
1706        toastr.success("El servicio de información se encuentra en mantenimiento");
1707
1708      }
1709    });
1710  });
1711
1712
1713
1714  async function postRequest($url, parametros) {
1715    try {
1716      const resultado = await fetch($url, {
1717        method: 'POST',
1718        body: parametros
1719      });
1720      const datos = await resultado.json();
1721      return datos;
1722    } catch (error) {
1723      throw error;
1724    }
1725  }
1726
1727  async function obtenerInformacionPerfil() {
1728
1729    let url = 'ajax/facturacion/facturacion.ajax.php';
1730    let parametros = new FormData();
1731    parametros.append("informacionPerfil", true);
1732
1733    try {
1734      let resultado = await postRequest(url, parametros);
1735      if (resultado && resultado.operacion) {
1736        document.getElementById('nombrecontador').value = resultado.data.nombre;
1737      } else {
1738        toastr.error(resultado ? resultado.mensaje : 'Error desconocido');
1739      }
1740    } catch (error) {
1741      toastr.error('Hubo un problema al obtener la información del perfil');
1742    }
1743  }
1744
1745  obtenerInformacionPerfil();
1746
1747
1748
1749
1750  $("#guardarProyecto").click(function () {
1751    $("#guardarProyecto").prop("disabled", true);
1752
1753    if ($("#nombrecontador").val() == "") {
1754      toastr.info("Ingrese el nombre contador", "Importante", { timeOut: 3000 });
1755      $("#guardarProyecto").prop("disabled", false);
1756      return;
1757    }
1758
1759    if ($("#rucProyecto").val() == "") {
1760      toastr.info("Ingrese el RUC", "Importante", { timeOut: 3000 });
1761      $("#guardarProyecto").prop("disabled", false);
1762      return;
1763    }
1764
1765    if ($("#desarrolloEmpresa").val() == "") {
1766      toastr.info("Ingrese el nombre de la empresa a la que se le desarrolla el proyecto", "Importante", { timeOut: 3000 });
1767      $("#guardarProyecto").prop("disabled", false);
1768      return;
1769    }
1770
1771    if ($("#nombreProyecto").val() == "") {
1772      toastr.info("Ingrese el nombre del proyecto", "Importante", { timeOut: 3000 });
1773      $("#guardarProyecto").prop("disabled", false);
1774      return;
1775    }
1776
1777
1778    if ($("#reseniaaDesarrollo").val() == "") {
1779      toastr.info("Ingrese una pequeña reseña del proyecto", "Importante", { timeOut: 3000 });
1780      $("#guardarProyecto").prop("disabled", false);
1781      return;
1782    }
1783
1784    if ($("#acuerdosDesarrollo").val() == "") {
1785      toastr.info("Ingrese los acuerdos del desarrollo", "Importante", { timeOut: 3000 });
1786      $("#guardarProyecto").prop("disabled", false);
1787      return;
1788    }
1789
1790    var datos = new FormData();
1791    datos.append("guardarProyecto", true);
1792    datos.append("nombrecontador", $("#nombrecontador").val());
1793    datos.append("rucProyecto", $("#rucProyecto").val());
1794    datos.append("desarrolloEmpresa", $("#desarrolloEmpresa").val());
1795    datos.append("nombreProyecto", $("#nombreProyecto").val());
1796    datos.append("reseniaaDesarrollo", $("#reseniaaDesarrollo").val());
1797    datos.append("acuerdosDesarrollo", $("#acuerdosDesarrollo").val());
1798    $("#guardarProyecto").prop("disabled", true);
1799
1800    $.ajax({
1801      url: "ajax/empresas.ajax.php",
1802      type: "POST",
1803      data: datos,
1804      cache: false,
1805      contentType: false,
1806      processData: false,
1807      success: function (respuesta) {
1808        var respuesta = JSON.parse(respuesta);
1809        $("#guardarProyecto").prop("disabled", true);
1810        if (respuesta.estado) {
1811          setTimeout(() => {
1812            $("#idCodigoPlan_proyecto").val(btoa(respuesta.codplan));
1813            location.reload();
1814            toastr.success("Proyecto creado con exito!");
1815          }, 1000);
1816        } else {
1817          toastr.error("Error al crear un Proyecto!");
1818          setTimeout(() => {
1819            location.reload();
1820          }, 1000);
1821        }
1822      },
1823    });
1824  })
1825
1826  document.getElementById('precioDesarrollo').addEventListener('blur', function (e) {
1827    let value = e.target.value;
1828    value = value.replace(',', '.');
1829
1830    let number = parseFloat(value);
1831
1832    if (!isNaN(number)) {
1833      e.target.value = number.toFixed(2);
1834    }
1835
1836    document.getElementById('valor_certificado_proyecto').innerHTML = `$ ${e.target.value}`;
1837  });
1838
1839  document.getElementById('valorcomprobante_proyecto').addEventListener('blur', function (e) {
1840    let value = e.target.value;
1841    value = value.replace(',', '.');
1842
1843    let number = parseFloat(value);
1844
1845    if (!isNaN(number)) {
1846      e.target.value = number.toFixed(2);
1847    }
1848
1849    document.getElementById('valor_facturar_proyecto').innerHTML = `$ ${e.target.value}`;
1850  });
1851
1852}
1853
1854if (window.location.href.indexOf("administracion") > -1) {
1855  $(document).on('click', '.btnAbrirModalEditarSoporte', function (event) {
1856    var soporte = $(this).attr("codSoporte");
1857    var codEmpresaSoporte = atob($(this).attr("codEmpresaSoporte"));
1858    var rucEmpresaSoporte = atob($(this).attr("rucEmpresaSoporte"));
1859    var telempresaSop = atob($(this).attr("telempresaSop"));
1860    var programador = atob($(this).attr("programador"));
1861    var areaSoporte = atob($(this).attr("areaSoporte"));
1862    var explicacion = atob($(this).attr("explicacion"));
1863    var responsable = atob($(this).attr("responsable"));
1864
1865    console.log(explicacion);
1866
1867    $("#idCodSoporte").val(soporte);
1868    $("#codEmpresaEdit").val(codEmpresaSoporte);
1869    $("#rucEmpresaEdit").val(rucEmpresaSoporte);
1870    $("#telefonoEmpresaEdit").val(telempresaSop);
1871    $("#programador_soporteEdit").val(programador);
1872    $("#areaErrorEdit").val(areaSoporte);
1873    $("#explicacionErrorEdit").val(explicacion);
1874    $("#responsableSoporte").val(responsable);
1875
1876
1877    $("#modalEditarSoporte").modal("show");
1878  });
1879
1880  const quill = new Quill('#editorSoporte', {
1881    modules: {
1882      toolbar: [
1883        [{ header: [1, 2, false] }],
1884        ['bold', 'italic', 'underline'],
1885        ['image', 'code-block'],
1886      ],
1887    },
1888    placeholder: 'Explicación ..',
1889    theme: 'snow',
1890  });
1891
1892  $(document).on('click', '.btnAbrirModalEditarProgramacion', function (event) {
1893    var programacion = $(this).attr("codProgramacion");
1894    var codEmpresaProgramacion = atob($(this).attr("codEmpresa"));
1895    var telempresaProgramacion = atob($(this).attr("telempresaPro"));
1896    var programador = atob($(this).attr("programador"));
1897    var temaProgramacion = atob($(this).attr("temaProgramacion"));
1898    var razon = atob($(this).attr("razon"));
1899    var responsable = atob($(this).attr("responsable"));
1900
1901    $("#idCodProgramacion").val(programacion);
1902    $("#responsableProgramacion").val(responsable);
1903    $("#codEmpresaProgramacionEdit").val(codEmpresaProgramacion);
1904    $("#telefonoEmpresaProgramacionEdit").val(telempresaProgramacion);
1905    $("#programador_programacionEdit").val(programador);
1906    $("#temaProgramacion").val(temaProgramacion);
1907
1908
1909    $("#modalEditarProgramacion").modal("show");
1910
1911  });
1912
1913
1914
1915
1916
1917
1918  $("#btnEditarSoporte").click(function () {
1919
1920    const explicacionError = quill.getText();
1921
1922    const imagenes = [];
1923    const contenidoDelta = quill.getContents();
1924    contenidoDelta.ops.forEach(op => {
1925      if (op.insert && op.insert.image) {
1926        imagenes.push(op.insert.image);
1927      }
1928    });
1929
1930
1931    $("#btnEditarSoporte").prop("disabled", true);
1932
1933    if ($("#codEmpresaEdit").val() == "") {
1934      toastr.info("Ingrese el código de la empresa", "Importante", { timeOut: 3000 });
1935      $("#btnEditarSoporte").prop("disabled", false);
1936      return;
1937    }
1938    if ($("#responsableSoporte").val() == "") {
1939      toastr.info("Ingrese el nombre responsable", "Importante", { timeOut: 3000 });
1940      $("#guardarSoporte").prop("disabled", false);
1941      return;
1942    }
1943    if ($("#rucEmpresaEdit").val() == "") {
1944      toastr.info("Ingrese el ruc de la empresa", "Importante", { timeOut: 3000 });
1945      $("#btnEditarSoporte").prop("disabled", false);
1946      return;
1947    }
1948    if ($("#telefonoEmpresaEdit").val() == "") {
1949      toastr.info("Ingrese el teléfono", "Importante", { timeOut: 3000 });
1950      $("#btnEditarSoporte").prop("disabled", false);
1951      return;
1952    }
1953    if ($("#programador_soporteEdit").val() == "") {
1954      toastr.info("Seleccione el programador", "Importante", { timeOut: 3000 });
1955      $("#btnEditarSoporte").prop("disabled", false);
1956      return;
1957    }
1958    if ($("#areaErrorEdit").val() == "") {
1959      toastr.info("Ingrese el area del error", "Importante", { timeOut: 3000 });
1960      $("#btnEditarSoporte").prop("disabled", false);
1961      return;
1962    }
1963    if (explicacionError.trim() == "") {
1964      toastr.info("Ingrese la explicación del error", "Importante", { timeOut: 3000 });
1965      $("#btnEditarSoporte").prop("disabled", false);
1966      return;
1967    }
1968
1969    var datos = new FormData();
1970    datos.append("editarSoporte", true);
1971    datos.append("codigoSoporte", $("#idCodSoporte").val());
1972    datos.append("responsableSoporte", $("#responsableSoporte").val());
1973    datos.append("codEmpresa", $("#codEmpresaEdit").val());
1974    datos.append("rucEmpresa", $("#rucEmpresaEdit").val());
1975    datos.append("telefonoEmpresa", $("#telefonoEmpresaEdit").val());
1976    datos.append("programador_soporte", $("#programador_soporteEdit").val());
1977    datos.append("areaError", $("#areaErrorEdit").val());
1978    datos.append("explicacionError", explicacionError.trim());
1979
1980    if (imagenes.length > 0) {
1981      const promesas = imagenes.map((base64Img, index) =>
1982        fetch(base64Img)
1983          .then(res => res.blob())
1984          .then(blob => new File([blob], `imagen_${index}.png`, { type: 'image/png' }))
1985      );
1986
1987      Promise.all(promesas).then(archivos => {
1988        archivos.forEach(file => {
1989          datos.append('archivoComprobante[]', file);
1990        });
1991
1992        datos.append('archivo', true);
1993        enviarAjaxEditSoporte(datos);
1994      });
1995    } else {
1996      datos.append('archivo', false);
1997      enviarAjaxEditSoporte(datos);
1998    }
1999
2000
2001  });
2002
2003
2004  function enviarAjaxEditSoporte(datos) {
2005
2006    $("#btnEditarSoporte").prop("disabled", true);
2007
2008    $.ajax({
2009      url: "ajax/empresas.ajax.php",
2010      type: "POST",
2011      data: datos,
2012      cache: false,
2013      contentType: false,
2014      processData: false,
2015      success: function (respuesta) {
2016        var respuesta = JSON.parse(respuesta);
2017        $("#btnEditarSoporte").prop("disabled", false);
2018        if (respuesta.estado) {
2019          setTimeout(() => {
2020            location.reload();
2021            toastr.success("Soporte Editado correctamente !");
2022          }, 1000);
2023        } else {
2024          toastr.error("Error al editar Soporte!");
2025          setTimeout(() => {
2026            location.reload();
2027          }, 1000);
2028        }
2029      },
2030    });
2031  }
2032
2033
2034
2035
2036  const quillProgrmacion = new Quill('#editorProgramacion', {
2037    modules: {
2038      toolbar: [
2039        [{ header: [1, 2, false] }],
2040        ['bold', 'italic', 'underline'],
2041        ['image', 'code-block'],
2042      ],
2043    },
2044    placeholder: 'Razón ..',
2045    theme: 'snow',
2046  });
2047
2048  $("#btnEditarProgramacion").click(function () {
2049
2050    const razon = quillProgrmacion.getText();
2051
2052    const imagenes = [];
2053    const contenidoDelta = quillProgrmacion.getContents();
2054    contenidoDelta.ops.forEach(op => {
2055      if (op.insert && op.insert.image) {
2056        imagenes.push(op.insert.image);
2057      }
2058    });
2059
2060
2061
2062    $("#btnEditarProgramacion").prop("disabled", true);
2063
2064    if ($("#responsableProgramacion").val() == "") {
2065      toastr.info("Ingrese el nombre responsable", "Importante", { timeOut: 3000 });
2066      $("#btnEditarProgramacion").prop("disabled", false);
2067      return;
2068    }
2069    if ($("#codEmpresaProgramacionEdit").val() == "") {
2070      toastr.info("Ingrese el código de la empresa", "Importante", { timeOut: 3000 });
2071      $("#btnEditarProgramacion").prop("disabled", false);
2072      return;
2073    }
2074    if ($("#telefonoEmpresaProgramacionEdit").val() == "") {
2075      toastr.info("Ingrese el telefono de la empresa", "Importante", { timeOut: 3000 });
2076      $("#btnEditarProgramacion").prop("disabled", false);
2077      return;
2078    }
2079    if ($("#programador_programacionEdit").val() == "") {
2080      toastr.info("Seleccione el programador", "Importante", { timeOut: 3000 });
2081      $("#btnEditarProgramacion").prop("disabled", false);
2082      return;
2083    }
2084    if ($("#temaProgramacion").val() == "") {
2085      toastr.info("Ingrese el tema", "Importante", { timeOut: 3000 });
2086      $("#btnEditarProgramacion").prop("disabled", false);
2087      return;
2088    }
2089    if (razon.trim() == "") {
2090      toastr.info("Ingrese la razon", "Importante", { timeOut: 3000 });
2091      $("#btnEditarProgramacion").prop("disabled", false);
2092      return;
2093    }
2094
2095    var datos = new FormData();
2096    datos.append("editarProgramacion", true);
2097    datos.append("codigoProgramacion", $("#idCodProgramacion").val());
2098    datos.append("responsableProgramacion", $("#responsableProgramacion").val());
2099    datos.append("codEmpresaProgramacion", $("#codEmpresaProgramacionEdit").val());
2100    datos.append("telefonoEmpresaProgramacion", $("#telefonoEmpresaProgramacionEdit").val());
2101    datos.append("programador_programacion", $("#programador_programacionEdit").val());
2102    datos.append("temaProgramacion", $("#temaProgramacion").val());
2103    datos.append("razonProgramacion", razon.trim());
2104
2105
2106    if (imagenes.length > 0) {
2107      const promesas = imagenes.map((base64Img, index) =>
2108        fetch(base64Img)
2109          .then(res => res.blob())
2110          .then(blob => new File([blob], `imagen_${index}.png`, { type: 'image/png' }))
2111      );
2112
2113      Promise.all(promesas).then(archivos => {
2114        archivos.forEach(file => {
2115          datos.append('archivoComprobante[]', file);
2116        });
2117
2118        datos.append('archivo', true);
2119        enviarAjaxEditProgramacion(datos);
2120      });
2121    } else {
2122      datos.append('archivo', false);
2123      enviarAjaxEditProgramacion(datos);
2124    }
2125
2126
2127
2128
2129  });
2130
2131  function enviarAjaxEditProgramacion(datos) {
2132
2133    $("#btnEditarProgramacion").prop("disabled", true);
2134
2135    $.ajax({
2136      url: "ajax/empresas.ajax.php",
2137      type: "POST",
2138      data: datos,
2139      cache: false,
2140      contentType: false,
2141      processData: false,
2142      success: function (respuesta) {
2143        var respuesta = JSON.parse(respuesta);
2144        $("#btnEditarProgramacion").prop("disabled", false);
2145        if (respuesta.estado) {
2146          setTimeout(() => {
2147            location.reload();
2148            toastr.success("Programación Editado correctamente !");
2149          }, 1000);
2150        } else {
2151          toastr.error("Error al editar Soporte!");
2152          setTimeout(() => {
2153            location.reload();
2154          }, 1000);
2155        }
2156      },
2157    });
2158  }
2159
2160
2161
2162  $(document).on("click", ".btnActivarEstadoSoporte", function () {
2163
2164    var codsoporte = $(this).attr("codsoporte");
2165    var estadoUsuario = $(this).attr("estadoUsuario");
2166
2167    if (estadoUsuario === 'PENDIENTE') {
2168      swal({
2169        title: '¿Está seguro de realizar esta acción?',
2170        type: 'warning',
2171        showCancelButton: true,
2172        confirmButtonColor: '#3085d6',
2173        cancelButtonColor: '#d33',
2174        cancelButtonText: 'Si, Cambiar a "Finalizado"',
2175        confirmButtonText: 'Si, Cambiar a "En proceso" !'
2176      }).then(function (result) {
2177        if (result.value) {
2178          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoSoporte": 'ENPROCESO' }, function (respuesta) {
2179            location.reload();
2180          });
2181        } else if (result.dismiss === 'cancel') {
2182          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoSoporte": 'FINALIZADO' }, function (respuesta) {
2183            location.reload();
2184          });
2185        }
2186      });
2187    } else if (estadoUsuario === 'ENPROCESO') {
2188      swal({
2189        title: '¿Está seguro de realizar esta acción?',
2190        type: 'warning',
2191        showCancelButton: true,
2192        confirmButtonColor: '#3085d6',
2193        cancelButtonColor: '#d33',
2194        cancelButtonText: 'Si, Cambiar a "Pendiente"',
2195        confirmButtonText: 'Si, Cambiar a "Finalizado" !'
2196      }).then(function (result) {
2197        if (result.value) {
2198          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoSoporte": 'FINALIZADO' }, function (respuesta) {
2199            location.reload();
2200          });
2201        } else if (result.dismiss === 'cancel') {
2202          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoSoporte": 'PENDIENTE' }, function (respuesta) {
2203            location.reload();
2204          });
2205        }
2206      });
2207    } else if (estadoUsuario === 'FINALIZADO') {
2208      swal({
2209        title: '¿Está seguro de realizar esta acción?',
2210        type: 'warning',
2211        showCancelButton: true,
2212        confirmButtonColor: '#3085d6',
2213        cancelButtonColor: '#d33',
2214        cancelButtonText: 'Si, Cambiar a "En proceso"',
2215        confirmButtonText: 'Si, Cambiar a "Pendiente" !'
2216      }).then(function (result) {
2217        if (result.value) {
2218          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoSoporte": 'PENDIENTE' }, function (respuesta) {
2219            location.reload();
2220          });
2221        } else if (result.dismiss === 'cancel') {
2222          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoSoporte": 'ENPROCESO' }, function (respuesta) {
2223            location.reload();
2224          });
2225        }
2226      });
2227
2228    }
2229  });
2230
2231
2232
2233
2234
2235  $(document).on("click", ".btnActivarEstadoProgramacion", function () {
2236
2237    var codsoporte = $(this).attr("codprogramacion");
2238    var estadoUsuario = $(this).attr("estadoUsuario");
2239
2240    if (estadoUsuario === 'PENDIENTE') {
2241      swal({
2242        title: '¿Está seguro de realizar esta acción?',
2243        type: 'warning',
2244        showCancelButton: true,
2245        confirmButtonColor: '#3085d6',
2246        cancelButtonColor: '#d33',
2247        cancelButtonText: 'Si, Cambiar a "Rechazado"',
2248        confirmButtonText: 'Si, Cambiar a "Autorizado" !'
2249      }).then(function (result) {
2250        if (result.value) {
2251          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoProgramacion": 'AUTORIZADO' }, function (respuesta) {
2252            location.reload();
2253          });
2254        } else if (result.dismiss === 'cancel') {
2255          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoProgramacion": 'RECHAZADO' }, function (respuesta) {
2256            location.reload();
2257          });
2258        }
2259      });
2260    } else if (estadoUsuario === 'AUTORIZADO') {
2261      swal({
2262        title: '¿Está seguro de realizar esta acción?',
2263        type: 'warning',
2264        showCancelButton: true,
2265        confirmButtonColor: '#3085d6',
2266        cancelButtonColor: '#d33',
2267        cancelButtonText: 'Si, Cambiar a "Pendiente"',
2268        confirmButtonText: 'Si, Cambiar a "Finalizado" !'
2269      }).then(function (result) {
2270        if (result.value) {
2271          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoProgramacion": 'FINALIZADO' }, function (respuesta) {
2272            location.reload();
2273          });
2274        } else if (result.dismiss === 'cancel') {
2275          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoProgramacion": 'PENDIENTE' }, function (respuesta) {
2276            location.reload();
2277          });
2278        }
2279      });
2280    } else if (estadoUsuario === 'RECHAZADO') {
2281      swal({
2282        title: '¿Está seguro de realizar esta acción?',
2283        type: 'warning',
2284        showCancelButton: true,
2285        confirmButtonColor: '#3085d6',
2286        cancelButtonColor: '#d33',
2287        cancelButtonText: 'Si, Cambiar a "Autorizado"',
2288        confirmButtonText: 'Si, Cambiar a "Pendiente" !'
2289      }).then(function (result) {
2290        if (result.value) {
2291          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoProgramacion": 'PENDIENTE' }, function (respuesta) {
2292            location.reload();
2293          });
2294        } else if (result.dismiss === 'cancel') {
2295          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoProgramacion": 'AUTORIZADO' }, function (respuesta) {
2296            location.reload();
2297          });
2298        }
2299      });
2300
2301    } else if (estadoUsuario === 'FINALIZADO') {
2302      swal({
2303        title: '¿Está seguro de realizar esta acción?',
2304        type: 'warning',
2305        showCancelButton: true,
2306        confirmButtonColor: '#3085d6',
2307        cancelButtonColor: '#d33',
2308        cancelButtonText: 'Si, Cambiar a "Autorizado"',
2309        confirmButtonText: 'Si, Cambiar a "Pendiente" !'
2310      }).then(function (result) {
2311        if (result.value) {
2312          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoProgramacion": 'PENDIENTE' }, function (respuesta) {
2313            location.reload();
2314          });
2315        } else if (result.dismiss === 'cancel') {
2316          $.post("ajax/usuarios.ajax.php", { "activarId": codsoporte, "estadoProgramacion": 'AUTORIZADO' }, function (respuesta) {
2317            location.reload();
2318          });
2319        }
2320      });
2321
2322    }
2323
2324  });
2325
2326
2327
2328}
2329
2330/*=============================================
2331      ACTIVAR Y DESACTIVAR ESTADO PLAN
2332 =============================================*/
2333
2334if (window.location.href.indexOf("empresas") > -1) {
2335
2336  $(document).on("click", ".btnActivarEstado", function () {
2337
2338    var codDetallePlan = $(this).attr("coddetalleplan");
2339    var estadoPlan = $(this).attr("codestadodetalleplan");
2340    var codigoEmpresa = $(this).attr("codigoEmpresa");
2341
2342    if (estadoPlan == "INACTIVO") {
2343
2344      swal({
2345        title: "¿Está seguro de desactivar el plan?",
2346        text: "¡Si no lo está puede cancelar la acción!",
2347        type: "warning",
2348        showCancelButton: true,
2349        confirmButtonColor: "#3085d6",
2350        cancelButtonColor: "#d33",
2351        cancelButtonText: "Cancelar",
2352        confirmButtonText: "Si, desactivar plan"
2353      }).then((result) => {
2354
2355        if (result.value) {
2356          estadoDetallePlan(codDetallePlan, estadoPlan, codigoEmpresa);
2357        }
2358
2359
2360      });
2361
2362    } else {
2363
2364      swal({
2365        title: "¿Está seguro de activar el plan?",
2366        text: "¡Si no lo está puede cancelar la acción!",
2367        type: "warning",
2368        showCancelButton: true,
2369        confirmButtonColor: "#3085d6",
2370        cancelButtonColor: "#d33",
2371        cancelButtonText: "Cancelar",
2372        confirmButtonText: "Si, activar plan"
2373      }).then((result) => {
2374
2375        if (result.value) {
2376          estadoDetallePlan(codDetallePlan, estadoPlan, codigoEmpresa);
2377        }
2378      });
2379    }
2380
2381  });
2382
2383
2384  $(document).on("click", ".btnActivarEstadoImprentas", function () {
2385
2386
2387    var idUsuario = $(this).attr("idUsuario");
2388    var telefono = $(this).attr("telefono") == "" || $(this).attr("telefono") == null ? "" : "Teléfono : " + $(this).attr("telefono") + ". ";
2389    var estadoUsuario = $(this).attr("estadoUsuario");
2390
2391
2392    swal({
2393      title: '¿Está seguro de realizar esta acción?',
2394      text: telefono,//"¡Si no lo está puede cancelar la acción!"
2395      type: 'warning',
2396      showCancelButton: true,
2397      confirmButtonColor: '#3085d6',
2398      cancelButtonColor: '#d33',
2399      cancelButtonText: 'Cancelar',
2400      confirmButtonText: 'Si, Realizar!'
2401    }).then(function (result) {
2402
2403      if (result.value) {
2404
2405        $.post("ajax/usuarios.ajax.php", { "activarId": idUsuario, "activarUsuario": estadoUsuario }, function (respuesta) {
2406
2407          $('.tablaImprentas-todos').DataTable().ajax.reload();
2408          $('.tablaImprentas-activas').DataTable().ajax.reload();
2409          $('.tablaImprentas-inactivas').DataTable().ajax.reload();
2410
2411        });
2412      }
2413    })
2414  });
2415
2416  $(document).on("click", ".btnActivarEstadoProyectos", function () {
2417
2418    var idUsuario = $(this).attr("coddetalleplan");
2419    var estadoUsuario = $(this).attr("estadoUsuario");
2420
2421    if (estadoUsuario === 'PENDIENTE') {
2422      swal({
2423        title: '¿Está seguro de realizar esta acción?',
2424        type: 'warning',
2425        showCancelButton: true,
2426        confirmButtonColor: '#3085d6',
2427        cancelButtonColor: '#d33',
2428        cancelButtonText: 'Si, Cambiar a "Rechazado"',
2429        confirmButtonText: 'Si, Cambiar a "En proceso" !'
2430      }).then(function (result) {
2431        if (result.value) {
2432          $.post("ajax/usuarios.ajax.php", { "activarId": idUsuario, "estadoProyecto": 'ENPROCESO' }, function (respuesta) {
2433            location.reload();
2434          });
2435        } else if (result.dismiss === 'cancel') {
2436          $.post("ajax/usuarios.ajax.php", { "activarId": idUsuario, "estadoProyecto": 'RECHAZADO' }, function (respuesta) {
2437            location.reload();
2438          });
2439        }
2440      });
2441    } else if (estadoUsuario === 'RECHAZADO') {
2442      swal({
2443        title: '¿Está seguro de realizar esta acción?',
2444        type: 'warning',
2445        showCancelButton: true,
2446        confirmButtonColor: '#3085d6',
2447        cancelButtonColor: '#d33',
2448        cancelButtonText: 'Si, Cambiar a "Pendiente"',
2449        confirmButtonText: 'Si, Cambiar a "En proceso" !'
2450      }).then(function (result) {
2451        if (result.value) {
2452          $.post("ajax/usuarios.ajax.php", { "activarId": idUsuario, "estadoProyecto": 'ENPROCESO' }, function (respuesta) {
2453            location.reload();
2454          });
2455        } else if (result.dismiss === 'cancel') {
2456          $.post("ajax/usuarios.ajax.php", { "activarId": idUsuario, "estadoProyecto": 'PENDIENTE' }, function (respuesta) {
2457            location.reload();
2458          });
2459        }
2460      });
2461    } else if (estadoUsuario === 'ENPROCESO') {
2462      swal({
2463        title: '¿Está seguro de realizar esta acción?',
2464        type: 'warning',
2465        showCancelButton: true,
2466        confirmButtonColor: '#3085d6',
2467        cancelButtonColor: '#d33',
2468        cancelButtonText: 'Si, Cambiar a "Pendiente"',
2469        confirmButtonText: 'Si, Cambiar a "Finalizado" !'
2470      }).then(function (result) {
2471        if (result.value) {
2472          $.post("ajax/usuarios.ajax.php", { "activarId": idUsuario, "estadoProyecto": 'FINALIZADO' }, function (respuesta) {
2473            location.reload();
2474          });
2475        } else if (result.dismiss === 'cancel') {
2476          $.post("ajax/usuarios.ajax.php", { "activarId": idUsuario, "estadoProyecto": 'PENDIENTE' }, function (respuesta) {
2477            location.reload();
2478          });
2479        }
2480      });
2481    } else {
2482      swal({
2483        title: '¿Está seguro de realizar esta acción?',
2484        type: 'warning',
2485        showCancelButton: true,
2486        confirmButtonColor: '#3085d6',
2487        cancelButtonColor: '#d33',
2488        cancelButtonText: 'Si, Cambiar a "En proceso"',
2489        confirmButtonText: 'Si, Cambiar a "Pendiente" !'
2490      }).then(function (result) {
2491        if (result.value) {
2492          $.post("ajax/usuarios.ajax.php", { "activarId": idUsuario, "estadoProyecto": 'PENDIENTE' }, function (respuesta) {
2493            location.reload();
2494          });
2495        } else if (result.dismiss === 'cancel') {
2496          $.post("ajax/usuarios.ajax.php", { "activarId": idUsuario, "estadoProyecto": 'ENPROCESO' }, function (respuesta) {
2497            location.reload();
2498          });
2499        }
2500      });
2501    }
2502  });
2503
2504
2505
2506
2507
2508
2509
2510  $(document).on("click", ".btnActivarEstadoFacturalo", function () {
2511
2512    var codDetallePlan = $(this).attr("coddetalleplan");
2513    var estadoPlan = $(this).attr("codestadodetalleplan");
2514    var codigoEmpresa = $(this).attr("codigoEmpresa");
2515
2516    if (estadoPlan == "INACTIVO") {
2517
2518      swal({
2519        title: "¿Está seguro de desactivar el plan?",
2520        text: "¡Si no lo está puede cancelar la acción!",
2521        type: "warning",
2522        showCancelButton: true,
2523        confirmButtonColor: "#3085d6",
2524        cancelButtonColor: "#d33",
2525        cancelButtonText: "Cancelar",
2526        confirmButtonText: "Si, desactivar plan"
2527      }).then((result) => {
2528
2529        if (result.value) {
2530          estadoDetallePlanFacturalo(codDetallePlan, estadoPlan, codigoEmpresa);
2531        }
2532
2533
2534      });
2535
2536    } else {
2537
2538      swal({
2539        title: "¿Está seguro de activar el plan?",
2540        text: "¡Si no lo está puede cancelar la acción!",
2541        type: "warning",
2542        showCancelButton: true,
2543        confirmButtonColor: "#3085d6",
2544        cancelButtonColor: "#d33",
2545        cancelButtonText: "Cancelar",
2546        confirmButtonText: "Si, activar plan"
2547      }).then((result) => {
2548
2549        if (result.value) {
2550          estadoDetallePlanFacturalo(codDetallePlan, estadoPlan, codigoEmpresa);
2551        }
2552      });
2553    }
2554
2555  });
2556
2557
2558
2559  /*=============================================
2560    MODIFICAR EL ESTADO
2561  =============================================*/
2562
2563  function estadoDetallePlan(codDetallePlan, estadoPlan, codigoEmpresa) {
2564
2565    var datos = new FormData();
2566    datos.append("activarId", codDetallePlan);
2567    datos.append("activarEstado", estadoPlan);
2568    datos.append("codigoEmpresa", codigoEmpresa);
2569    datos.append("tipoSistema", 'Contamatic');
2570
2571    $.ajax({
2572      url: "ajax/empresas.ajax.php",
2573      type: "POST",
2574      data: datos,
2575      cache: false,
2576      contentType: false,
2577      processData: false,
2578      dataType: "json",
2579
2580      success: function (respuesta) {
2581        if (respuesta.trim() == 'ok') {
2582
2583          location.reload();
2584
2585          toastr.info('Actualizado con exito');
2586
2587        } else {
2588
2589          toastr.info(respuesta.trim());
2590
2591        }
2592
2593
2594      }
2595    });
2596
2597    /* if (estadoPlan == "INACTIVO") {
2598      $(this).removeClass("btn-danger");
2599      $(this).addClass("btn-success");
2600      $(this).html("ACTIVO");
2601      $(this).attr("codestadodetalleplan","ACTIVO");
2602    } else {
2603      $(this).addClass("btn-danger");
2604      $(this).removeClass("btn-success");
2605      $(this).html("INACTIVO");
2606      $(this).attr("codestadodetalleplan","INACTIVO");
2607    } */
2608  }
2609
2610  function estadoDetallePlanImprenta(codDetallePlan, estadoPlan, codigoEmpresa) {
2611
2612    var datos = new FormData();
2613    datos.append("idDetallePlan", codDetallePlan);
2614    datos.append("activarEstadoImprenta", estadoPlan);
2615    datos.append("codigoEmpresa", codigoEmpresa);
2616
2617    $.ajax({
2618      url: "ajax/empresas.ajax.php",
2619      type: "POST",
2620      data: datos,
2621      cache: false,
2622      contentType: false,
2623      processData: false,
2624      dataType: "json",
2625
2626      success: function (respuesta) {
2627        if (respuesta.trim() == 'ok') {
2628
2629          location.reload();
2630
2631          toastr.info('Actualizado con exito');
2632
2633        } else {
2634
2635          toastr.info(respuesta.trim());
2636
2637        }
2638
2639
2640      }
2641    });
2642  }
2643
2644  function estadoDetallePlanFacturalo(codDetallePlan, estadoPlan, codigoEmpresa) {
2645
2646    var datos = new FormData();
2647    datos.append("activarId", codDetallePlan);
2648    datos.append("activarEstado", estadoPlan);
2649    datos.append("codigoEmpresa", codigoEmpresa);
2650    datos.append("tipoSistema", 'facturalo');
2651
2652    $.ajax({
2653      url: "ajax/empresas.ajax.php",
2654      type: "POST",
2655      data: datos,
2656      cache: false,
2657      contentType: false,
2658      processData: false,
2659      dataType: "json",
2660
2661      success: function (respuesta) {
2662        if (respuesta.trim() == 'ok') {
2663
2664          location.reload();
2665
2666          toastr.info('Actualizado con exito');
2667
2668        } else {
2669
2670          toastr.info(respuesta.trim());
2671
2672        }
2673
2674
2675      }
2676    });
2677  }
2678
2679
2680  /**
2681   *  modificar el estado del usuario
2682   */
2683
2684  /** activar o desactivar le estado del usiario */
2685  $(document).on("click", ".btnActivarEstadoUsuario", function () {
2686    var estadoPlan = $(this).attr("codestadousuario");
2687    var codigoUsuario = $(this).attr("codUsuario");
2688
2689    if (estadoPlan == 'INACTIVO') {
2690      swal({
2691        title: "¿Está seguro de desactivar el usuario?",
2692        text: "¡Si no lo está puede cancelar la acción!",
2693        type: "warning",
2694        showCancelButton: true,
2695        confirmButtonColor: "#3085d6",
2696        cancelButtonColor: "#d33",
2697        cancelButtonText: "Cancelar",
2698        confirmButtonText: "Si, desactivar usuario"
2699      }).then((result) => {
2700
2701
2702        if (result.value) {
2703          var valorEstado = 0;
2704          estadoUsuario(codigoUsuario, valorEstado);
2705        }
2706
2707      });
2708    } else {
2709      swal({
2710        title: "¿Está seguro de activar el usuario?",
2711        text: "¡Si no lo está puede cancelar la acción!",
2712        type: "warning",
2713        showCancelButton: true,
2714        confirmButtonColor: "#3085d6",
2715        cancelButtonColor: "#d33",
2716        cancelButtonText: "Cancelar",
2717        confirmButtonText: "Si, activar usuario"
2718      }).then((result) => {
2719
2720        if (result.value) {
2721          var valorEstado = 1;
2722          estadoUsuario(codigoUsuario, valorEstado);
2723        }
2724      });
2725    }
2726  });
2727
2728
2729
2730  $(document).on("click", ".btnActivarEstadoUsuarioFacturalo", function () {
2731    var estadoPlan = $(this).attr("codestadousuario");
2732    var codigoUsuario = $(this).attr("codUsuario");
2733    if (estadoPlan == 'INACTIVO') {
2734      swal({
2735        title: "¿Está seguro de desactivar el usuario?",
2736        text: "¡Si no lo está puede cancelar la acción!",
2737        type: "warning",
2738        showCancelButton: true,
2739        confirmButtonColor: "#3085d6",
2740        cancelButtonColor: "#d33",
2741        cancelButtonText: "Cancelar",
2742        confirmButtonText: "Si, desactivar usuario"
2743      }).then((result) => {
2744
2745
2746        if (result.value) {
2747          var valorEstado = 0;
2748          estadoUsuarioFacturalo(codigoUsuario, valorEstado);
2749        }
2750
2751      });
2752    } else {
2753      swal({
2754        title: "¿Está seguro de activar el usuario?",
2755        text: "¡Si no lo está puede cancelar la acción!",
2756        type: "warning",
2757        showCancelButton: true,
2758        confirmButtonColor: "#3085d6",
2759        cancelButtonColor: "#d33",
2760        cancelButtonText: "Cancelar",
2761        confirmButtonText: "Si, activar usuario"
2762      }).then((result) => {
2763
2764        if (result.value) {
2765          var valorEstado = 1;
2766          estadoUsuarioFacturalo(codigoUsuario, valorEstado);
2767        }
2768      });
2769    }
2770  });
2771
2772  function estadoUsuario(codigoUsuario, valorUsuario) {
2773    var datos = new FormData();
2774    datos.append("activarEstadoUsuario", true);
2775    datos.append("codigoUsuario", codigoUsuario);
2776    datos.append("valorUsuario", valorUsuario);
2777    datos.append("tipoSistema", 'Contamatic');
2778    $.ajax({
2779      url: "ajax/empresas.ajax.php",
2780      type: "POST",
2781      data: datos,
2782      cache: false,
2783      contentType: false,
2784      processData: false,
2785      dataType: "json",
2786
2787      success: function (respuesta) {
2788        if (respuesta.trim() == 'ok') {
2789
2790          $(".tablaEmpresa-todos").DataTable().ajax.reload();
2791          toastr.info('Actualizado con exito');
2792
2793        } else {
2794
2795          toastr.info(respuesta.trim());
2796
2797        }
2798
2799
2800      }
2801    });
2802
2803  }
2804
2805  function estadoUsuarioFacturalo(codigoUsuario, valorUsuario) {
2806    var datos = new FormData();
2807    datos.append("activarEstadoUsuario", true);
2808    datos.append("codigoUsuario", codigoUsuario);
2809    datos.append("valorUsuario", valorUsuario);
2810    datos.append("tipoSistema", 'facturalo');
2811    $.ajax({
2812      url: "ajax/empresas.ajax.php",
2813      type: "POST",
2814      data: datos,
2815      cache: false,
2816      contentType: false,
2817      processData: false,
2818      dataType: "json",
2819
2820      success: function (respuesta) {
2821        if (respuesta.trim() == 'ok') {
2822
2823          $(".tablaEmpresaFacturalo-todos").DataTable().ajax.reload();
2824          toastr.info('Actualizado con exito');
2825
2826        } else {
2827
2828          toastr.info(respuesta.trim());
2829
2830        }
2831
2832
2833      }
2834    });
2835
2836  }
2837
2838  $("#codigoPlan").on("input", function () {
2839    this.value = this.value.replace(/[^0-9]/g, "");
2840  });
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850  /*=============================================
2851        AGREGAR NUEVO PLAN
2852  =============================================*/
2853
2854  $(document).on("click", ".btnNuevoPlan", function (e) {
2855
2856    var idDetallePlan = $(this).attr("coddetalleplan");
2857    var estadoPlan = $(this).attr("estadoplan");
2858    var idEmpresaPlan = $(this).attr("codempresaplan");
2859    var nombreFinalEmpresa = $(this).attr("nombreEmpresa");
2860
2861
2862    let nombreEmpresa = atob(nombreFinalEmpresa);
2863
2864
2865    $("#nombreEmpresa").val(nombreEmpresa.trim());
2866
2867    $("#codEmpresa").val(idEmpresaPlan);
2868    $("#codEmpresa").attr("sucursal", $(this).attr("sucursalEmpresa"));
2869
2870
2871
2872    //SI EL PLAN SE ENCUENTRA ACTIVADO, NO SE PUEDE CREAR UNO NUEVO.
2873
2874    if (estadoPlan == "ACTIVO") {
2875
2876      toastr.info("¡No puede crear un nuevo plan mientras existe un plan activo!");
2877
2878    } else {
2879
2880      $("#identificadorPlan").val(idDetallePlan);
2881
2882      $('#modalAgregarPlan').modal('show');
2883
2884      mostrarNumeroDocumentosRestantes();
2885
2886    }
2887
2888    /*  $datosPlan = array(
2889       "cantidadFactura" => strip_tags($_POST["cantidad_Facturas"]),
2890       "codigoEmpresa" => ''
2891   ); */
2892
2893  });
2894
2895
2896  $(document).on("click", "#btnGuardarPlan", function () {
2897
2898
2899    var codigoEmpresa = $("#codEmpresa").val();
2900    var sucursalEmpresa = $("#codEmpresa").attr("sucursal");
2901    var codigoPlan = $("#codigoPlan").val();
2902    let nombreEmpresa = $("#nombreEmpresa").val();
2903    let tipoplan = $("#tipoPlanEmpresa").val();
2904    let identificadorPlan = $("#identificadorPlan").val();
2905
2906    if (codigoPlan != "") {
2907      var datos = new FormData();
2908
2909      datos.append("agregarPlan", true);
2910      datos.append("codigoEmpresa", codigoEmpresa);
2911      datos.append("numeroFacturas", codigoPlan);
2912      datos.append("nombreEmpresa", nombreEmpresa);
2913      datos.append("tipoPlan", tipoplan);
2914      datos.append("idrestantes", identificadorPlan);
2915      datos.append("sucursalEmpresa", sucursalEmpresa);
2916
2917      swal({
2918        title: '¿Está seguro de generar un nuevo plan?',
2919        text: "¡Si no lo está puede cancelar la accíón!",
2920        type: 'warning',
2921        showCancelButton: true,
2922        confirmButtonColor: '#3085d6',
2923        cancelButtonColor: '#d33',
2924        cancelButtonText: 'Cancelar',
2925        confirmButtonText: 'Si, crear plan!'
2926      }).then(function (result) {
2927
2928        if (result.value) {
2929
2930
2931          $.ajax({
2932            url: "ajax/empresas.ajax.php",
2933            type: "POST",
2934            data: datos,
2935            cache: false,
2936            contentType: false,
2937            processData: false,
2938            dataType: "json",
2939
2940            success: function (respuesta) {
2941
2942              if (respuesta.trim() == 'ok') {
2943
2944                $('#modalAgregarPlan').modal('hide');
2945
2946                toastr.success('Plan Actualizado con exito');
2947
2948                setTimeout(() => {
2949                  location.reload();
2950                }, 2000);
2951
2952
2953              } else if (respuesta.trim() == 'falta') {
2954                toastr.success('El número de domentos de su plan prepago es menor al indicado.');
2955
2956              }
2957
2958
2959              else {
2960
2961                //respuesta.trim()
2962
2963                toastr.info('Error al generar nuevo plan, contacte con el administrador!');
2964
2965              }
2966
2967
2968            }
2969          })
2970
2971
2972        }
2973
2974      });
2975
2976    }
2977
2978    else {
2979      toastr.info("Ingrese la cantidad de documentos del plan");
2980    }
2981
2982
2983
2984  });
2985
2986
2987
2988  $(document).on('click', '.btnHistorialPlanes', function (event) {
2989    var empresa = $(this).attr("codempresaplan");
2990    var sistema = $(this).attr("sistematipo");
2991    window.location.href = "index.php?ruta=historial-planes&sistema=" + sistema + "&plan=" + btoa(empresa);
2992  });
2993
2994  $(document).on('click', '.btnHistorialPlanesImprenta', function (event) {
2995    var usuario = $(this).attr("codusuarios");
2996    window.location.href = "index.php?ruta=historial-planes-imprenta&plan=" + btoa(usuario);
2997  });
2998
2999
3000
3001  $(document).on('click', '.btnAbonarProyecto', function (event) {
3002    var abonoPlan = $(this).attr("abonoPlan");
3003    var plan = $(this).attr("plan");
3004
3005    $("#codPlan-proyecto").val(plan);
3006    $("#codPlanAbono-proyecto").val(abonoPlan);
3007    $("#modalAgregarPagoPlanProyecto").modal("show");
3008  });
3009
3010  $("#btnCancelaProyecto").click(function () {
3011
3012    $("#modalEditarProyecto").modal("hide");
3013
3014    $("#rucProyecto").val("");
3015    $("#desarrolloEmpresa").val("");
3016    $("#nombreProyecto").val("");
3017    $("#reseniaaDesarrollo").val("");
3018    $("#acuerdosDesarrollo").val("");
3019
3020    $("#aprobadoProyecto").val("");
3021    $("#precioDesarrolloProyecto").val("");
3022    $("#tiempoEstimado").val("");
3023    $("#fechainicioTiempoEstimado").val("");
3024    $("#fechaFinTiempoEstimado").val("");
3025    $("#adicionesDesarrollo").val("");
3026    $("#precioAdicional").val("");
3027    $("#tiempoEstimadoAdiciones").val("");
3028    $("#fechainicioAdiciones").val("");
3029    $("#fechaFinAdiciones").val("");
3030
3031    $("#fechacomprobante_proyecto").val("");
3032    $("#valorcomprobante_proyecto").val("");
3033    $("#bancopago_solicitudSJ_proyecto").val("");
3034    $("#numeropago_solicitudSJ_proyecto").val("");
3035    $("#comprobanteArchivoPago_proyecto").val("");
3036    $("#observacioncomprobante_proyecto").val("");
3037    document.getElementById('valor_certificado_proyecto').innerHTML = `$0.0`;
3038    document.getElementById('valor_facturar_proyecto').innerHTML = `$0.0`;
3039
3040    $("#identificacion_cliente_proyecto").val("");
3041    $("#nombre_cliente_proyecto").val("");
3042    $("#direccion_cliente_proyecto").val("");
3043    $("#telefono_cliente_proyecto").val("");
3044    $("#correo_cliente_proyecto").val("");
3045  });
3046
3047  $("#btnCancelarSoporte").click(function () {
3048
3049    $("#modalEditarSoporte").modal("hide");
3050  })
3051
3052  $(document).on('click', '.btnAbrirModalEditarProyecto', function (event) {
3053    var plan = $(this).attr("codPlan");
3054    var rucEmpresa = atob($(this).attr("rucEmpresa"));
3055    var empresa = atob($(this).attr("empresa"));
3056    var proyecto = atob($(this).attr("proyecto"));
3057    var resenia = atob($(this).attr("resenia"));
3058    var acuerdo = $(this).attr("acuerdo");
3059
3060    var aprobado = atob($(this).attr("aprobado"));
3061    var preciodesarrollo = atob($(this).attr("preciodesarrollo"));
3062    var Testimado = $(this).attr("Testimado");
3063    var inicio = atob($(this).attr("inicio"));
3064    var fin = atob($(this).attr("fin"));
3065    var adicionD = atob($(this).attr("adicionD"));
3066    var precioAdic = atob($(this).attr("precioAdic"));
3067    var TestimadoAdd = atob($(this).attr("TestimadoAdd"));
3068    var inicioAdd = atob($(this).attr("inicioAdd"));
3069    var finAdd = atob($(this).attr("finAdd"));
3070    var valorAb = atob($(this).attr("valorAb"));
3071
3072    $("#idCodigoPlan_proyecto").val(plan);
3073    document.getElementById('valor_certificado_proyecto').innerHTML = `$ ${valorAb}`;
3074    $("#rucProyecto").val(rucEmpresa);
3075    $("#desarrolloEmpresa").val(empresa);
3076    $("#nombreProyecto").val(proyecto);
3077    $("#reseniaaDesarrollo").val(resenia);
3078    $("#acuerdosDesarrollo").val(acuerdo);
3079
3080    $("#aprobadoProyecto").val(aprobado);
3081    $("#precioDesarrolloProyecto").val(preciodesarrollo);
3082    $("#tiempoEstimado").val(Testimado);
3083    $("#fechainicioTiempoEstimado").val(inicio);
3084    $("#fechaFinTiempoEstimado").val(fin);
3085    $("#adicionesDesarrollo").val(adicionD);
3086    $("#precioAdicional").val(precioAdic);
3087    $("#tiempoEstimadoAdiciones").val(TestimadoAdd);
3088    $("#fechainicioAdiciones").val(inicioAdd);
3089    $("#fechaFinAdiciones").val(finAdd);
3090
3091    obtenerInformacionPerfil();
3092
3093    $("#modalEditarProyecto").modal("show");
3094  });
3095
3096
3097  async function postRequest($url, parametros) {
3098    try {
3099      const resultado = await fetch($url, {
3100        method: 'POST',
3101        body: parametros
3102      });
3103      const datos = await resultado.json();
3104      return datos;
3105    } catch (error) {
3106      throw error;
3107    }
3108  }
3109
3110  async function obtenerInformacionPerfil() {
3111
3112    let url = 'ajax/facturacion/facturacion.ajax.php';
3113    let parametros = new FormData();
3114    parametros.append("informacionPerfil", true);
3115
3116    try {
3117      let resultado = await postRequest(url, parametros);
3118      if (resultado && resultado.operacion) {
3119        document.getElementById('identificacion_contador_proyecto1').value = resultado.data.identificacion;
3120        document.getElementById('nombre_contador_proyecto1').value = resultado.data.nombre;
3121        document.getElementById('direcion_contador_proyecto1').value = resultado.data.direccion;
3122        document.getElementById('telefono_contador_proyecto1').value = resultado.data.telefono;
3123        document.getElementById('correo_contador_proyecto1').value = resultado.data.email;
3124
3125        document.getElementById('identificacion_contador_proyecto2').value = resultado.data.identificacion;
3126        document.getElementById('nombre_contador_proyecto2').value = resultado.data.nombre;
3127        document.getElementById('direcion_contador_proyecto2').value = resultado.data.direccion;
3128        document.getElementById('telefono_contador_proyecto2').value = resultado.data.telefono;
3129        document.getElementById('correo_contador_proyecto2').value = resultado.data.email;
3130        $("#facturarEmpresaMisDatos_proyecto").prop('checked', true);
3131        $("#facturarEmpresaMisDatos_proyecto1").prop('checked', true);
3132      } else {
3133        toastr.error(resultado ? resultado.mensaje : 'Error desconocido');
3134      }
3135    } catch (error) {
3136      //   toastr.error('Hubo un problema al obtener la información del perfil');
3137    }
3138  }
3139
3140
3141
3142  $(document).on("click", "#buscarContador_proyecto2", async function () {
3143    var dato = $("#identificacion_contador_proyecto2").val();
3144    if (dato.trim().length < 10) {
3145      toastr.info("Ingrese la cédula correctamente", "Importante", {
3146        timeOut: 4000,
3147      });
3148      return;
3149    }
3150    $(".cargandoInformacion2").show();
3151    var tipo = "cedula";
3152    var respuesta = await interfaz.obtenerInformacionPersona(tipo, dato);
3153    $(".cargandoInformacion2").hide();
3154    document.getElementById('nombre_contador_proyecto2').value = respuesta.nombres + ' ' + respuesta.apellidos;
3155    document.getElementById('direcion_contador_proyecto2').value = respuesta.ciudad;
3156  });
3157
3158  $(document).on("click", "#buscar_cliente_proyecto", async function () {
3159    var dato = $("#identificacion_cliente_proyecto").val();
3160    if (dato.trim().length < 10) {
3161      toastr.info("Ingrese la cédula correctamente", "Importante", {
3162        timeOut: 4000,
3163      });
3164      return;
3165    }
3166    $(".cargandoInformacion_cliente_proyecto").show();
3167    var tipo = "cedula";
3168    var respuesta = await interfaz.obtenerInformacionPersona(tipo, dato);
3169    $(".cargandoInformacion_cliente_proyecto").hide();
3170    document.getElementById('nombre_cliente_proyecto').value = respuesta.nombres + ' ' + respuesta.apellidos;
3171    document.getElementById('direccion_cliente_proyecto').value = respuesta.ciudad;
3172  });
3173
3174
3175  $(document).on("click", "#buscarContador_proyecto1", async function () {
3176    var dato = $("#identificacion_contador_proyecto1").val();
3177    if (dato.trim().length < 10) {
3178      toastr.info("Ingrese la cédula correctamente", "Importante", {
3179        timeOut: 4000,
3180      });
3181      return;
3182    }
3183    $(".cargandoInformacion1").show();
3184    var tipo = "cedula";
3185    var respuesta = await interfaz.obtenerInformacionPersona(tipo, dato);
3186    $(".cargandoInformacion1").hide();
3187    document.getElementById('nombre_contador_proyecto1').value = respuesta.nombres + ' ' + respuesta.apellidos;
3188    document.getElementById('direcion_contador_proyecto1').value = respuesta.ciudad;
3189  });
3190
3191  $(document).on("click", "#buscar_cliente_proyecto1", async function () {
3192    var dato = $("#identificacion_cliente_proyecto1").val();
3193    if (dato.trim().length < 10) {
3194      toastr.info("Ingrese la cédula correctamente", "Importante", {
3195        timeOut: 4000,
3196      });
3197      return;
3198    }
3199    $(".cargandoInformacion_cliente_proyecto1").show();
3200    var tipo = "cedula";
3201    var respuesta = await interfaz.obtenerInformacionPersona(tipo, dato);
3202    $(".cargandoInformacion_cliente_proyecto1").hide();
3203    document.getElementById('nombre_cliente_proyecto1').value = respuesta.nombres + ' ' + respuesta.apellidos;
3204    document.getElementById('direccion_cliente_proyecto1').value = respuesta.ciudad;
3205  });
3206
3207
3208
3209  $("#btnEditarProyecto").click(function () {
3210
3211    $("#btnEditarProyecto").prop("disabled", true);
3212
3213    if ($("#rucProyecto").val() == "") {
3214      toastr.info("Ingrese el RUC", "Importante", { timeOut: 3000 });
3215      $("#btnEditarProyecto").prop("disabled", false);
3216      return;
3217    }
3218
3219    if ($("#desarrolloEmpresa").val() == "") {
3220      toastr.info("Ingrese el nombre de la empresa a la que se le desarrolla el proyecto", "Importante", { timeOut: 3000 });
3221      $("#btnEditarProyecto").prop("disabled", false);
3222      return;
3223    }
3224
3225    if ($("#nombreProyecto").val() == "") {
3226      toastr.info("Ingrese el nombre del proyecto", "Importante", { timeOut: 3000 });
3227      $("#btnEditarProyecto").prop("disabled", false);
3228      return;
3229    }
3230
3231    if ($("#reseniaaDesarrollo").val() == "") {
3232      toastr.info("Ingrese una pequeña reseña del proyecto", "Importante", { timeOut: 3000 });
3233      $("#btnEditarProyecto").prop("disabled", false);
3234      return;
3235    }
3236
3237    if ($("#acuerdosDesarrollo").val() == "") {
3238      toastr.info("Ingrese los acuerdos del desarrollo", "Importante", { timeOut: 3000 });
3239      $("#btnEditarProyecto").prop("disabled", false);
3240      return;
3241    }
3242
3243    if ($("#aprobadoProyecto").val() == "") {
3244      toastr.info("Ingrese quien aprobo el proyecto", "Importante", { timeOut: 3000 });
3245      $("#btnEditarProyecto").prop("disabled", false);
3246      return;
3247    }
3248
3249    if ($("#precioDesarrolloProyecto").val() == "") {
3250      toastr.info("Ingrese el precio del desarrollo del proyecto", "Importante", { timeOut: 3000 });
3251      $("#btnEditarProyecto").prop("disabled", false);
3252      return;
3253    }
3254    if ($("#tiempoEstimado").val() == "") {
3255      toastr.info("Ingrese el tiempo estimado del desarrollo", "Importante", { timeOut: 3000 });
3256      $("#btnEditarProyecto").prop("disabled", false);
3257      return;
3258    }
3259    if ($("#fechainicioTiempoEstimado").val() == "") {
3260      toastr.info("Ingrese la fecha de inicio estimada", "Importante", { timeOut: 3000 });
3261      $("#btnEditarProyecto").prop("disabled", false);
3262      return;
3263    }
3264    if ($("#fechaFinTiempoEstimado").val() == "") {
3265      toastr.info("Ingrese la fecha fin estimada", "Importante", { timeOut: 3000 });
3266      $("#btnEditarProyecto").prop("disabled", false);
3267      return;
3268    }
3269
3270    var numeroArchivos = $("#comprobanteArchivoPago_proyecto")[0].files;
3271
3272    var datos = new FormData();
3273    datos.append("btnEditarProyecto", true);
3274    datos.append("rucProyecto", $("#rucProyecto").val());
3275    datos.append("desarrolloEmpresa", $("#desarrolloEmpresa").val());
3276    datos.append("nombreProyecto", $("#nombreProyecto").val());
3277    datos.append("reseniaaDesarrollo", $("#reseniaaDesarrollo").val());
3278    datos.append("acuerdosDesarrollo", $("#acuerdosDesarrollo").val());
3279    datos.append("aprobadoProyecto", $("#aprobadoProyecto").val());
3280    datos.append("precioDesarrolloProyecto", $("#precioDesarrolloProyecto").val());
3281    datos.append("tiempoEstimado", $("#tiempoEstimado").val());
3282    datos.append("fechainicioTiempoEstimado", $("#fechainicioTiempoEstimado").val());
3283    datos.append("fechaFinTiempoEstimado", $("#fechaFinTiempoEstimado").val());
3284    datos.append("adicionesDesarrollo", $("#adicionesDesarrollo").val());
3285    datos.append("precioAdicional", $("#precioAdicional").val());
3286    datos.append("tiempoEstimadoAdiciones", $("#tiempoEstimadoAdiciones").val());
3287    datos.append("fechainicioAdiciones", $("#fechainicioAdiciones").val());
3288    datos.append("fechaFinAdiciones", $("#fechaFinAdiciones").val());
3289    datos.append('codPlan', $("#idCodigoPlan_proyecto").val());
3290
3291    $("#btnEditarProyecto").prop("disabled", true);
3292
3293    $.ajax({
3294      url: "ajax/empresas.ajax.php",
3295      type: "POST",
3296      data: datos,
3297      cache: false,
3298      contentType: false,
3299      processData: false,
3300      success: function (respuesta) {
3301        var respuesta = JSON.parse(respuesta);
3302        $("#btnEditarProyecto").prop("disabled", false);
3303        if (respuesta.estado) {
3304          setTimeout(() => {
3305            if (numeroArchivos.length != 0) {
3306              subirArchivoComprobantePagoComprobante()
3307
3308            } else {
3309              location.reload();
3310              toastr.success("Proyecto Editado correctamente !");
3311            }
3312          }, 1000);
3313        } else {
3314          toastr.error("Error al crear un Proyecto!");
3315          setTimeout(() => {
3316            location.reload();
3317          }, 1000);
3318        }
3319      },
3320    });
3321
3322  });
3323
3324
3325
3326
3327
3328
3329  async function subirArchivoComprobantePagoComprobante() {
3330    let parametros = new FormData();
3331    var numeroArchivos = $("#comprobanteArchivoPago_proyecto")[0].files;
3332    var codPlan = $("#idCodigoPlan_proyecto").val();
3333    var numcomprobante = $("#numeropago_solicitudSJ_proyecto").val().trim();
3334    var bancocomprobante = $("#bancopago_solicitudSJ_proyecto").val().trim();
3335    var valorcomprobante = $("#valorcomprobante_proyecto").val().trim();
3336    var observacioncomprobante = $("#observacioncomprobante_proyecto").val().trim();
3337    var fechacomprobante = $("#fechacomprobante_proyecto").val().trim();
3338
3339    if (bancocomprobante == '1') {
3340      bancocomprobante = 'BANCO PICHINCHA';
3341    } else {
3342      bancocomprobante = 'BANCO DEL PACÍFICO';
3343    }
3344
3345    if (fechacomprobante == '') {
3346      toastr.info("Ingrese la fecha de pago");
3347      $("#btnEditarProyecto").prop("disabled", false);
3348      return;
3349    }
3350    if (valorcomprobante == '') {
3351      toastr.info("Ingrese el valor de pago");
3352      $("#btnEditarProyecto").prop("disabled", false);
3353      return;
3354    }
3355    if (bancocomprobante == '') {
3356      toastr.info("Ingrese la fecha de pago");
3357      $("#btnEditarProyecto").prop("disabled", false);
3358      return;
3359    }
3360    if (numcomprobante == '') {
3361      toastr.info("Ingrese el número de comprobante");
3362      $("#btnEditarProyecto").prop("disabled", false);
3363      return;
3364    }
3365    if (numeroArchivos.length != 0) {
3366      if (numeroArchivos[0].type == "application/pdf" || numeroArchivos[0].type == "image/png" || numeroArchivos[0].type == "image/jpeg") {
3367        parametros.append('archivoComprobante', numeroArchivos[0]);
3368      } else {
3369        toastr.info("El documento cargado debe ser una Imagen o PDF");
3370        $("#btnEditarProyecto").prop("disabled", false);
3371
3372        return false;
3373      }
3374    } else {
3375      $("#btnEditarProyecto").prop("disabled", false);
3376      toastr.info("Cargue el documento pdf o imagen del comprobante de pago");
3377      return false;
3378    }
3379
3380    let jsonCliente = [];
3381
3382    let facturarEmpresa = document.getElementById('facturarEmpresaMisDatos_proyecto').value;
3383
3384    if (facturarEmpresa == 0) {
3385      toastr.info("Seleccione los datos de factura", "Importante", { timeOut: 3000 });
3386      $("#btnEditarProyecto").prop("disabled", false);
3387      return;
3388    }
3389
3390    if (facturarEmpresa == 1) {
3391      facturarEmpresa = true;
3392      if ($("#identificacion_contador_proyecto1").val() == "") {
3393        toastr.info("Ingrese la identificación del contador", "Importante", { timeOut: 3000 });
3394        $("#btnEditarProyecto").prop("disabled", false);
3395        return;
3396      }
3397
3398      if ($("#nombre_contador_proyecto1").val() == "") {
3399        toastr.info("Ingrese el nombre del contador", "Importante", { timeOut: 3000 });
3400        $("#btnEditarProyecto").prop("disabled", false);
3401        return;
3402      }
3403      if ($("#direcion_contador_proyecto1").val() == "") {
3404        toastr.info("Ingrese la dirección del contador", "Importante", { timeOut: 3000 });
3405        $("#btnEditarProyecto").prop("disabled", false);
3406        return;
3407      }
3408      if ($("#telefono_contador_proyecto1").val() == "") {
3409        toastr.info("ngrese el telefono del contador", "Importante", { timeOut: 3000 });
3410        $("#btnEditarProyecto").prop("disabled", false);
3411        return;
3412      }
3413      if ($("#correo_contador_proyecto1").val() == "") {
3414        toastr.info("Ingrese el correo del contador", "Importante", { timeOut: 3000 });
3415        $("#btnEditarProyecto").prop("disabled", false);
3416        return;
3417      }
3418
3419    } else {
3420      facturarEmpresa = false;
3421      if ($("#identificacion_cliente_proyecto1").val() == "") {
3422        toastr.info("Ingrese la identificación del cliente para facturar", "Importante", { timeOut: 3000 });
3423        $("#btnEditarProyecto").prop("disabled", false);
3424        return;
3425      }
3426
3427      if ($("#nombre_cliente_proyecto1").val() == "") {
3428        toastr.info("Ingrese el nombre del cliente para facturar", "Importante", { timeOut: 3000 });
3429        $("#btnEditarProyecto").prop("disabled", false);
3430        return;
3431      }
3432      if ($("#direccion_cliente_proyecto1").val() == "") {
3433        toastr.info("Ingrese la dirección del cliente para facturar", "Importante", { timeOut: 3000 });
3434        $("#btnEditarProyecto").prop("disabled", false);
3435        return;
3436      }
3437      if ($("#telefono_cliente_proyecto1").val() == "") {
3438        toastr.info("Ingrese el teléfono del cliente para facturar", "Importante", { timeOut: 3000 });
3439        $("#btnEditarProyecto").prop("disabled", false);
3440        return;
3441      }
3442      if ($("#correo_cliente_proyecto1").val() == "") {
3443        toastr.info("Ingrese el correo del cliente para facturar", "Importante", { timeOut: 3000 });
3444        $("#btnEditarProyecto").prop("disabled", false);
3445        return;
3446      }
3447    }
3448
3449
3450
3451
3452    jsonCliente.push({
3453      identificacion_cliente: document.getElementById('identificacion_cliente_proyecto1').value,
3454      nombre_cliente: document.getElementById('nombre_cliente_proyecto1').value,
3455      direccion_cliente: document.getElementById('direccion_cliente_proyecto1').value,
3456      telefono_cliente: document.getElementById('telefono_cliente_proyecto1').value,
3457      correo_cliente: document.getElementById('correo_cliente_proyecto1').value,
3458      observacion_cliente: document.getElementById('observacioncomprobante_proyecto').value,
3459      facturarConMisDatos: facturarEmpresa,
3460      identificacion_contador: document.getElementById('identificacion_contador_proyecto1').value,
3461      nombre_contador: document.getElementById('nombre_contador_proyecto1').value,
3462      direcion_contador: document.getElementById('direcion_contador_proyecto1').value,
3463      telefono_contador: document.getElementById('telefono_contador_proyecto1').value,
3464      correo_contador: document.getElementById('correo_contador_proyecto1').value,
3465      totalFactura: document.getElementById('valorcomprobante_proyecto').value,
3466      fechapago_solicitudSJ: document.getElementById('fechacomprobante_proyecto').value,
3467      bancopago_solicitudSJ: document.getElementById('bancopago_solicitudSJ_proyecto').value,
3468      numeropago_solicitudSJ: document.getElementById('numeropago_solicitudSJ_proyecto').value,
3469    });
3470
3471
3472
3473    parametros.append('guardarPagoProyecto', true);
3474    parametros.append('codPlan', codPlan);
3475    parametros.append('comprobante', numcomprobante);
3476    parametros.append('bancocomprobante', bancocomprobante);
3477    parametros.append('valorcomprobante', valorcomprobante);
3478    parametros.append('observacioncomprobante', observacioncomprobante);
3479    parametros.append('fechacomprobante', fechacomprobante);
3480    parametros.append("jsonCliente", JSON.stringify(jsonCliente));
3481
3482
3483    const resultado = await fetch("ajax/planes/planfacturero.ajax.php", {
3484      method: "POST",
3485      body: parametros,
3486    });
3487    const datos = await resultado.json();
3488
3489    if (datos.estado) {
3490      toastr.success(datos.mensaje);
3491      setTimeout(() => {
3492        location.reload();
3493      }, 2000);
3494
3495    } else {
3496      toastr.error(datos.mensaje);
3497      setTimeout(() => {
3498        location.reload();
3499      }, 2000);
3500    }
3501
3502  }
3503
3504  if (window.location.href.indexOf("empresas") > -1) {
3505    document.addEventListener('DOMContentLoaded', () => {
3506      let currentStep = 0;
3507      const steps = document.querySelectorAll(".step");
3508      const contents = document.querySelectorAll(".step-content");
3509      const prevBtn = document.getElementById("prevBtnProyectos");
3510      const nextBtn = document.getElementById("nextBtnProyectos");
3511      let guardarBtn = document.getElementById("btnEditarProyecto");
3512
3513      function goToStep(stepIndex) {
3514        currentStep = stepIndex;
3515        steps.forEach((step, index) => {
3516          step.classList.remove("active", "completed");
3517          if (index < stepIndex) step.classList.add("completed");
3518          if (index === stepIndex) step.classList.add("active");
3519        });
3520
3521        contents.forEach((content, index) => {
3522          content.classList.toggle("active", index === stepIndex);
3523        });
3524
3525        prevBtn.disabled = stepIndex === 0;
3526
3527        if (stepIndex === steps.length - 1) {
3528          nextBtn.style.display = "none";
3529          guardarBtn.style.display = "inline-block";
3530        } else {
3531          nextBtn.style.display = "inline-block";
3532          guardarBtn.style.display = "none";
3533        }
3534      }
3535
3536
3537      steps.forEach((step, index) => {
3538        step.addEventListener("click", () => goToStep(index));
3539      });
3540
3541      nextBtn.addEventListener("click", () => {
3542        if (currentStep < steps.length - 1) {
3543          goToStep(currentStep + 1);
3544        } else {
3545          alert("Formulario finalizado");
3546        }
3547      });
3548
3549      prevBtn.addEventListener("click", () => {
3550        if (currentStep > 0) {
3551          goToStep(currentStep - 1);
3552        }
3553      });
3554
3555      document.getElementById("btnFactMisDatos_proyecto").addEventListener("click", () => {
3556        obtenerInformacionPerfil();
3557        const btnMisDatos = document.getElementById("btnFactMisDatos_proyecto");
3558        btnMisDatos.innerHTML = '<i class="fas fa-check-circle text-success"></i> <b>Facturar con mis datos</b>';
3559        btnMisDatos.style.color = "#2cd07e";
3560        btnMisDatos.style.borderColor = "#2cd07e";
3561
3562        const btnDatosCli = document.getElementById("btnFactDatosCli_proyecto");
3563        btnDatosCli.innerHTML = '<b>Facturar con otros datos</b>';
3564        btnDatosCli.style.color = "#707cd2";
3565        btnDatosCli.style.borderColor = "#707cd2";
3566
3567        $("#misDatos_proyecto").show();
3568        $("#datosCliente_proyecto").hide();
3569        document.getElementById("seleccionarDatosFacturar_proyecto").value = 1;
3570        document.getElementById("facturarEmpresaMisDatos_proyecto").value = 1;
3571      });
3572
3573      document.getElementById("btnFactDatosCli_proyecto").addEventListener("click", () => {
3574        const btnMisDatos = document.getElementById("btnFactMisDatos_proyecto");
3575        btnMisDatos.innerHTML = '<b>Facturar con mis datos</b>';
3576        btnMisDatos.style.color = "#707cd2";
3577        btnMisDatos.style.borderColor = "#707cd2";
3578
3579
3580        const btnDatosCli = document.getElementById("btnFactDatosCli_proyecto");
3581        btnDatosCli.innerHTML = '<i class="fas fa-check-circle text-success"></i> <b>Facturar con otros datos</b>';
3582        btnDatosCli.style.color = "#2cd07e";
3583        btnDatosCli.style.borderColor = "#2cd07e";
3584
3585        $("#misDatos_proyecto").hide();
3586        $("#datosCliente_proyecto").show();
3587        document.getElementById("seleccionarDatosFacturar_proyecto").value = 1;
3588        document.getElementById("facturarEmpresaMisDatos_proyecto").value = 2;
3589      });
3590
3591
3592      document.getElementById("btnFactMisDatos_proyecto1").addEventListener("click", () => {
3593        obtenerInformacionPerfil();
3594        const btnMisDatos = document.getElementById("btnFactMisDatos_proyecto1");
3595        btnMisDatos.innerHTML = '<i class="fas fa-check-circle text-success"></i> <b>Facturar con mis datos</b>';
3596        btnMisDatos.style.color = "#2cd07e";
3597        btnMisDatos.style.borderColor = "#2cd07e";
3598
3599        const btnDatosCli = document.getElementById("btnFactDatosCli_proyecto1");
3600        btnDatosCli.innerHTML = '<b>Facturar con otros datos</b>';
3601        btnDatosCli.style.color = "#707cd2";
3602        btnDatosCli.style.borderColor = "#707cd2";
3603
3604        $("#misDatos_proyecto1").show();
3605        $("#datosCliente_proyecto1").hide();
3606        document.getElementById("seleccionarDatosFacturar_proyecto1").value = 1;
3607        document.getElementById("facturarEmpresaMisDatos_proyecto1").value = 1;
3608      });
3609
3610      document.getElementById("btnFactDatosCli_proyecto1").addEventListener("click", () => {
3611        const btnMisDatos = document.getElementById("btnFactMisDatos_proyecto1");
3612        btnMisDatos.innerHTML = '<b>Facturar con mis datos</b>';
3613        btnMisDatos.style.color = "#707cd2";
3614        btnMisDatos.style.borderColor = "#707cd2";
3615
3616
3617        const btnDatosCli = document.getElementById("btnFactDatosCli_proyecto1");
3618        btnDatosCli.innerHTML = '<i class="fas fa-check-circle text-success"></i> <b>Facturar con otros datos</b>';
3619        btnDatosCli.style.color = "#2cd07e";
3620        btnDatosCli.style.borderColor = "#2cd07e";
3621
3622        $("#misDatos_proyecto1").hide();
3623        $("#datosCliente_proyecto1").show();
3624        document.getElementById("seleccionarDatosFacturar_proyecto1").value = 1;
3625        document.getElementById("facturarEmpresaMisDatos_proyecto1").value = 2;
3626      });
3627
3628      document.getElementById("fechainicioTiempoEstimado").addEventListener("change", calcularTiempoEstimado);
3629      document.getElementById("fechaFinTiempoEstimado").addEventListener("change", calcularTiempoEstimado);
3630
3631      function calcularTiempoEstimado() {
3632        const fechaInicio = document.getElementById("fechainicioTiempoEstimado").value;
3633        const fechaFin = document.getElementById("fechaFinTiempoEstimado").value;
3634        console.log(fechaInicio);
3635        console.log(fechaFin);
3636        if (fechaInicio && fechaFin) {
3637          const inicio = new Date(fechaInicio);
3638          const fin = new Date(fechaFin);
3639          const diferenciaTiempo = fin - inicio;
3640          const diferenciaDias = diferenciaTiempo / (1000 * 60 * 60 * 24);
3641
3642          let tiempoEstimado = "";
3643          if (diferenciaDias <= 7) {
3644            tiempoEstimado = `${diferenciaDias} día(s)`;
3645          } else {
3646            const semanas = (diferenciaDias / 7).toFixed(1);
3647            tiempoEstimado = `${semanas} semana(s)`;
3648          }
3649
3650          document.getElementById("tiempoEstimado").value = tiempoEstimado;
3651        } else {
3652          document.getElementById("tiempoEstimado").value = "";
3653        }
3654      }
3655
3656      document.getElementById("fechainicioAdiciones").addEventListener("change", calcularTiempoEstimadoAdicionales);
3657      document.getElementById("fechaFinAdiciones").addEventListener("change", calcularTiempoEstimadoAdicionales);
3658
3659
3660      function calcularTiempoEstimadoAdicionales() {
3661        const fechaInicio = document.getElementById("fechainicioAdiciones").value;
3662        const fechaFin = document.getElementById("fechaFinAdiciones").value;
3663
3664        if (fechaInicio && fechaFin) {
3665          const inicio = new Date(fechaInicio);
3666          const fin = new Date(fechaFin);
3667          const diferenciaTiempo = fin - inicio;
3668          const diferenciaDias = diferenciaTiempo / (1000 * 60 * 60 * 24);
3669
3670          let tiempoEstimado = "";
3671          if (diferenciaDias <= 7) {
3672            tiempoEstimado = `${diferenciaDias} día(s)`;
3673          } else {
3674            const semanas = (diferenciaDias / 7).toFixed(1);
3675            tiempoEstimado = `${semanas} semana(s)`;
3676          }
3677
3678          document.getElementById("tiempoEstimadoAdiciones").value = tiempoEstimado;
3679        } else {
3680          document.getElementById("tiempoEstimadoAdiciones").value = "";
3681        }
3682      }
3683
3684      document.getElementById('valorcomprobante_proyecto').addEventListener('blur', function (e) {
3685        let value = e.target.value;
3686        value = value.replace(',', '.');
3687
3688        let number = parseFloat(value);
3689
3690        if (!isNaN(number)) {
3691          e.target.value = number.toFixed(2);
3692        }
3693
3694        document.getElementById('valor_facturar_proyecto').innerHTML = `$ ${e.target.value}`;
3695      });
3696
3697
3698    });
3699
3700
3701  }
3702
3703
3704
3705
3706
3707
3708  $(document).on('click', '.btnHistorialProyectos', function (event) {
3709    var plan = $(this).attr("plan");
3710    window.location.href = "index.php?ruta=historial-abonos-proyectos&plan=" + btoa(plan);
3711  });
3712
3713  /*=============================================
3714       AGREGAR NUEVO PLAN
3715  =============================================*/
3716  if ($('#tipoPlanEmpresa').length) {
3717    var datos = new FormData();
3718    datos.append("validarPlanUsuario", true);
3719    $.ajax({
3720      url: "ajax/usuarios.ajax.php",
3721      type: "POST",
3722      data: datos,
3723      contentType: false,
3724      processData: false,
3725      success: function (respuesta) {
3726
3727        var datos = JSON.parse(respuesta);
3728        if (datos.tipo == "prepago") {
3729          $('#tipoPlanEmpresa').append(new Option("PLAN PREPAGO", "prepago"))
3730        } else {
3731
3732          $('#tipoPlanEmpresa').prop('disabled', true);
3733
3734
3735
3736        }
3737      },
3738    });
3739  }
3740
3741  /*===========================================================
3742   ACTUALIZAR MENSAJE AL CAMBIAR OPCIONES DEL TIPO DE PLAN
3743  ============================================================*/
3744
3745  $('#tipoPlanEmpresa').on('change', function (e) {
3746
3747    var option = $("#tipoPlanEmpresa").val();
3748    var campo = $("#codigoPlan").val();
3749    campo = campo < 50 && campo != "" ? 50 : campo;
3750
3751    if (option == "prepago") {
3752
3753      var datos = new FormData();
3754      datos.append("validarPlanUsuario", true);
3755      $.ajax({
3756        url: "ajax/usuarios.ajax.php",
3757        type: "POST",
3758        data: datos,
3759        contentType: false,
3760        processData: false,
3761        success: function (respuesta) {
3762          var datos = JSON.parse(respuesta);
3763
3764          if (parseInt(datos.cantidad) >= campo) {
3765            $("#campoIngresoPrepago").show();
3766            $("#campoIngresoNormal").hide();
3767            $("#mensaje-info-prepago").show();
3768            $("#mensaje-documentos").show();
3769            $("#mensaje-documentos").addClass("badge-info");
3770            $("#mensaje-documentos").removeClass("badge-danger");
3771            $("#mensaje-documentos").text("Documentos restantes de su Plan Prepago: " + (datos.cantidad - campo));
3772
3773          } else {
3774            $("#campoIngresoPrepago").show();
3775            $("#campoIngresoNormal").hide();
3776            $("#mensaje-info-prepago").show();
3777            $("#mensaje-documentos").show();
3778            $("#mensaje-documentos").removeClass("badge-info");
3779            $("#mensaje-documentos").addClass("badge-danger");
3780            $("#mensaje-documentos").text("La cantidad indicada sobrepasa el total de documentos electrónicos de su Plan Prepago");
3781
3782          }
3783
3784
3785
3786        },
3787      });
3788
3789    }
3790    else {
3791
3792      $("#codigoPlan").val("");
3793      $("#seleccionPlanNormal").val("");
3794      $("#campoIngresoPrepago").hide();
3795      $("#campoIngresoNormal").show();
3796      $("#mensaje-info-prepago").hide();
3797      $("#mensaje-documentos").hide();
3798      $("#mensaje-documentos").text("");
3799
3800
3801
3802    }
3803
3804  });
3805
3806
3807
3808
3809
3810
3811
3812  /*===================================================
3813   ACTUALIZAR MENSAJE AL CAMBIAR CIFRA DE DOCUMENTOS
3814  =====================================================*/
3815
3816  $('#codigoPlan').on('keyup  change paste', function (e) {
3817
3818    var option = $("#tipoPlanEmpresa").val();
3819    var campo = $(this).val();
3820    campo = campo < 50 && campo != "" ? 50 : campo;
3821
3822    if (option == "prepago") {
3823
3824      var datos = new FormData();
3825      datos.append("validarPlanUsuario", true);
3826      $.ajax({
3827        url: "ajax/usuarios.ajax.php",
3828        type: "POST",
3829        data: datos,
3830        contentType: false,
3831        processData: false,
3832        success: function (respuesta) {
3833          var datos = JSON.parse(respuesta);
3834
3835          if (parseInt(datos.cantidad) >= campo) {
3836            $("#mensaje-info-prepago").show();
3837            $("#mensaje-documentos").show();
3838            $("#mensaje-documentos").addClass("badge-info");
3839            $("#mensaje-documentos").removeClass("badge-danger");
3840            $("#mensaje-documentos").text("Documentos restantes de su Plan Prepago: " + (datos.cantidad - campo));
3841
3842
3843
3844          } else {
3845            $("#mensaje-info-prepago").show();
3846            $("#mensaje-documentos").show();
3847            $("#mensaje-documentos").removeClass("badge-info");
3848            $("#mensaje-documentos").addClass("badge-danger");
3849            $("#mensaje-documentos").text("La cantidad indicada sobrepasa el total de documentos electrónicos de su Plan Prepago");
3850          }
3851
3852
3853
3854        },
3855      });
3856
3857    }
3858    else {
3859      $("#mensaje-info-prepago").hide();
3860      $("#mensaje-documentos").hide();
3861      $("#mensaje-documentos").text("");
3862    }
3863
3864  });
3865
3866
3867  /*===================================================
3868   MOSTRAR LA CANTIDAD SOBRANTE DE UN PLAN
3869  =====================================================*/
3870
3871  function mostrarNumeroDocumentosRestantes() {
3872    var datos = new FormData();
3873    datos.append("mostrarDocumentosRestantes", true);
3874    datos.append("plan", $("#identificadorPlan").val());
3875    $.ajax({
3876      url: "ajax/empresas.ajax.php",
3877      type: "POST",
3878      data: datos,
3879      contentType: false,
3880      processData: false,
3881      success: function (respuesta) {
3882        var datos = JSON.parse(respuesta);
3883        var total = (datos.TOTAL) - (datos.DOCUMENTOS);
3884        if (total >= 0) {
3885          $("#totalRestantesPlan").val(total);
3886        } else {
3887          $("#totalRestantesPlan").val(0);
3888        }
3889      },
3890    });
3891
3892  }
3893
3894
3895  $(document).on("click", ".btnEnviarWsppEmpresa", function () {
3896
3897    var usuario = atob($(this).attr("usuario"));
3898    var pass = atob($(this).attr("pass"));
3899    var empresa = $(this).attr("empresa");
3900    var telefono = $(this).attr("telefono");
3901
3902
3903    var mensaje = "%0a%0a" +
3904      "*DESCARGAR* *APP* *CONTAMATIC:*" +
3905      "%0a%0a" +
3906      "*1.-GOOGLE* *PLAY* *(TELÉFONOS* *Y* *TABLETS* *ANDROID)*" +
3907      "%0a" +
3908      "https://play.google.com/store/apps/details?id=com.contamatic.facturacion" +
3909      "%0a%0a" +
3910      "*2.-APP* *STORE* *(TELÉFONOS* *IPHONE* *-* *IPAD)*" +
3911      "%0a" +
3912      "https://apps.apple.com/app/id6443858478" +
3913      "%0a%0a" +
3914      "*3.-HUAWEY* *GALLERY* *(TELÉFONOS* *HUAWEY)*" +
3915      "%0a" +
3916      "https://urldra.cloud.huawei.com/j0s0NlWNAA" +
3917      "%0a%0a" +
3918      "*4.-PC* *-* *SISTEMA* *WEB* *(NAVEGADORES* *WEB)*" +
3919      "%0a" +
3920      "https://facturacion-electronica.contamatic.ec/factumatic/" +
3921      "%0a%0a%0a" +
3922      "GRACIAS POR PREFERINOS. 💪 *CONTAMATIC* *SISTEMA* *CONTABLE* *Y* *FACTURACIÓN* *ELECTRÓNICA*.";
3923
3924
3925
3926
3927    var mensaje = "https://api.whatsapp.com/send?phone=+593" + telefono + "&text=*GRACIAS POR USAR NUESTROS SERVICIOS. SOPORTE CONTAMATIC.  LINK:* https://empresarial.contamatic.ec/sistema%0a*EMPRESA:* " + empresa.replaceAll('&', 'y') + "%0a*USUARIO:* " + usuario + "%0a*CLAVE:* " + pass;
3928
3929    window.open(mensaje, '_blank');
3930
3931  });
3932
3933
3934  $(document).on("click", ".btnEnviarWsppFacturero", function () {
3935
3936    var usuario = atob($(this).attr("usuario"));
3937    var pass = atob($(this).attr("pass"));
3938    var empresa = $(this).attr("empresa");
3939    var telefono = $(this).attr("telefono");
3940
3941
3942    var mensaje = "%0a%0a" +
3943      "*DESCARGAR* *APP* *CONTAMATIC:*" +
3944      "%0a%0a" +
3945      "*1.-GOOGLE* *PLAY* *(TELÉFONOS* *Y* *TABLETS* *ANDROID)*" +
3946      "%0a" +
3947      "https://play.google.com/store/apps/details?id=com.contamatic.facturacion" +
3948      "%0a%0a" +
3949      "*2.-APP* *STORE* *(TELÉFONOS* *IPHONE* *-* *IPAD)*" +
3950      "%0a" +
3951      "https://apps.apple.com/app/id6443858478" +
3952      "%0a%0a" +
3953      "*3.-HUAWEY* *GALLERY* *(TELÉFONOS* *HUAWEY)*" +
3954      "%0a" +
3955      "https://urldra.cloud.huawei.com/j0s0NlWNAA" +
3956      "%0a%0a" +
3957      "*4.-PC* *-* *SISTEMA* *WEB* *(NAVEGADORES* *WEB)*" +
3958      "%0a" +
3959      "https://facturacion-electronica.contamatic.ec/factumatic/" +
3960      "%0a%0a%0a" +
3961      "GRACIAS POR PREFERINOS. 💪 *CONTAMATIC* *SISTEMA* *CONTABLE* *Y* *FACTURACIÓN* *ELECTRÓNICA*.";
3962
3963
3964
3965
3966    var mensaje = "https://api.whatsapp.com/send?phone=+593" + telefono + "&text=*GRACIAS POR USAR NUESTROS SERVICIOS. SOPORTE CONTAMATIC.  LINK:* https://facturacion-electronica.contamatic.ec/factumatic%0a*EMPRESA:* " + empresa.replaceAll('&', 'y') + "%0a*USUARIO:* " + encodeURIComponent(usuario) + "%0a*CLAVE:* " + encodeURIComponent(pass);
3967
3968    window.open(mensaje, '_blank');
3969
3970  });
3971
3972
3973  $(document).on("click", ".btnEnviarWsppFactureroApp", function () {
3974
3975    var usuario = atob($(this).attr("usuario"));
3976    var pass = atob($(this).attr("pass"));
3977    var empresa = $(this).attr("empresa");
3978    var telefono = $(this).attr("telefono");
3979
3980
3981    var mensaje = "%0a%0a" +
3982      "*DESCARGAR* *APP* *CONTAMATIC:*" +
3983      "%0a%0a" +
3984      "*1.-GOOGLE* *PLAY* *(TELÉFONOS* *Y* *TABLETS* *ANDROID)*" +
3985      "%0a" +
3986      "https://play.google.com/store/apps/details?id=com.contamatic.facturacion" +
3987      "%0a%0a" +
3988      "*2.-APP* *STORE* *(TELÉFONOS* *IPHONE* *-* *IPAD)*" +
3989      "%0a" +
3990      "https://apps.apple.com/app/id6443858478" +
3991      "%0a%0a" +
3992      "*3.-HUAWEY* *GALLERY* *(TELÉFONOS* *HUAWEY)*" +
3993      "%0a" +
3994      "https://urldra.cloud.huawei.com/j0s0NlWNAA" +
3995      "%0a%0a" +
3996      "*4.-PC* *-* *SISTEMA* *WEB* *(NAVEGADORES* *WEB)*" +
3997      "%0a" +
3998      "https://facturacion-electronica.contamatic.ec/factumatic/" +
3999      "%0a%0a%0a" +
4000      "GRACIAS POR PREFERINOS. 💪 *CONTAMATIC* *SISTEMA* *CONTABLE* *Y* *FACTURACIÓN* *ELECTRÓNICA*.";
4001
4002
4003
4004
4005    var mensaje = "https://api.whatsapp.com/send?phone=+593" + telefono + "&text=*GRACIAS POR USAR NUESTROS SERVICIOS. SOPORTE CONTAMATIC.  LINK:* https://facturalo.com.ec/sistema%0a*EMPRESA:* " + empresa.replaceAll('&', 'y') + "%0a*USUARIO:* " + encodeURIComponent(usuario) + "%0a*CLAVE:* " + encodeURIComponent(pass);
4006
4007    window.open(mensaje, '_blank');
4008
4009  });
4010
4011
4012
4013
4014  $(document).on("click", ".btnEnviarWsppEmpresaContable", function () {
4015
4016    let usuario = atob($(this).attr("usuario"));
4017    let pass = atob($(this).attr("clave"));
4018    let empresa = $(this).attr("empresa");
4019    let telefono = $(this).attr("telefono");
4020    let mensaje = "https://api.whatsapp.com/send?phone=+593" + telefono + "&text=*GRACIAS POR USAR NUESTROS SERVICIOS. SOPORTE CONTAMATIC.  LINK:* https://empresarial.contamatic.ec/sistema%0a*EMPRESA:* " + empresa.replaceAll('&', 'y') + "%0a*USUARIO:* " + encodeURIComponent(usuario) + "%0a*CLAVE:* " + encodeURIComponent(pass);
4021
4022    window.open(mensaje, '_blank');
4023
4024  });
4025
4026
4027  $(document).on("click", ".btnEnviarCredenciales", async function () {
4028
4029    let usuario = $(this).attr("usuario");
4030    let pass = $(this).attr("clave");
4031    let empresa = $(this).attr("empresa");
4032    let ruc = $(this).attr("ruc");
4033    let correo = $(this).attr("correo");
4034
4035    let parametros = new FormData();
4036    parametros.append("envioCredenciales", true);
4037    parametros.append("correo", correo);
4038    parametros.append("usuario", usuario);
4039    parametros.append("pass", pass);
4040    parametros.append("empresa", empresa);
4041    parametros.append("ruc", ruc);
4042    parametros.append("url", 'https://empresarial.contamatic.ec/sistema/');
4043    toastr.success("Enviando correo");
4044    const resultado = await fetch("ajax/firma/solicitud.ajax.php", {
4045      method: "POST",
4046      body: parametros,
4047    });
4048
4049    if (!resultado.ok) {
4050      throw new Error(`Error en peticion HTTP: ${resultado.status}`);
4051    }
4052    const datos = await resultado.json();
4053
4054    if (!datos.operacion) {
4055      toastr.error("Error al enviar correo electronico");
4056    }
4057
4058    toastr.success("Correo enviado correctamente");
4059  });
4060
4061}
4062
4063if (window.location.href.indexOf("crearEmpresa") > -1 || window.location.href.indexOf("crear-empresa-contable") > -1) {
4064
4065  /* -------------------------------------------------------------------------- */
4066  /*                   TRAER DATOS DE LA EMPRESA                                */
4067  /* -------------------------------------------------------------------------- */
4068
4069  let currentStep = 0;
4070  const steps = document.querySelectorAll(".step");
4071  const contents = document.querySelectorAll(".step-content");
4072  const prevBtn = document.getElementById("prevBtn");
4073  const nextBtn = document.getElementById("nextBtn");
4074  let guardarBtn;
4075
4076  if (window.location.href.indexOf("crearEmpresa") > -1) {
4077    guardarBtn = document.getElementById("guardarEmpresa");
4078  } else if (window.location.href.indexOf("crear-empresa-contable") > -1) {
4079    guardarBtn = document.getElementById("guardarEmpresaContamatic");
4080  }
4081
4082  function goToStep(stepIndex) {
4083    currentStep = stepIndex;
4084    steps.forEach((step, index) => {
4085      step.classList.remove("active", "completed");
4086      if (index < stepIndex) step.classList.add("completed");
4087      if (index === stepIndex) step.classList.add("active");
4088    });
4089
4090    contents.forEach((content, index) => {
4091      content.classList.toggle("active", index === stepIndex);
4092    });
4093
4094    prevBtn.disabled = stepIndex === 0;
4095
4096    if (stepIndex === steps.length - 1) {
4097      nextBtn.style.display = "none";
4098      guardarBtn.style.display = "inline-block";
4099    } else {
4100      nextBtn.style.display = "inline-block";
4101      guardarBtn.style.display = "none";
4102    }
4103  }
4104
4105
4106  steps.forEach((step, index) => {
4107    step.addEventListener("click", () => goToStep(index));
4108  });
4109
4110  nextBtn.addEventListener("click", () => {
4111    if (currentStep < steps.length - 1) {
4112      goToStep(currentStep + 1);
4113    } else {
4114      alert("Formulario finalizado");
4115    }
4116  });
4117
4118  prevBtn.addEventListener("click", () => {
4119    if (currentStep > 0) {
4120      goToStep(currentStep - 1);
4121    }
4122  });
4123
4124
4125  $(document).on("click", "#informacionRuc", function () {
4126
4127
4128    var ruc = $("#ruc").val();
4129    var datos = new FormData();
4130
4131    datos.append("buscarRuc", true);
4132    datos.append("ruc", ruc);
4133    toastr.info("Consultando la información");
4134    $.ajax({
4135      url: "ajax/empresas_v2.ajax.php",
4136      type: "POST",
4137      data: datos,
4138      cache: false,
4139      contentType: false,
4140      processData: false,
4141      dataType: "json",
4142      timeout: 10000,
4143
4144      success: function (respuesta) {
4145        console.log(respuesta);
4146        if (respuesta["estado"] == "ok") {
4147          toastr.success("Datos consultados correctamente");
4148          $("#razon").val(respuesta["razonsocial"]);
4149          $("#nombreComercial").val(respuesta["razonsocial"])
4150          $("#nombreMostrar").val(respuesta["razonsocial"])
4151          $("#nombre_cliente").val(respuesta["razonsocial"])
4152          $("#idRepresentante").val(respuesta[""])
4153          $("#nombreRepresentante").val(respuesta[""])
4154          $("#idContador").val(respuesta[""])
4155          $("#nombreContador").val(respuesta[""])
4156          $("#identificacionUsuarioEmpresa").val(respuesta[""])
4157          $("#nombresUsuarioEmpresa").val(respuesta[""])
4158        } else {
4159          toastr.info("No fue posible obtener información, intente nuevamente");
4160        }
4161
4162      },
4163      error: function (request, status, error) {
4164
4165        toastr.success("El servicio de información se encuentra en mantenimiento");
4166
4167      }
4168    });
4169  });
4170
4171
4172  $(document).on('keyup', '#ruc', function () {
4173
4174    var valor = $(this).val()
4175
4176    $("#usuarioEmpresa").val(valor);
4177  });
4178
4179  $(document).on('keyup', '#idRepresentante', function () {
4180
4181    var valor = $(this).val()
4182    $("#identificacionUsuarioEmpresa").val(valor);
4183
4184  });
4185
4186  $(document).on('keyup', '#nombreRepresentante', function () {
4187    var valor = $(this).val()
4188    $("#nombresUsuarioEmpresa").val(valor);
4189  });
4190
4191  $(document).on('keyup', '#nombreComercial', function () {
4192    var valor = $(this).val()
4193    var fecha = new Date();
4194
4195
4196    var texto = valor.toLowerCase();
4197    var textoseparado = texto.split(" ");
4198
4199    //NICK
4200    var palabra = textoseparado[0];
4201    var ano = fecha.getFullYear();
4202
4203    var nick = palabra + ano;
4204
4205    $("#passwordCodificar").val(nick);
4206
4207  });
4208
4209  $(document).on('click', '#mostrarPassword', function () {
4210    var tipo = document.getElementById("passwordCodificar");
4211
4212    if (tipo.type == "password") {
4213      var input = $('#pass').attr('type');
4214      // alert (input);
4215      $('#passwordCodificar').attr('type', 'text');
4216      $('#mostrarPassword').text('OCULTAR');
4217    } else {
4218      var input = $('#pass').attr('type');
4219      // alert (input);
4220      $('#passwordCodificar').attr('type', 'password');
4221      $('#mostrarPassword').text('MOSTRAR');
4222    }
4223  });
4224
4225
4226
4227
4228
4229
4230}
4231
4232
4233if (window.location.href.indexOf("historial-planes") > -1) {
4234
4235  $(document).ready(function () {
4236    const parametrosURL = new URLSearchParams(window.location.search);
4237    const empresaPlan = parametrosURL.get('plan');
4238    const sistemaplan = parametrosURL.get('sistema');
4239
4240    if (empresaPlan == null) {
4241      window.location.href = "empresas";
4242    } else {
4243
4244      if (sistemaplan === 'facturalo') {
4245        $('.tablaHistorialPlanes').DataTable({
4246          //"ajax": "ajax/datatable-empresas.ajax.php",
4247          "ajax": {
4248            'url': 'ajax/datatable-empresas.ajax.php',
4249            'data': { 'listarHistorialPlanesVendeFacil': true, 'empresaPlan': empresaPlan },
4250            'type': 'post'
4251          },
4252          "columnDefs": [
4253            {
4254              targets: [5], // Índice de la columna (segunda columna en este caso)
4255              className: 'text-center' // Clase CSS para centrar el texto
4256            }
4257          ],
4258          "deferRender": true,
4259          "retrieve": true,
4260          "processing": true,
4261          "columnDefs": [{
4262            targets: "_all",
4263            sortable: false
4264          }],
4265          "columns": [
4266            { data: 'codigo' },
4267            { data: 'tipoplan' },
4268            { data: 'plan' },
4269            { data: 'detalle' },
4270            { data: 'verifica' },
4271            { data: 'comprobante' },
4272            { data: 'facturado' },
4273            { data: 'observacion' },
4274            { data: 'opciones' },
4275          ],
4276          "language": {
4277
4278            "sProcessing": "Procesando...",
4279            "sLengthMenu": "Mostrar _MENU_ registros",
4280            "sZeroRecords": "No se encontraron resultados",
4281            "sEmptyTable": "Ningún dato disponible en esta tabla",
4282            "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_",
4283            "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0",
4284            "sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
4285            "sInfoPostFix": "",
4286            "sSearch": "Buscar:",
4287            "sUrl": "",
4288            "sInfoThousands": ",",
4289            "sLoadingRecords": "Cargando...",
4290            "oPaginate": {
4291              "sFirst": "Primero",
4292              "sLast": "Último",
4293              "sNext": "Siguiente",
4294              "sPrevious": "Anterior"
4295            },
4296            "oAria": {
4297              "sSortAscending": ": Activar para ordenar la columna de manera ascendente",
4298              "sSortDescending": ": Activar para ordenar la columna de manera descendente"
4299            },
4300
4301          }
4302        });
4303
4304      } else {
4305        $('.tablaHistorialPlanes').DataTable({
4306          //"ajax": "ajax/datatable-empresas.ajax.php",
4307          "ajax": {
4308            'url': 'ajax/datatable-empresas.ajax.php',
4309            'data': { 'listarHistorialPlanes': true, 'empresaPlan': empresaPlan },
4310            'type': 'post'
4311          },
4312          "deferRender": true,
4313          "retrieve": true,
4314          "processing": true,
4315          "columnDefs": [
4316            {
4317              targets: [5], // Índice de la columna (segunda columna en este caso)
4318              className: 'text-center' // Clase CSS para centrar el texto
4319            }
4320          ],
4321          "columns": [
4322            { data: 'codigo' },
4323            { data: 'tipoplan' },
4324            { data: 'plan' },
4325            { data: 'detalle' },
4326            { data: 'verifica' },
4327            { data: 'comprobante' },
4328            { data: 'facturado' },
4329            { data: 'observacion' },
4330            { data: 'opciones' },
4331          ],
4332          "language": {
4333
4334            "sProcessing": "Procesando...",
4335            "sLengthMenu": "Mostrar _MENU_ registros",
4336            "sZeroRecords": "No se encontraron resultados",
4337            "sEmptyTable": "Ningún dato disponible en esta tabla",
4338            "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_",
4339            "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0",
4340            "sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
4341            "sInfoPostFix": "",
4342            "sSearch": "Buscar:",
4343            "sUrl": "",
4344            "sInfoThousands": ",",
4345            "sLoadingRecords": "Cargando...",
4346            "oPaginate": {
4347              "sFirst": "Primero",
4348              "sLast": "Último",
4349              "sNext": "Siguiente",
4350              "sPrevious": "Anterior"
4351            },
4352            "oAria": {
4353              "sSortAscending": ": Activar para ordenar la columna de manera ascendente",
4354              "sSortDescending": ": Activar para ordenar la columna de manera descendente"
4355            },
4356
4357          },
4358          dom: 'Bfrtip',
4359          buttons: [
4360
4361            {
4362              extend: 'excel',
4363              title: 'Lista de usuarios',
4364              exportOptions: {
4365                modifier: {
4366                  // DataTables core
4367                  order: 'index', // 'current', 'applied',
4368                  //'index', 'original'
4369                  page: 'all', // 'all', 'current'
4370                  search: 'none' // 'none', 'applied', 'removed'
4371                },
4372                columns: [0, 1, 2, 3, 4, 5]
4373              }
4374
4375            },
4376            {
4377              extend: 'pdfHtml5',
4378              text: 'PDF',
4379              title: 'Lista de Usuarios',
4380              customize: function (doc) {
4381                doc.styles.tableHeader.alignment = 'left'; //giustifica a sinistra titoli colonne
4382                doc.content[1].table.alignment = 'center';
4383                doc.content[1].table.widths = [90, 220, 90, 90]; //costringe le colonne ad occupare un dato spazio per gestire il baco del 100% width che non si concretizza mai
4384              },
4385              exportOptions: {
4386
4387                columns: [0, 1, 2, 3, 4, 5]
4388              },
4389              className: "text-center",
4390
4391            },
4392
4393            {
4394              extend: 'print',
4395              text: 'Imprimir',
4396              title: 'Lista de Usuarios',
4397              exportOptions: {
4398                modifier: {
4399                  // DataTables core
4400                  order: 'index', // 'current', 'applied',
4401                  //'index', 'original'
4402                  page: 'all', // 'all', 'current'
4403                  search: 'none' // 'none', 'applied', 'removed'
4404                },
4405                columns: [0, 1, 2, 3, 4, 5]
4406              }
4407            }
4408          ]
4409
4410        });
4411      }
4412
4413    }
4414  });
4415
4416}
4417
4418if (window.location.href.indexOf("historial-planes-imprenta") > -1) {
4419
4420  $(document).ready(function () {
4421    const parametrosURL = new URLSearchParams(window.location.search);
4422    const empresaPlan = parametrosURL.get('plan');
4423
4424    if (empresaPlan == null) {
4425      window.location.href = "empresas";
4426    } else {
4427      $('.tablaHistorialPlanesImprenta').DataTable({
4428        //"ajax": "ajax/datatable-empresas.ajax.php",
4429        "ajax": {
4430          'url': 'ajax/datatable-empresas.ajax.php',
4431          'data': { 'listarHistorialPlanesImprenta': true, 'usuario': empresaPlan },
4432          'type': 'post'
4433        },
4434        "deferRender": true,
4435        "retrieve": true,
4436        "processing": true,
4437        "columnDefs": [{
4438          targets: "_all",
4439          sortable: false
4440        }],
4441        "columns": [
4442          { data: 'codigo' },
4443          { data: 'tipoplan' },
4444          { data: 'plan' },
4445          { data: 'detalle' },
4446          { data: 'comprobante' },
4447          { data: 'estado' },
4448          { data: 'facturado' },
4449          { data: 'observacion' },
4450          { data: 'opciones' },
4451        ],
4452        order: [[1, 'desc']],
4453        "language": {
4454
4455          "sProcessing": "Procesando...",
4456          "sLengthMenu": "Mostrar _MENU_ registros",
4457          "sZeroRecords": "No se encontraron resultados",
4458          "sEmptyTable": "Ningún dato disponible en esta tabla",
4459          "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_",
4460          "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0",
4461          "sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
4462          "sInfoPostFix": "",
4463          "sSearch": "Buscar:",
4464          "sUrl": "",
4465          "sInfoThousands": ",",
4466          "sLoadingRecords": "Cargando...",
4467          "oPaginate": {
4468            "sFirst": "Primero",
4469            "sLast": "Último",
4470            "sNext": "Siguiente",
4471            "sPrevious": "Anterior"
4472          },
4473          "oAria": {
4474            "sSortAscending": ": Activar para ordenar la columna de manera ascendente",
4475            "sSortDescending": ": Activar para ordenar la columna de manera descendente"
4476          },
4477
4478        },
4479        dom: 'Bfrtip',
4480        buttons: [
4481
4482          {
4483            extend: 'excel',
4484            title: 'Lista de usuarios',
4485            className: 'dt-button buttons-excel buttons-html5 btn btn-success',
4486            exportOptions: {
4487              modifier: {
4488                // DataTables core
4489                order: 'index', // 'current', 'applied',
4490                //'index', 'original'
4491                page: 'all', // 'all', 'current'
4492                search: 'none' // 'none', 'applied', 'removed'
4493              },
4494              columns: [0, 1, 2, 3, 4, 5, 6]
4495            }
4496
4497          }
4498        ]
4499
4500      });
4501    }
4502  });
4503
4504  $(document).on("click", ".btnEliminarComprobantePlanImprenta", function () {
4505
4506
4507    var codplan = $(this).attr("plan");
4508    var usuario = $(this).attr("planEmpresa");
4509    var documento = $(this).attr("documento");
4510
4511    var datos = new FormData();
4512
4513    datos.append("eliminarComprobantePagoUsuario", true);
4514    datos.append("codPlan", codplan);
4515    datos.append("usuario", usuario);
4516    datos.append("documento", documento);
4517
4518
4519
4520    swal({
4521      title: '¿Está seguro de eliminar el comprobante de pago?',
4522      text: "¡Si no lo está puede cancelar la accíón!",
4523      type: 'warning',
4524      showCancelButton: true,
4525      confirmButtonColor: '#3085d6',
4526      cancelButtonColor: '#d33',
4527      cancelButtonText: 'Cancelar',
4528      confirmButtonText: 'Si, eliminar comprobante!'
4529    }).then(function (result) {
4530
4531      if (result.value) {
4532
4533        $.ajax({
4534          url: "ajax/usuarios.ajax.php",
4535          type: "POST",
4536          data: datos,
4537          cache: false,
4538          contentType: false,
4539          processData: false,
4540
4541
4542          success: function (respuesta) {
4543
4544            if (respuesta.trim() == 'ok') {
4545              toastr.success('Comprobante eliminado con éxito');
4546            } else {
4547              toastr.info('Error al generar eliminar comprobante, contacte con el administrador!');
4548            }
4549            $('.tablaHistorialPlanesImprenta').DataTable().ajax.reload();
4550          }
4551        })
4552
4553      }
4554
4555    })
4556  });
4557
4558
4559
4560  $(document).on('click', '.btnHistorialAbonos', function (event) {
4561    var plan = $(this).attr("plan");
4562    window.location.href = "index.php?ruta=historial-abonos-imprenta&plan=" + plan;
4563  });
4564
4565
4566  $(document).on('click', '.btnAbonar', function (event) {
4567    var plan = $(this).attr("plan");
4568    var usuario = $(this).attr("planempresa");
4569
4570    $("#codPlan-abono").val(plan);
4571    $("#codPlanEmpresa-abono").val(usuario);
4572    $("#modalAgregarPagoPlanAbonar").modal("show");
4573  });
4574
4575
4576  async function postRequest($url, parametros) {
4577    try {
4578      const resultado = await fetch($url, {
4579        method: 'POST',
4580        body: parametros
4581      });
4582      const datos = await resultado.json();
4583      return datos;
4584    } catch (error) {
4585      throw error;
4586    }
4587  }
4588
4589  async function obtenerInformacionPerfil() {
4590
4591    let url = 'ajax/facturacion/facturacion.ajax.php';
4592    let parametros = new FormData();
4593    parametros.append("informacionPerfil", true);
4594
4595    try {
4596      let resultado = await postRequest(url, parametros);
4597      if (resultado && resultado.operacion) {
4598        document.getElementById('identificacion_contador_imprenta').value = resultado.data.identificacion;
4599        document.getElementById('nombre_contador_imprenta').value = resultado.data.nombre;
4600        document.getElementById('direcion_contador_imprenta').value = resultado.data.direccion;
4601        document.getElementById('telefono_contador_imprenta').value = resultado.data.telefono;
4602        document.getElementById('correo_contador_imprenta').value = resultado.data.email;
4603        $("#btnFactMisDatosImprenta").prop('checked', true);
4604      } else {
4605        toastr.error(resultado ? resultado.mensaje : 'Error desconocido');
4606      }
4607    } catch (error) {
4608      //   toastr.error('Hubo un problema al obtener la información del perfil');
4609    }
4610  }
4611
4612  document.getElementById("btnFactMisDatosImprenta").addEventListener("click", () => {
4613    obtenerInformacionPerfil();
4614    const btnMisDatos = document.getElementById("btnFactMisDatosImprenta");
4615    btnMisDatos.innerHTML = '<i class="fas fa-check-circle text-success"></i> <b>Facturar con mis datos</b>';
4616    btnMisDatos.style.color = "#2cd07e";
4617    btnMisDatos.style.borderColor = "#2cd07e";
4618
4619    const btnDatosCli = document.getElementById("btnFactDatosCliImprenta");
4620    btnDatosCli.innerHTML = '<b>
4620Facturar con otros datos</b>';
4621    btnDatosCli.style.color = "#707cd2";
4622    btnDatosCli.style.borderColor = "#707cd2";
4623
4624    $("#misDatosImprenta").show();
4625    $("#datosClienteImprenta").hide();
4626    document.getElementById("seleccionarDatosFacturarImprenta").value = 1;
4627    document.getElementById("facturarEmpresaMisDatosImprenta").value = 1;
4628  });
4629
4630  document.getElementById("btnFactDatosCliImprenta").addEventListener("click", () => {
4631    const btnMisDatos = document.getElementById("btnFactMisDatosImprenta");
4632    btnMisDatos.innerHTML = '<b>Facturar con mis datos</b>';
4633    btnMisDatos.style.color = "#707cd2";
4634    btnMisDatos.style.borderColor = "#707cd2";
4635
4636
4637    const btnDatosCli = document.getElementById("btnFactDatosCliImprenta");
4638    btnDatosCli.innerHTML = '<i class="fas fa-check-circle text-success"></i> <b>Facturar con otros datos</b>';
4639    btnDatosCli.style.color = "#2cd07e";
4640    btnDatosCli.style.borderColor = "#2cd07e";
4641
4642    $("#misDatosImprenta").hide();
4643    $("#datosClienteImprenta").show();
4644    document.getElementById("seleccionarDatosFacturarImprenta").value = 1;
4645    document.getElementById("facturarEmpresaMisDatosImprenta").value = 2;
4646  });
4647
4648  function subirArchivoComprobantePagoAbonoImprenta() {
4649    const parametros = new FormData();
4650
4651    var numeroArchivos = $("#comprobantePago-abono")[0].files;
4652    var codPlan = $("#codPlan-abono").val();
4653    var codPlanEmpresa = $("#codPlanEmpresa-abono").val();
4654    var numcomprobante = $("#numcomprobante-abono").val();
4655    var bancocomprobante = $("#bancocomprobante-abono").val();
4656    var valorcomprobante = $("#valorcomprobante-abono").val();
4657    var fechacomprobante = $("#fechacomprobante-abono").val();
4658    var observacioncomprobante = $("#observacioncomprobante-abono").val();
4659
4660    let jsonCliente = [];
4661
4662    let facturarEmpresa = document.getElementById('facturarEmpresaMisDatosImprenta').value;
4663    console.log(facturarEmpresa);
4664
4665    if (facturarEmpresa == 0) {
4666      toastr.info("Seleccione los datos de factura", "Importante", { timeOut: 3000 });
4667      $("#btnGuardarComprobantePlanAbono").prop("disabled", false);
4668      return;
4669    }
4670
4671    if (facturarEmpresa == 1) {
4672      facturarEmpresa = true;
4673      if ($("#identificacion_contador_imprenta").val() == "") {
4674        toastr.info("Ingrese la identificación del contador", "Importante", { timeOut: 3000 });
4675        $("#btnGuardarComprobantePlanAbono").prop("disabled", false);
4676        return;
4677      }
4678
4679      if ($("#nombre_contador_imprenta").val() == "") {
4680        toastr.info("Ingrese el nombre del contador", "Importante", { timeOut: 3000 });
4681        $("#btnGuardarComprobantePlanAbono").prop("disabled", false);
4682        return;
4683      }
4684      if ($("#direcion_contador_imprenta").val() == "") {
4685        toastr.info("Ingrese la dirección del contador", "Importante", { timeOut: 3000 });
4686        $("#btnGuardarComprobantePlanAbono").prop("disabled", false);
4687        return;
4688      }
4689      if ($("#telefono_contador_imprenta").val() == "") {
4690        toastr.info("ngrese el telefono del contador", "Importante", { timeOut: 3000 });
4691        $("#btnGuardarComprobantePlanAbono").prop("disabled", false);
4692        return;
4693      }
4694      if ($("#correo_contador_imprenta").val() == "") {
4695        toastr.info("Ingrese el correo del contador", "Importante", { timeOut: 3000 });
4696        $("#btnGuardarComprobantePlanAbono").prop("disabled", false);
4697        return;
4698      }
4699
4700    } else {
4701      facturarEmpresa = false;
4702      if ($("#identificacion_cliente_imprenta").val() == "") {
4703        toastr.info("Ingrese la identificación del cliente para facturar", "Importante", { timeOut: 3000 });
4704        $("#btnGuardarComprobantePlanAbono").prop("disabled", false);
4705        return;
4706      }
4707
4708      if ($("#nombre_cliente_imprenta").val() == "") {
4709        toastr.info("Ingrese el nombre del cliente para facturar", "Importante", { timeOut: 3000 });
4710        $("#btnGuardarComprobantePlanAbono").prop("disabled", false);
4711        return;
4712      }
4713      if ($("#direccion_cliente_imprenta").val() == "") {
4714        toastr.info("Ingrese la dirección del cliente para facturar", "Importante", { timeOut: 3000 });
4715        $("#btnGuardarComprobantePlanAbono").prop("disabled", false);
4716        return;
4717      }
4718      if ($("#telefono_cliente_imprenta").val() == "") {
4719        toastr.info("Ingrese el teléfono del cliente para facturar", "Importante", { timeOut: 3000 });
4720        $("#btnGuardarComprobantePlanAbono").prop("disabled", false);
4721        return;
4722      }
4723      if ($("#correo_cliente_imprenta").val() == "") {
4724        toastr.info("Ingrese el correo del cliente para facturar", "Importante", { timeOut: 3000 });
4725        $("#btnGuardarComprobantePlanAbono").prop("disabled", false);
4726        return;
4727      }
4728    }
4729
4730
4731
4732    jsonCliente.push({
4733      identificacion_cliente: document.getElementById('identificacion_cliente_imprenta').value,
4734      nombre_cliente: document.getElementById('nombre_cliente_imprenta').value,
4735      direccion_cliente: document.getElementById('direccion_cliente_imprenta').value,
4736      telefono_cliente: document.getElementById('telefono_cliente_imprenta').value,
4737      correo_cliente: document.getElementById('correo_cliente_imprenta').value,
4738      observacion_cliente: document.getElementById('observacioncomprobante-abono').value,
4739      facturarConMisDatos: facturarEmpresa,
4740      identificacion_contador: document.getElementById('identificacion_contador_imprenta').value,
4741      nombre_contador: document.getElementById('nombre_contador_imprenta').value,
4742      direcion_contador: document.getElementById('direcion_contador_imprenta').value,
4743      telefono_contador: document.getElementById('telefono_contador_imprenta').value,
4744      correo_contador: document.getElementById('correo_contador_imprenta').value,
4745      totalFactura: document.getElementById('valorcomprobante-abono').value,
4746      fechapago_solicitudSJ: document.getElementById('fechacomprobante-abono').value,
4747      bancopago_solicitudSJ: document.getElementById('bancocomprobante-abono').value,
4748      numeropago_solicitudSJ: document.getElementById('numcomprobante-abono').value,
4749    });
4750
4751
4752
4753    parametros.append('cargarPagoPlanAbono', true);
4754    parametros.append('codPlan', codPlan);
4755    parametros.append('codPlanEmpresa', codPlanEmpresa);
4756    parametros.append('comprobante', numcomprobante);
4757    parametros.append('bancocomprobante', bancocomprobante);
4758    parametros.append('valorcomprobante', valorcomprobante);
4759    parametros.append('fechacomprobante', fechacomprobante);
4760    parametros.append('observacioncomprobante', observacioncomprobante);
4761    parametros.append("jsonCliente", JSON.stringify(jsonCliente));
4762
4763    if (numcomprobante == "" || valorcomprobante == "" || fechacomprobante == "" || bancocomprobante == "") {
4764      toastr.info("Ingrese los campos para guardar el registro");
4765    } else {
4766      if (numeroArchivos.length != 0) {
4767        if (numeroArchivos[0].type == "application/pdf" || numeroArchivos[0].type == "image/png" || numeroArchivos[0].type == "image/jpeg") {
4768          parametros.append('archivo', "true");
4769          parametros.append('tipo', numeroArchivos[0].type);
4770          parametros.append('file[]', numeroArchivos[0]);
4771
4772        } else {
4773
4774          toastr.info("El documento cargado debe ser una Imagen o PDF");
4775          return false;
4776        }
4777      } else {
4778        parametros.append('archivo', false);
4779      }
4780
4781      $.ajax({
4782        url: "ajax/usuarios.ajax.php",
4783        method: "POST",
4784        data: parametros,
4785        contentType: false,
4786        cache: false,
4787        processData: false,
4788        success: function (respuesta) {
4789
4790          var respuesta = JSON.parse(respuesta);
4791
4792          if (respuesta.operacion == "ok") {
4793            toastr.success(respuesta.mensaje);
4794          } else {
4795            toastr.error(respuesta.operacion.mensaje);
4796          }
4797          $("#comprobantePago-abono").val('');
4798          $("#bancocomprobante-abono").val('');
4799          $("#numcomprobante-abono").val('');
4800          $("#fechacomprobante-abono").val('');
4801          $("#valorcomprobante-abono").val('');
4802          $("#modalAgregarPagoPlanAbonar").modal('hide');
4803          $(".tablaHistorialPlanesImprenta").DataTable().ajax.reload();
4804        }
4805      })
4806    }
4807  }
4808
4809
4810
4811  $(document).on('click', '#btnGuardarComprobantePlanAbono', function (event) {
4812    subirArchivoComprobantePagoAbonoImprenta();
4813  });
4814
4815  $(document).on("click", ".btnAbrirModalComprobanteImprenta1", async function () {
4816    historialUsuarios.codigoPlanFactumatic = $(this).attr("codplan");
4817
4818    var respuesta = await historialUsuarios.consultarComprobanteFacturaImprenta(historialUsuarios.codigoPlanFactumatic, 1);
4819
4820    llenarValoresComprobanteFactura(respuesta, 'facturar1_secuencial_imprenta', 'facturar2_secuencial_imprenta', 'facturar3_secuencial_imprenta', 'facturar_valor_imprenta')
4821
4822    $("#modalCrearSecuencialFactureroImprenta").modal("show");
4823  });
4824
4825
4826  $(document).on("click", "#btnAgregarComprobanteImprenta", async function (event) {
4827
4828    var facturar1_secuencial_fa = $("#facturar1_secuencial_imprenta").val();//facturar1_secuencial_c
4829    var facturar2_secuencial_fa = $("#facturar2_secuencial_imprenta").val();
4830    var facturar3_secuencial_fa = $("#facturar3_secuencial_imprenta").val();
4831
4832    var facturar_valor_fa = $("#facturar_valor_imprenta").val();
4833
4834    if (validarSecuencialComprobante(facturar1_secuencial_fa, facturar2_secuencial_fa, facturar3_secuencial_fa)) {
4835      toastr.info("Ingrese correctamente el secuencial");
4836      return;
4837    }
4838
4839    if (facturar_valor_fa.trim().length < 1) {
4840      toastr.info("Ingrese un valor total del comprobante");
4841      return;
4842    }
4843
4844    let parametros = new FormData();
4845    parametros.append("aceptarPagoPlanImprenta", true);
4846    parametros.append("plan", historialUsuarios.codigoPlanFactumatic);
4847    parametros.append("existeComprobante", true);
4848    parametros.append("sec1", facturar1_secuencial_fa);
4849    parametros.append("sec2", facturar2_secuencial_fa);
4850    parametros.append("sec3", facturar3_secuencial_fa);
4851    parametros.append("valorTotal", facturar_valor_fa);
4852
4853    const resultado = await fetch("ajax/historial.ajax.php", {
4854      method: 'POST',
4855      body: parametros
4856    });
4857    const datos = await resultado.json();
4858    if (datos.estado) {
4859      toastr.success(datos.mensaje);
4860      $("#modalCrearSecuencialFactureroImprenta").modal("hide");
4861
4862      if ($.fn.DataTable.isDataTable('.tablaPlanes-pendientes')) {
4863        $('.tablaPlanes-pendientes').DataTable().ajax.reload();
4864      }
4865      if ($.fn.DataTable.isDataTable('.tablaImprentas-todos')) {
4866        $(".tablaImprentas-todos").DataTable().ajax.reload();
4867      }
4868      if ($.fn.DataTable.isDataTable('.tablaHistorialAbonoImprenta')) {
4869        $(".tablaHistorialAbonoImprenta").DataTable().ajax.reload();
4870      }
4871
4872      if ($.fn.DataTable.isDataTable('.tablaHistorialPlanesImprenta')) {
4873        $(".tablaHistorialPlanesImprenta").DataTable().ajax.reload();
4874      }
4875
4876      $(".secuencial").val("");
4877      $(".valortotal").val("");
4878      $("#activarInformacionComprobanteFactura").prop('checked', false).trigger("change");
4879      calcularCantidadPlanesPendientes();
4880    } else {
4881      toastr.info(datos.mensaje);
4882    }
4883  });
4884
4885}
4886
4887
4888if (window.location.href.indexOf("historial-abonos-imprenta") > -1) {
4889
4890  $(document).ready(function () {
4891    const parametrosURL = new URLSearchParams(window.location.search);
4892    const empresaPlan = parametrosURL.get('plan');
4893
4894    if (empresaPlan == null) {
4895      window.location.href = "empresas";
4896    } else {
4897      $('.tablaHistorialAbonoImprenta').DataTable({
4898        //"ajax": "ajax/datatable-empresas.ajax.php",
4899        "ajax": {
4900          'url': 'ajax/datatable-empresas.ajax.php',
4901          'data': { 'listarHistorialAbonosImprenta': true, 'plan': empresaPlan },
4902          'type': 'post'
4903        },
4904        "deferRender": true,
4905        "retrieve": true,
4906        "processing": true,
4907        "columnDefs": [{
4908          targets: "_all",
4909          sortable: false
4910        }],
4911        "columns": [
4912          { data: 'codigo' },
4913          { data: 'tipoplan' },
4914          { data: 'detalle' },
4915          { data: 'comprobante' },
4916          { data: 'facturado' },
4917          { data: 'observacion' },
4918          { data: 'opciones' },
4919        ],
4920        order: [[1, 'desc']],
4921        "language": {
4922
4923          "sProcessing": "Procesando...",
4924          "sLengthMenu": "Mostrar _MENU_ registros",
4925          "sZeroRecords": "No se encontraron resultados",
4926          "sEmptyTable": "Ningún dato disponible en esta tabla",
4927          "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_",
4928          "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0",
4929          "sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
4930          "sInfoPostFix": "",
4931          "sSearch": "Buscar:",
4932          "sUrl": "",
4933          "sInfoThousands": ",",
4934          "sLoadingRecords": "Cargando...",
4935          "oPaginate": {
4936            "sFirst": "Primero",
4937            "sLast": "Último",
4938            "sNext": "Siguiente",
4939            "sPrevious": "Anterior"
4940          },
4941          "oAria": {
4942            "sSortAscending": ": Activar para ordenar la columna de manera ascendente",
4943            "sSortDescending": ": Activar para ordenar la columna de manera descendente"
4944          },
4945
4946        },
4947        dom: 'Bfrtip',
4948        buttons: [
4949
4950          {
4951            extend: 'excel',
4952            title: 'Lista de usuarios',
4953            className: 'dt-button buttons-excel buttons-html5 btn btn-success',
4954            exportOptions: {
4955              modifier: {
4956                // DataTables core
4957                order: 'index', // 'current', 'applied',
4958                //'index', 'original'
4959                page: 'all', // 'all', 'current'
4960                search: 'none' // 'none', 'applied', 'removed'
4961              },
4962              columns: [0, 1, 2, 3, 4, 5, 6]
4963            }
4964
4965          }
4966        ]
4967
4968      });
4969    }
4970  });
4971
4972
4973  $(document).on("click", ".btnEliminarComprobantePlanImprenta", function () {
4974
4975
4976    var codplan = $(this).attr("plan");
4977    var usuario = $(this).attr("planEmpresa");
4978    var documento = $(this).attr("documento");
4979
4980    var datos = new FormData();
4981
4982    datos.append("eliminarComprobantePagoUsuario", true);
4983    datos.append("codPlan", codplan);
4984    datos.append("usuario", usuario);
4985    datos.append("documento", documento);
4986
4987
4988
4989    swal({
4990      title: '¿Está seguro de eliminar el comprobante de pago?',
4991      text: "¡Si no lo está puede cancelar la accíón!",
4992      type: 'warning',
4993      showCancelButton: true,
4994      confirmButtonColor: '#3085d6',
4995      cancelButtonColor: '#d33',
4996      cancelButtonText: 'Cancelar',
4997      confirmButtonText: 'Si, eliminar comprobante!'
4998    }).then(function (result) {
4999
5000      if (result.value) {
5001
5002        $.ajax({
5003          url: "ajax/usuarios.ajax.php",
5004          type: "POST",
5005          data: datos,
5006          cache: false,
5007          contentType: false,
5008          processData: false,
5009
5010
5011          success: function (respuesta) {
5012
5013            if (respuesta.trim() == 'ok') {
5014              toastr.success('Comprobante eliminado con éxito');
5015            } else {
5016              toastr.info('Error al generar eliminar comprobante, contacte con el administrador!');
5017            }
5018            $('.tablaHistorialAbonoImprenta').DataTable().ajax.reload();
5019          }
5020        })
5021
5022      }
5023
5024    })
5025  });
5026
5027  $(document).on("click", ".btnAbrirModalComprobanteImprenta1", async function () {
5028    historialUsuarios.codigoPlanFactumatic = $(this).attr("codplan");
5029
5030    var respuesta = await historialUsuarios.consultarComprobanteFacturaImprenta(historialUsuarios.codigoPlanFactumatic, 1);
5031
5032    llenarValoresComprobanteFactura(respuesta, 'facturar1_secuencial_imprenta', 'facturar2_secuencial_imprenta', 'facturar3_secuencial_imprenta', 'facturar_valor_imprenta')
5033
5034    $("#modalCrearSecuencialFactureroImprenta").modal("show");
5035  });
5036
5037
5038  $(document).on("click", "#btnAgregarComprobanteImprenta", async function (event) {
5039
5040    var facturar1_secuencial_fa = $("#facturar1_secuencial_imprenta").val();//facturar1_secuencial_c
5041    var facturar2_secuencial_fa = $("#facturar2_secuencial_imprenta").val();
5042    var facturar3_secuencial_fa = $("#facturar3_secuencial_imprenta").val();
5043
5044    var facturar_valor_fa = $("#facturar_valor_imprenta").val();
5045
5046    if (validarSecuencialComprobante(facturar1_secuencial_fa, facturar2_secuencial_fa, facturar3_secuencial_fa)) {
5047      toastr.info("Ingrese correctamente el secuencial");
5048      return;
5049    }
5050
5051    if (facturar_valor_fa.trim().length < 1) {
5052      toastr.info("Ingrese un valor total del comprobante");
5053      return;
5054    }
5055
5056    let parametros = new FormData();
5057    parametros.append("aceptarPagoPlanImprenta", true);
5058    parametros.append("plan", historialUsuarios.codigoPlanFactumatic);
5059    parametros.append("existeComprobante", true);
5060    parametros.append("sec1", facturar1_secuencial_fa);
5061    parametros.append("sec2", facturar2_secuencial_fa);
5062    parametros.append("sec3", facturar3_secuencial_fa);
5063    parametros.append("valorTotal", facturar_valor_fa);
5064
5065    const resultado = await fetch("ajax/historial.ajax.php", {
5066      method: 'POST',
5067      body: parametros
5068    });
5069    const datos = await resultado.json();
5070    if (datos.estado) {
5071      toastr.success(datos.mensaje);
5072      $("#modalCrearSecuencialFactureroImprenta").modal("hide");
5073
5074      if ($.fn.DataTable.isDataTable('.tablaPlanes-pendientes')) {
5075        $('.tablaPlanes-pendientes').DataTable().ajax.reload();
5076      }
5077      if ($.fn.DataTable.isDataTable('.tablaImprentas-todos')) {
5078        $(".tablaImprentas-todos").DataTable().ajax.reload();
5079      }
5080      if ($.fn.DataTable.isDataTable('.tablaHistorialAbonoImprenta')) {
5081        $(".tablaHistorialAbonoImprenta").DataTable().ajax.reload();
5082      }
5083
5084      if ($.fn.DataTable.isDataTable('.tablaHistorialPlanesImprenta')) {
5085        $(".tablaHistorialPlanesImprenta").DataTable().ajax.reload();
5086      }
5087
5088      $(".secuencial").val("");
5089      $(".valortotal").val("");
5090      $("#activarInformacionComprobanteFactura").prop('checked', false).trigger("change");
5091      calcularCantidadPlanesPendientes();
5092    } else {
5093      toastr.info(datos.mensaje);
5094    }
5095  });
5096
5097
5098}
5099
5100
5101if (window.location.href.indexOf("historial-abonos-proyectos") > -1) {
5102  $(document).ready(function () {
5103    const parametrosURL = new URLSearchParams(window.location.search);
5104    const empresaPlan = parametrosURL.get('plan');
5105    if (empresaPlan == null) {
5106      window.location.href = "empresas";
5107    } else {
5108      $('.tablaHistorialAbonoProyectos').DataTable({
5109        //"ajax": "ajax/datatable-empresas.ajax.php",
5110        "ajax": {
5111          'url': 'ajax/datatable-empresas.ajax.php',
5112          'data': { 'listarHistorialAbonosProyectos': true, 'plan': empresaPlan },
5113          'type': 'post'
5114        },
5115        "deferRender": true,
5116        "retrieve": true,
5117        "processing": true,
5118        "columnDefs": [{
5119          targets: "_all",
5120          sortable: false
5121        }],
5122        "columns": [
5123          { data: 'codigo' },
5124          { data: 'proyecto' },
5125          { data: 'comprobante' },
5126          { data: 'detalle' },
5127          { data: 'facturado' },
5128          { data: 'observacion' },
5129          { data: 'opciones' },
5130        ],
5131        order: [[1, 'desc']],
5132        "language": {
5133
5134          "sProcessing": "Procesando...",
5135          "sLengthMenu": "Mostrar _MENU_ registros",
5136          "sZeroRecords": "No se encontraron resultados",
5137          "sEmptyTable": "Ningún dato disponible en esta tabla",
5138          "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_",
5139          "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0",
5140          "sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
5141          "sInfoPostFix": "",
5142          "sSearch": "Buscar:",
5143          "sUrl": "",
5144          "sInfoThousands": ",",
5145          "sLoadingRecords": "Cargando...",
5146          "oPaginate": {
5147            "sFirst": "Primero",
5148            "sLast": "Último",
5149            "sNext": "Siguiente",
5150            "sPrevious": "Anterior"
5151          },
5152          "oAria": {
5153            "sSortAscending": ": Activar para ordenar la columna de manera ascendente",
5154            "sSortDescending": ": Activar para ordenar la columna de manera descendente"
5155          },
5156
5157        },
5158        dom: 'Bfrtip',
5159        buttons: [
5160
5161          {
5162            extend: 'excel',
5163            title: 'Lista de usuarios',
5164            className: 'dt-button buttons-excel buttons-html5 btn btn-success',
5165            exportOptions: {
5166              modifier: {
5167                // DataTables core
5168                order: 'index', // 'current', 'applied',
5169                //'index', 'original'
5170                page: 'all', // 'all', 'current'
5171                search: 'none' // 'none', 'applied', 'removed'
5172              },
5173              columns: [0, 1, 2, 3, 4, 5, 6]
5174            }
5175
5176          }
5177        ]
5178
5179      });
5180    }
5181  });
5182
5183  $(document).on("click", ".btnEliminarComprobanteProyecto", function () {
5184
5185
5186    var codplan = $(this).attr("plan");
5187    var documento = $(this).attr("documento");
5188
5189    var datos = new FormData();
5190
5191    datos.append("eliminarComprobanteProyecto", true);
5192    datos.append("codPlan", codplan);
5193    datos.append("documento", documento);
5194
5195
5196
5197    swal({
5198      title: '¿Está seguro de eliminar el comprobante de pago?',
5199      text: "¡Si no lo está puede cancelar la accíón!",
5200      type: 'warning',
5201      showCancelButton: true,
5202      confirmButtonColor: '#3085d6',
5203      cancelButtonColor: '#d33',
5204      cancelButtonText: 'Cancelar',
5205      confirmButtonText: 'Si, eliminar comprobante!'
5206    }).then(function (result) {
5207
5208      if (result.value) {
5209
5210        $.ajax({
5211          url: "ajax/usuarios.ajax.php",
5212          type: "POST",
5213          data: datos,
5214          cache: false,
5215          contentType: false,
5216          processData: false,
5217
5218
5219          success: function (respuesta) {
5220
5221            if (respuesta.trim() == 'ok') {
5222              toastr.success('Comprobante eliminado con éxito');
5223            } else {
5224              toastr.info('Error al generar eliminar comprobante, contacte con el administrador!');
5225            }
5226            $('.tablaHistorialAbonoProyectos').DataTable().ajax.reload();
5227          }
5228        })
5229
5230      }
5231
5232    })
5233  });
5234
5235
5236}
5237
5238class Plan {
5239  /* -------------------------------------------------------------------------- */
5240  /*                               GUARDAR EMPRESA                              */
5241  /* -------------------------------------------------------------------------- */
5242
5243  constructor() {
5244    this.secuenciaPlan = 0;
5245  }
5246
5247}
5248const empresas1 = new Plan();
5249
5250
5251function subirArchivoComprobantePago(sistema) {
5252  const parametros = new FormData();
5253
5254  var numeroArchivos = $("#comprobantePago")[0].files;
5255  //var codPlan= $("#codPlan").val();
5256  var codPlan = empresas1.secuenciaPlan;
5257  var codPlanEmpresa = $("#codPlanEmpresa").val();
5258  var numcomprobante = $("#numcomprobante").val();
5259  var bancocomprobante = $("#bancocomprobante").val();
5260  var valorcomprobante = $("#valorcomprobante").val();
5261  var fechacomprobante = $("#fechacomprobante").val();
5262  var sistema = $("#tipoSistemaApp").val();
5263  var numFirma = '';
5264  if (sistema == 'vendeFacil') {
5265    numFirma = $("#numeroFirma").val();
5266    parametros.append('numFirma', numFirma);
5267  }
5268
5269
5270  parametros.append('cargarPago', true);
5271  parametros.append('codPlan', codPlan);
5272  parametros.append('documento', empresas1.documentoPlan);
5273  parametros.append('codPlanEmpresa', codPlanEmpresa);
5274  parametros.append('comprobante', numcomprobante);
5275  parametros.append('bancocomprobante', bancocomprobante);
5276  parametros.append('valorcomprobante', valorcomprobante);
5277  parametros.append('fechacomprobante', fechacomprobante);
5278  parametros.append('sistema', sistema);
5279  //for(var i=0; i<numeroArchivos.length; i++)  
5280  //{ 
5281  //}
5282
5283  if (numcomprobante == "" || valorcomprobante == "" || fechacomprobante == "" || bancocomprobante == "") {
5284    toastr.info("Ingrese los campos para guardar el registro");
5285  } else {
5286    if (numeroArchivos.length != 0) {
5287      if (numeroArchivos[0].type == "application/pdf" || numeroArchivos[0].type == "image/png" || numeroArchivos[0].type == "image/jpeg") {
5288        parametros.append('archivo', "true");
5289        parametros.append('tipo', numeroArchivos[0].type);
5290        parametros.append('file[]', numeroArchivos[0]);
5291
5292      } else {
5293
5294        toastr.info("El documento cargado debe ser una Imagen o PDF");
5295        return false;
5296      }
5297    } else {
5298      parametros.append('archivo', false);
5299    }
5300
5301
5302    $.ajax({
5303      url: "ajax/empresas.ajax.php",
5304      method: "POST",
5305      data: parametros,
5306      contentType: false,
5307      cache: false,
5308      processData: false,
5309      success: function (respuesta) {
5310
5311        var respuesta = JSON.parse(respuesta);
5312
5313
5314        if (respuesta.operacion) {//CAMBIOS
5315          toastr.success(respuesta.mensaje);
5316
5317          if (respuesta.verificado) {
5318
5319            //PONER MODAL DE CAMBIAR
5320
5321            swal({
5322              title: "¿Desea activar su facturero?",
5323              text: "Si la empresa no se activa en este momento, deberá enviar un mensaje de activacion a soporte.",
5324              type: "info",
5325              confirmButtonColor: "#2cd07e",
5326              confirmButtonText: "Sí, activar",
5327              showCancelButton: true,
5328              cancelButtonText: "Cancelar"
5329            }).then(async result => {
5330              if (result.value) {
5331                var respuesta = await habilitarAccesoEmpresa(sistema);
5332                if (respuesta.estado) {
5333                  toastr.success(respuesta.mensaje, "LISTO", { timeOut: 4000 });
5334                } else {
5335                  toastr.info(respuesta.mensaje);
5336                }
5337              }
5338            });
5339          }
5340
5341        } else {
5342          toastr.error(respuesta.mensaje);
5343
5344        }
5345
5346        $("#comprobantePago").val('');
5347        $("#bancocomprobante").val('');
5348        $("#numcomprobante").val('');
5349        $("#fechacomprobante").val('');
5350        $("#valorcomprobante").val('');
5351        //$('#modalAgregarPagoPlan').modal('hide);
5352        //$('.tablaHistorialPlanes').DataTable().ajax.reload()
5353        $("#modalAgregarPagoPlan").modal('hide');
5354        $('.tablaHistorialPlanes').DataTable().ajax.reload();
5355
5356
5357      }
5358    })
5359  }
5360
5361
5362  /*if(numeroArchivos.length !=0 ){
5363      if(numeroArchivos[0].type=="application/pdf"||numeroArchivos[0].type=="image/png"||numeroArchivos[0].type=="image/jpeg"){                        
5364      parametros.append('tipo', numeroArchivos[0].type);
5365      parametros.append('file[]', numeroArchivos[0]);
5366      
5367      $.ajax({  
5368          url:"ajax/empresas.ajax.php",  
5369          method:"POST",  
5370          data:parametros,  
5371          contentType:false,  
5372          cache: false,  
5373          processData: false,  
5374          success:function(respuesta){  
5375              
5376              var respuesta=JSON.parse(respuesta);
5377              
5378              
5379              if(respuesta.operacion=="ok"){
5380                  toastr.success(respuesta.mensaje);
5381                  
5382              }else{
5383                  toastr.error(respuesta.mensaje);
5384                  
5385              }
5386              
5387              $("#comprobantePago").val('');
5388              //$('#modalAgregarPagoPlan').modal('hide);
5389              //$('.tablaHistorialPlanes').DataTable().ajax.reload()
5390              $("#modalAgregarPagoPlan").modal('hide');
5391              $('.tablaHistorialPlanes').DataTable().ajax.reload();
5392          }  
5393      })
5394      
5395      }else{
5396          toastr.info("El documento cargado debe ser una Imagen o PDF");
5397      }
5398      
5399      
5400  }else{
5401      toastr.info("Se necesita cargar un comprobante, Imagen o Pdf");
5402  }*/
5403
5404
5405
5406
5407}
5408
5409function subirArchivoComprobantePagoFacturero() {
5410  const parametros = new FormData();
5411
5412  var numeroArchivos = $("#comprobantePagoFacturero")[0].files;
5413  //var codPlan= $("#codPlan").val();
5414  var codPlan = empresas1.secuenciaPlan;
5415  var codPlanEmpresa = $("#codPlanEmpresa").val();
5416  var numcomprobante = $("#numcomprobanteFacturero").val();
5417  var bancocomprobante = $("#bancocomprobanteFacturero").val();
5418  var valorcomprobante = $("#valorcomprobanteFacturero").val();
5419  var fechacomprobante = $("#fechacomprobanteFacturero").val();
5420  var sistema = $("#tiposistema").val();
5421  var numFirma = $("#numeroFirma").val();
5422
5423
5424  parametros.append('cargarPago', true);
5425  parametros.append('codPlan', codPlan);
5426  parametros.append('documento', empresas1.documentoPlan);
5427  parametros.append('codPlanEmpresa', codPlanEmpresa);
5428  parametros.append('comprobante', numcomprobante);
5429  parametros.append('bancocomprobante', bancocomprobante);
5430  parametros.append('valorcomprobante', valorcomprobante);
5431  parametros.append('fechacomprobante', fechacomprobante);
5432  parametros.append('sistema', sistema);
5433  parametros.append('numFirma', numFirma);
5434
5435  //for(var i=0; i<numeroArchivos.length; i++)  
5436  //{ 
5437  //}
5438
5439  if (numcomprobante == "" || valorcomprobante == "" || fechacomprobante == "" || bancocomprobante == "") {
5440    toastr.info("Ingrese los campos para guardar el registro");
5441  } else {
5442    if (numeroArchivos.length != 0) {
5443      if (numeroArchivos[0].type == "application/pdf" || numeroArchivos[0].type == "image/png" || numeroArchivos[0].type == "image/jpeg") {
5444        parametros.append('archivo', "true");
5445        parametros.append('tipo', numeroArchivos[0].type);
5446        parametros.append('file[]', numeroArchivos[0]);
5447
5448      } else {
5449
5450        toastr.info("El documento cargado debe ser una Imagen o PDF");
5451        return false;
5452      }
5453    } else {
5454      parametros.append('archivo', false);
5455    }
5456
5457
5458    $.ajax({
5459      url: "ajax/empresas.ajax.php",
5460      method: "POST",
5461      data: parametros,
5462      contentType: false,
5463      cache: false,
5464      processData: false,
5465      success: function (respuesta) {
5466
5467        var respuesta = JSON.parse(respuesta);
5468
5469
5470        if (respuesta.operacion) {//CAMBIOS
5471          toastr.success(respuesta.mensaje);
5472
5473          if (respuesta.verificado) {
5474
5475            //PONER MODAL DE CAMBIAR
5476
5477            swal({
5478              title: "¿Desea activar su facturero?",
5479              text: "Si la empresa no se activa en este momento, deberá enviar un mensaje de activacion a soporte.",
5480              type: "info",
5481              confirmButtonColor: "#2cd07e",
5482              confirmButtonText: "Sí, activar",
5483              showCancelButton: true,
5484              cancelButtonText: "Cancelar"
5485            }).then(async result => {
5486              if (result.value) {
5487                var respuesta = await habilitarAccesoEmpresa();
5488                if (respuesta.estado) {
5489                  toastr.success(respuesta.mensaje, "LISTO", { timeOut: 4000 });
5490                } else {
5491                  toastr.info(respuesta.mensaje);
5492                }
5493              }
5494            });
5495          }
5496        } else {
5497          toastr.error(respuesta.mensaje);
5498
5499        }
5500
5501        $("#comprobantePago").val('');
5502        $("#bancocomprobante").val('');
5503        $("#numcomprobante").val('');
5504        $("#fechacomprobante").val('');
5505        $("#valorcomprobante").val('');
5506        //$('#modalAgregarPagoPlan').modal('hide);
5507        //$('.tablaHistorialPlanes').DataTable().ajax.reload()
5508        $("#modalAgregarPagoPlan").modal('hide');
5509
5510        if ($.fn.DataTable.isDataTable('.tablaHistorialPlanes')) {
5511          $('.tablaHistorialPlanes').DataTable().ajax.reload();
5512        }
5513        if ($.fn.DataTable.isDataTable('.tablaPlanes-pendientes')) {
5514          $('.tablaPlanes-pendientes').DataTable().ajax.reload();
5515        }
5516        if ($.fn.DataTable.isDataTable('.tablaPlanes-pendientes-facturalo')) {
5517          $('.tablaPlanes-pendientes-facturalo').DataTable().ajax.reload();
5518        }
5519      }
5520    })
5521  }
5522
5523
5524
5525
5526}
5527
5528async function habilitarAccesoEmpresa(sistema) {
5529  try {
5530
5531    let parametros = new FormData();
5532    parametros.append("habilitarAccesoEmpresa", true);
5533    parametros.append("plan", empresas1.secuenciaPlan);
5534    parametros.append("sistema", sistema);
5535
5536
5537    const resultado = await fetch("ajax/historial.ajax.php", {
5538      method: 'POST',
5539      body: parametros
5540    });
5541    const datos = resultado.json();
5542    return datos;
5543
5544  } catch (error) {
5545    throw error;
5546  }
5547}
5548
5549
5550async function subirArchivoComprobantePagoEmpresa() {
5551  let parametros = new FormData();
5552  var sistema = $("#tipoSistema").val();
5553  var numeroArchivos = $("#comprobanteArchivoPago")[0].files;
5554  var codPlan = $("#idCodigoPlan").val();
5555  var codPlanEmpresa = $("#idCodigoEmpresa").val();
5556  var numcomprobante = $("#numeropago_solicitudSJ").val().trim();
5557  var bancocomprobante = $("#bancopago_solicitudSJ").val().trim();
5558  var valorcomprobante = $("#valorcomprobante").val().trim();
5559  var observacioncomprobante = $("#observacioncomprobante").val().trim();
5560  var fechacomprobante = $("#fechacomprobante").val().trim();
5561
5562  if (bancocomprobante == '1') {
5563    bancocomprobante = 'BANCO PICHINCHA';
5564  } else {
5565    bancocomprobante = 'BANCO DEL PACÍFICO';
5566  }
5567  parametros.append('guardarPagoEmpresa', true);
5568  parametros.append('sistema', sistema);
5569  parametros.append('codPlan', codPlan);
5570  parametros.append('empresa', codPlanEmpresa);
5571  parametros.append('comprobante', numcomprobante);
5572  parametros.append('bancocomprobante', bancocomprobante);
5573  parametros.append('valorcomprobante', valorcomprobante);
5574  parametros.append('observacioncomprobante', observacioncomprobante);
5575  parametros.append('fechacomprobante', fechacomprobante);
5576  parametros.append('nombrePlan', document.getElementById('nombreplan').value);
5577  parametros.append('referenciaPlan', document.getElementById('referenciaPlan').value);
5578
5579  if (numcomprobante == "" || valorcomprobante == "" || fechacomprobante == "" || bancocomprobante == "") {
5580    toastr.info("Ingrese los campos para guardar el registro");
5581    return;
5582  } else {
5583    if (document.getElementById('referenciaPlan').value != "GRATUITO-ANUAL") {
5584      if (numeroArchivos.length != 0) {
5585        if (numeroArchivos[0].type == "application/pdf" || numeroArchivos[0].type == "image/png" || numeroArchivos[0].type == "image/jpeg") {
5586          parametros.append('archivoComprobante', numeroArchivos[0]);
5587        } else {
5588          toastr.info("El documento cargado debe ser una Imagen o PDF");
5589          return false;
5590        }
5591      } else {
5592        toastr.info("Cargue el documento pdf o imagen del comprobante de pago");
5593        return false;
5594      }
5595    }
5596  }
5597
5598  const resultado = await fetch("ajax/planes/planfacturero.ajax.php", {
5599    method: "POST",
5600    body: parametros,
5601  });
5602  const datos = await resultado.json();
5603
5604  if (datos.estado) {
5605    toastr.success(datos.mensaje);
5606    setTimeout(() => {
5607      location.reload();
5608    }, 2000);
5609
5610  } else {
5611    toastr.error(datos.mensaje);
5612  }
5613
5614}
5615
5616$(document).on('click', '#btnGuardarComprobantePlan', function (event) {
5617  subirArchivoComprobantePago('contamatic');
5618});
5619
5620$(document).on('click', '#btnGuardarComprobantePlanVendeFacil', function (event) {
5621  subirArchivoComprobantePago('vendeFacil');
5622});
5623
5624$(document).on('click', '#btnGuardarComprobantePlanEmpresa', async function (event) {
5625  await subirArchivoComprobantePagoEmpresa();
5626});
5627
5628$(document).on('click', '.cerrarModalComprobantePlanEmpresa', function (event) {
5629  $('#modalAgregarPagoPlan').modal('hide');
5630  location.reload();
5631
5632});
5633
5634$(document).on('click', '#btnGuardarComprobantePlanFacturero', function (event) {
5635  subirArchivoComprobantePagoFacturero();
5636});
5637
5638function subirArchivoComprobantePagoPrepago() {
5639  const parametros = new FormData();
5640
5641  var numeroArchivos = $("#comprobantePago-plan")[0].files;
5642  var codPlan = $("#codPlan-plan").val();
5643  var codPlanEmpresa = $("#codPlanEmpresa-plan").val();
5644  var numcomprobante = $("#numcomprobante-plan").val();
5645  var bancocomprobante = null;
5646  var valorcomprobante = $("#valorcomprobante-plan").val();
5647  var fechacomprobante = $("#fechacomprobante-plan").val();
5648
5649
5650  parametros.append('cargarPago', true);
5651  parametros.append('codPlan', codPlan);
5652  parametros.append('codPlanEmpresa', codPlanEmpresa);
5653  parametros.append('comprobante', numcomprobante);
5654  parametros.append('bancocomprobante', bancocomprobante);
5655  parametros.append('valorcomprobante', valorcomprobante);
5656  parametros.append('fechacomprobante', fechacomprobante);
5657  //for(var i=0; i<numeroArchivos.length; i++)  
5658  //{ 
5659  //}
5660
5661  if (numcomprobante == "" || valorcomprobante == "" || fechacomprobante == "") {
5662    toastr.info("Ingrese los campos para guardar el registro");
5663  } else {
5664    if (numeroArchivos.length != 0) {
5665      if (numeroArchivos[0].type == "application/pdf" || numeroArchivos[0].type == "image/png" || numeroArchivos[0].type == "image/jpeg") {
5666        parametros.append('archivo', "true");
5667        parametros.append('tipo', numeroArchivos[0].type);
5668        parametros.append('file[]', numeroArchivos[0]);
5669
5670      } else {
5671
5672        toastr.info("El documento cargado debe ser una Imagen o PDF");
5673        return false;
5674      }
5675    } else {
5676      parametros.append('archivo', false);
5677    }
5678
5679
5680    $.ajax({
5681      url: "ajax/empresas.ajax.php",
5682      method: "POST",
5683      data: parametros,
5684      contentType: false,
5685      cache: false,
5686      processData: false,
5687      success: function (respuesta) {
5688
5689        var respuesta = JSON.parse(respuesta);
5690
5691
5692        if (respuesta.operacion) {
5693          toastr.success(respuesta.mensaje);
5694
5695        } else {
5696          toastr.error(respuesta.mensaje);
5697
5698        }
5699
5700        $("#comprobantePago-plan").val('');
5701        $("#bancocomprobante-plan").val('');
5702        $("#numcomprobante-plan").val('');
5703        $("#fechacomprobante-plan").val('');
5704        $("#valorcomprobante-plan").val('');
5705        //$('#modalAgregarPagoPlan').modal('hide);
5706        //$('.tablaHistorialPlanes').DataTable().ajax.reload()
5707        $("#modalAgregarPagoPlanPrepago").modal('hide');
5708        $('.tablaHistorialPlanes').DataTable().ajax.reload();
5709
5710
5711      }
5712    })
5713  }
5714
5715
5716  /*if(numeroArchivos.length !=0 ){
5717      if(numeroArchivos[0].type=="application/pdf"||numeroArchivos[0].type=="image/png"||numeroArchivos[0].type=="image/jpeg"){                        
5718      parametros.append('tipo', numeroArchivos[0].type);
5719      parametros.append('file[]', numeroArchivos[0]);
5720      
5721      $.ajax({  
5722          url:"ajax/empresas.ajax.php",  
5723          method:"POST",  
5724          data:parametros,  
5725          contentType:false,  
5726          cache: false,  
5727          processData: false,  
5728          success:function(respuesta){  
5729              
5730              var respuesta=JSON.parse(respuesta);
5731              
5732              
5733              if(respuesta.operacion=="ok"){
5734                  toastr.success(respuesta.mensaje);
5735                  
5736              }else{
5737                  toastr.error(respuesta.mensaje);
5738                  
5739              }
5740              
5741              $("#comprobantePago").val('');
5742              //$('#modalAgregarPagoPlan').modal('hide);
5743              //$('.tablaHistorialPlanes').DataTable().ajax.reload()
5744              $("#modalAgregarPagoPlan").modal('hide');
5745              $('.tablaHistorialPlanes').DataTable().ajax.reload();
5746          }  
5747      })
5748      
5749      }else{
5750          toastr.info("El documento cargado debe ser una Imagen o PDF");
5751      }
5752      
5753      
5754  }else{
5755      toastr.info("Se necesita cargar un comprobante, Imagen o Pdf");
5756  }*/
5757
5758
5759
5760
5761}
5762
5763
5764
5765function subirArchivoComprobantePagoPrepagoImprenta() {
5766  const parametros = new FormData();
5767
5768  var numeroArchivos = $("#comprobantePago-imprenta")[0].files;
5769  var codPlan = $("#codPlan-imprenta").val();
5770  var codPlanEmpresa = $("#codPlanEmpresa-imprenta").val();
5771  var numcomprobante = $("#numcomprobante-imprenta").val();
5772  var bancocomprobante = $("#bancocomprobante-imprenta").val();
5773  var valorcomprobante = $("#valorcomprobante-imprenta").val();
5774  var fechacomprobante = $("#fechacomprobante-imprenta").val();
5775  var observacioncomprobante = $("#observacioncomprobante-imprenta").val();
5776
5777  parametros.append('cargarPagoPlanUsuario', true);
5778  parametros.append('codPlan', codPlan);
5779  parametros.append('codPlanEmpresa', codPlanEmpresa);
5780  parametros.append('comprobante', numcomprobante);
5781  parametros.append('bancocomprobante', bancocomprobante);
5782  parametros.append('valorcomprobante', valorcomprobante);
5783  parametros.append('fechacomprobante', fechacomprobante);
5784  parametros.append('observacioncomprobante', observacioncomprobante);
5785
5786  if (numcomprobante == "" || valorcomprobante == "" || fechacomprobante == "" || bancocomprobante == "") {
5787    toastr.info("Ingrese los campos para guardar el registro");
5788  } else {
5789    if (numeroArchivos.length != 0) {
5790      if (numeroArchivos[0].type == "application/pdf" || numeroArchivos[0].type == "image/png" || numeroArchivos[0].type == "image/jpeg") {
5791        parametros.append('archivo', "true");
5792        parametros.append('tipo', numeroArchivos[0].type);
5793        parametros.append('file[]', numeroArchivos[0]);
5794
5795      } else {
5796
5797        toastr.info("El documento cargado debe ser una Imagen o PDF");
5798        return false;
5799      }
5800    } else {
5801      parametros.append('archivo', false);
5802    }
5803
5804    $.ajax({
5805      url: "ajax/usuarios.ajax.php",
5806      method: "POST",
5807      data: parametros,
5808      contentType: false,
5809      cache: false,
5810      processData: false,
5811      success: function (respuesta) {
5812
5813        var respuesta = JSON.parse(respuesta);
5814
5815        if (respuesta.operacion == "ok") {
5816          toastr.success(respuesta.mensaje);
5817        } else {
5818          toastr.error(respuesta.mensaje);
5819        }
5820        $("#comprobantePago-imprenta").val('');
5821        $("#bancocomprobante-imprenta").val('');
5822        $("#numcomprobante-imprenta").val('');
5823        $("#fechacomprobante-imprenta").val('');
5824        $("#valorcomprobante-imprenta").val('');
5825        $("#modalAgregarPagoPlanPrepagoImprenta").modal('hide');
5826        $('.tablaHistorialAbonoImprenta').DataTable().ajax.reload();
5827        $('.tablaHistorialPlanesImprenta').DataTable().ajax.reload();
5828        $('.tablaPlanes-pendientesImprentas').DataTable().ajax.reload();
5829      }
5830    })
5831  }
5832}
5833
5834function subirArchivoComprobantePagoProyecto() {
5835  const parametros = new FormData();
5836
5837  var numeroArchivos = $("#comprobantePago-proyecto")[0].files;
5838  var codPlan = $("#codPlan-proyecto").val();
5839  var numcomprobante = $("#numcomprobante-proyecto").val();
5840  var bancocomprobante = $("#bancocomprobante-proyecto").val();
5841  var valorcomprobante = $("#valorcomprobante-proyecto").val();
5842  var fechacomprobante = $("#fechacomprobante-proyecto").val();
5843  var observacioncomprobante = $("#observacioncomprobante-proyecto").val();
5844
5845  parametros.append('cargarPagoPlanProyecto', true);
5846  parametros.append('codPlan', codPlan);
5847  parametros.append('comprobante', numcomprobante);
5848  parametros.append('bancocomprobante', bancocomprobante);
5849  parametros.append('valorcomprobante', valorcomprobante);
5850  parametros.append('fechacomprobante', fechacomprobante);
5851  parametros.append('observacioncomprobante', observacioncomprobante);
5852
5853  if (numcomprobante == "" || valorcomprobante == "" || fechacomprobante == "" || bancocomprobante == "") {
5854    toastr.info("Ingrese los campos para guardar el registro");
5855  } else {
5856    if (numeroArchivos.length != 0) {
5857      if (numeroArchivos[0].type == "application/pdf" || numeroArchivos[0].type == "image/png" || numeroArchivos[0].type == "image/jpeg") {
5858        parametros.append('archivo', "true");
5859        parametros.append('tipo', numeroArchivos[0].type);
5860        parametros.append('file[]', numeroArchivos[0]);
5861
5862      } else {
5863
5864        toastr.info("El documento cargado debe ser una Imagen o PDF");
5865        return false;
5866      }
5867    } else {
5868      parametros.append('archivo', false);
5869    }
5870
5871    $.ajax({
5872      url: "ajax/usuarios.ajax.php",
5873      method: "POST",
5874      data: parametros,
5875      contentType: false,
5876      cache: false,
5877      processData: false,
5878      success: function (respuesta) {
5879
5880        var respuesta = JSON.parse(respuesta);
5881
5882        if (respuesta.operacion == "ok") {
5883          toastr.success(respuesta.mensaje);
5884        } else {
5885          toastr.error(respuesta.mensaje);
5886        }
5887        $("#comprobantePago-proyecto").val('');
5888        $("#bancocomprobante-proyecto").val('');
5889        $("#numcomprobante-proyecto").val('');
5890        $("#fechacomprobante-proyecto").val('');
5891        $("#valorcomprobante-proyecto").val('');
5892        $("#modalAgregarPagoPlanProyecto").modal('hide');
5893        $('.tablaPlanes-pendientesProyectos').DataTable().ajax.reload();
5894        $('.tablaHistorialAbonoProyectos').DataTable().ajax.reload();
5895      }
5896    })
5897  }
5898}
5899
5900function subirArchivoComprobanteAbonoProyecto() {
5901  const parametros = new FormData();
5902
5903  var numeroArchivos = $("#comprobantePago-proyecto")[0].files;
5904  var codPlan = $("#codPlan-proyecto").val();
5905  var codPlanAbono = $("#codPlanAbono-proyecto").val();
5906  var numcomprobante = $("#numcomprobante-proyecto").val();
5907  var bancocomprobante = $("#bancocomprobante-proyecto").val();
5908  var valorcomprobante = $("#valorcomprobante-proyecto").val();
5909  var fechacomprobante = $("#fechacomprobante-proyecto").val();
5910  var observacioncomprobante = $("#observacioncomprobante-proyecto").val();
5911
5912  if (bancocomprobante == '1') {
5913    bancocomprobante = 'BANCO PICHINCHA';
5914  } else {
5915    bancocomprobante = 'BANCO DEL PACÍFICO';
5916  }
5917
5918  if (fechacomprobante == '') {
5919    toastr.info("Ingrese la fecha de pago");
5920    $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5921    return;
5922  }
5923  if (valorcomprobante == '') {
5924    toastr.info("Ingrese el valor de pago");
5925    $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5926    return;
5927  }
5928  if (bancocomprobante == '') {
5929    toastr.info("Ingrese la fecha de pago");
5930    $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5931    return;
5932  }
5933  if (numcomprobante == '') {
5934    toastr.info("Ingrese el número de comprobante");
5935    $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5936    return;
5937  }
5938
5939
5940
5941  let jsonCliente = [];
5942
5943  let facturarEmpresa = document.getElementById('facturarEmpresaMisDatos_proyecto1').value;
5944
5945  if (facturarEmpresa == 0) {
5946    toastr.info("Seleccione los datos de factura", "Importante", { timeOut: 3000 });
5947    $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5948    return;
5949  }
5950
5951  if (facturarEmpresa == 1) {
5952    facturarEmpresa = true;
5953    if ($("#identificacion_contador_proyecto2").val() == "") {
5954      toastr.info("Ingrese la identificación del contador", "Importante", { timeOut: 3000 });
5955      $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5956      return;
5957    }
5958
5959    if ($("#nombre_contador_proyecto2").val() == "") {
5960      toastr.info("Ingrese el nombre del contador", "Importante", { timeOut: 3000 });
5961      $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5962      return;
5963    }
5964    if ($("#direcion_contador_proyecto2").val() == "") {
5965      toastr.info("Ingrese la dirección del contador", "Importante", { timeOut: 3000 });
5966      $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5967      return;
5968    }
5969    if ($("#telefono_contador_proyecto2").val() == "") {
5970      toastr.info("ngrese el telefono del contador", "Importante", { timeOut: 3000 });
5971      $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5972      return;
5973    }
5974    if ($("#correo_contador_proyecto2").val() == "") {
5975      toastr.info("Ingrese el correo del contador", "Importante", { timeOut: 3000 });
5976      $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5977      return;
5978    }
5979
5980  } else {
5981    facturarEmpresa = false;
5982    if ($("#identificacion_cliente_proyecto").val() == "") {
5983      toastr.info("Ingrese la identificación del cliente para facturar", "Importante", { timeOut: 3000 });
5984      $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5985      return;
5986    }
5987
5988    if ($("#nombre_cliente_proyecto").val() == "") {
5989      toastr.info("Ingrese el nombre del cliente para facturar", "Importante", { timeOut: 3000 });
5990      $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5991      return;
5992    }
5993    if ($("#direccion_cliente_proyecto").val() == "") {
5994      toastr.info("Ingrese la dirección del cliente para facturar", "Importante", { timeOut: 3000 });
5995      $("#btnGuardarComprobanteProyecto").prop("disabled", false);
5996      return;
5997    }
5998    if ($("#telefono_cliente_proyecto").val() == "") {
5999      toastr.info("Ingrese el teléfono del cliente para facturar", "Importante", { timeOut: 3000 });
6000      $("#btnGuardarComprobanteProyecto").prop("disabled", false);
6001      return;
6002    }
6003    if ($("#correo_cliente_proyecto").val() == "") {
6004      toastr.info("Ingrese el correo del cliente para facturar", "Importante", { timeOut: 3000 });
6005      $("#btnGuardarComprobanteProyecto").prop("disabled", false);
6006      return;
6007    }
6008  }
6009
6010
6011
6012
6013  jsonCliente.push({
6014    identificacion_cliente: document.getElementById('identificacion_cliente_proyecto').value,
6015    nombre_cliente: document.getElementById('nombre_cliente_proyecto').value,
6016    direccion_cliente: document.getElementById('direccion_cliente_proyecto').value,
6017    telefono_cliente: document.getElementById('telefono_cliente_proyecto').value,
6018    correo_cliente: document.getElementById('correo_cliente_proyecto').value,
6019    observacion_cliente: document.getElementById('observacioncomprobante_proyecto').value,
6020    facturarConMisDatos: facturarEmpresa,
6021    identificacion_contador: document.getElementById('identificacion_contador_proyecto1').value,
6022    nombre_contador: document.getElementById('nombre_contador_proyecto1').value,
6023    direcion_contador: document.getElementById('direcion_contador_proyecto1').value,
6024    telefono_contador: document.getElementById('telefono_contador_proyecto1').value,
6025    correo_contador: document.getElementById('correo_contador_proyecto1').value,
6026    totalFactura: document.getElementById('valorcomprobante_proyecto').value,
6027    fechapago_solicitudSJ: document.getElementById('fechacomprobante_proyecto').value,
6028    bancopago_solicitudSJ: document.getElementById('bancopago_solicitudSJ_proyecto').value,
6029    numeropago_solicitudSJ: document.getElementById('numeropago_solicitudSJ_proyecto').value,
6030  });
6031
6032  parametros.append('cargarPagoPlanAbonoProyecto', true);
6033  parametros.append('codPlan', codPlan);
6034  parametros.append('codPlanAbono', codPlanAbono);
6035  parametros.append('comprobante', numcomprobante);
6036  parametros.append('bancocomprobante', bancocomprobante);
6037  parametros.append('valorcomprobante', valorcomprobante);
6038  parametros.append('fechacomprobante', fechacomprobante);
6039  parametros.append('observacioncomprobante', observacioncomprobante);
6040  parametros.append("jsonCliente", JSON.stringify(jsonCliente));
6041
6042  if (numeroArchivos.length != 0) {
6043    if (numeroArchivos[0].type == "application/pdf" || numeroArchivos[0].type == "image/png" || numeroArchivos[0].type == "image/jpeg") {
6044      parametros.append('archivo', true);
6045      parametros.append('tipo', numeroArchivos[0].type);
6046      parametros.append('file[]', numeroArchivos[0]);
6047    } else {
6048      toastr.info("El documento cargado debe ser una Imagen o PDF");
6049      $("#btnGuardarComprobanteProyecto").prop("disabled", false);
6050
6051      return false;
6052    }
6053  } else {
6054    parametros.append('archivo', false);
6055  }
6056
6057  $.ajax({
6058    url: "ajax/usuarios.ajax.php",
6059    method: "POST",
6060    data: parametros,
6061    contentType: false,
6062    cache: false,
6063    processData: false,
6064    success: function (respuesta) {
6065
6066      var respuesta = JSON.parse(respuesta);
6067
6068      if (respuesta.operacion == "ok") {
6069        setTimeout(() => {
6070          toastr.success(respuesta.mensaje);
6071          // location.reload();
6072        }, 1000);
6073
6074      } else {
6075        toastr.error(respuesta.operacion.mensaje);
6076      }
6077      $("#comprobantePago-proyecto").val('');
6078      $("#bancocomprobante-proyecto").val('');
6079      $("#numcomprobante-proyecto").val('');
6080      $("#fechacomprobante-proyecto").val('');
6081      $("#valorcomprobante-proyecto").val('');
6082      $("#modalAgregarPagoPlanProyecto").modal('hide');
6083
6084    }
6085  })
6086}
6087
6088
6089
6090$(document).on('click', '#btnGuardarComprobantePlanPrepago', function (event) {
6091  subirArchivoComprobantePagoPrepago();
6092});
6093
6094$(document).on('click', '#btnGuardarComprobantePlanPrepagoImprenta', function (event) {
6095  subirArchivoComprobantePagoPrepagoImprenta();
6096});
6097
6098$(document).on('click', '#btnGuardarComprobanteProyecto', function (event) {
6099  var site = $(this).attr("site");
6100
6101  if (site == 'empresa') {
6102    subirArchivoComprobanteAbonoProyecto();
6103  } else {
6104    subirArchivoComprobantePagoProyecto();
6105  }
6106});
6107
6108$(document).on('click', '.agregarPagoPlan', function (event) {
6109
6110  var plan = $(this).attr("plan");
6111  var comprobante = $(this).attr("comprobante");
6112  var bancocomprobanteAttr = $(this).attr("bancocomprobante");
6113  var planEmpresa = $(this).attr("planEmpresa");
6114  var valorcomprobante = $(this).attr("valorcomprobante");
6115  var fechacomprobante = $(this).attr("fechacomprobante");
6116  var documento = atob($(this).attr("documento"));
6117  var sistema = $(this).attr("sistema");
6118  var firma = '';
6119  if (sistema == 'vendeFacil') {
6120    firma = $(this).attr("numerofirma");
6121  }
6122
6123  var decoded = atob(bancocomprobanteAttr);
6124  var bancocomprobante = decodeURIComponent(escape(decoded));
6125  //$("#codPlan").val(plan);
6126  empresas1.secuenciaPlan = plan;
6127  empresas1.documentoPlan = documento;
6128  $("#bancocomprobante").val(bancocomprobante);
6129  $("#numcomprobante").val(comprobante != "n" ? atob(comprobante) : "");
6130  $("#valorcomprobante").val(valorcomprobante != "n" ? atob(valorcomprobante) : "");
6131  $("#fechacomprobante").val(fechacomprobante != "n" ? atob(fechacomprobante) : "");
6132  $("#numeroFirma").val(firma != "n" ? atob(firma) : "");
6133
6134  if (sistema == 'Contamatic') {
6135    $("#numeroFirmaGroup").hide();
6136  } else {
6137    $("#numeroFirmaGroup").show();
6138  }
6139
6140  $("#codPlanEmpresa").val(planEmpresa);
6141  $("#tipoSistemaApp").val(sistema);
6142  $("#modalAgregarPagoPlan").modal("show");
6143
6144});
6145
6146$(document).on('click', '.agregarPagoPlanFacturero', function (event) {
6147
6148  var plan = $(this).attr("plan");
6149  var comprobante = $(this).attr("comprobante");
6150  var bancocomprobanteAttr = $(this).attr("bancocomprobante");
6151  var planEmpresa = $(this).attr("planEmpresa");
6152  var valorcomprobante = $(this).attr("valorcomprobante");
6153  var fechacomprobante = $(this).attr("fechacomprobante");
6154  var documento = atob($(this).attr("documento"));
6155  var sistema = $(this).attr("sistema");
6156  var firma = $(this).attr("numerofirma");
6157
6158  var decoded = atob(bancocomprobanteAttr);
6159  var bancocomprobante = decodeURIComponent(escape(decoded));
6160
6161  //$("#codPlan").val(plan);
6162  empresas1.secuenciaPlan = plan;
6163  empresas1.documentoPlan = documento;
6164  $("#bancocomprobanteFacturero").val(bancocomprobante);
6165  $("#numcomprobanteFacturero").val(comprobante != "n" ? atob(comprobante) : "");
6166  $("#valorcomprobanteFacturero").val(valorcomprobante != "n" ? atob(valorcomprobante) : "");
6167  $("#fechacomprobanteFacturero").val(fechacomprobante != "n" ? atob(fechacomprobante) : "");
6168  var campoNumeroFirma = document.getElementById('NumeroFirmacampo');
6169
6170  if (sistema == 'Contamatic') {
6171    if (campoNumeroFirma) {
6172      campoNumeroFirma.style.display = 'none';
6173    }
6174  } else {
6175    if (campoNumeroFirma) {
6176      campoNumeroFirma.style.display = 'block';
6177      $("#numeroFirma").val(firma != "n" ? atob(firma) : "");
6178    }
6179
6180  }
6181
6182
6183
6184  $("#codPlanEmpresa").val(planEmpresa);
6185  $("#tiposistema").val(sistema);
6186  $("#modalAgregarPagoPlan").modal("show");
6187});
6188
6189
6190$(document).on('click', '.agregarPagoPlanPrepago', function (event) {
6191
6192  var plan = $(this).attr("plan");
6193  var comprobante = $(this).attr("comprobante");
6194  //var bancocomprobante=$(this).attr("bancocomprobante");
6195  var planEmpresa = $(this).attr("planEmpresa");
6196  var valorcomprobante = $(this).attr("valorcomprobante");
6197  var fechacomprobante = $(this).attr("fechacomprobante");
6198
6199  $("#codPlan-plan").val(plan);
6200  //$("#bancocomprobante").val(bancocomprobante!="n"?atob(bancocomprobante):"");
6201  $("#numcomprobante-plan").val(comprobante != "n" ? atob(comprobante) : "");
6202  $("#valorcomprobante-plan").val(valorcomprobante != "n" ? atob(valorcomprobante) : "");
6203  $("#fechacomprobante-plan").val(fechacomprobante != "n" ? atob(fechacomprobante) : "");
6204
6205  $("#codPlanEmpresa-plan").val(planEmpresa);
6206  $("#modalAgregarPagoPlanPrepago").modal("show");
6207});
6208
6209
6210$(document).on('click', '.agregarPagoPlanPrepagoImprenta', function (event) {
6211
6212  var plan = $(this).attr("plan");
6213  var comprobante = $(this).attr("comprobante");
6214  var bancocomprobante = $(this).attr("bancocomprobante");
6215  var usuario = $(this).attr("planempresa");
6216  var valorcomprobante = $(this).attr("valorcomprobante");
6217  var fechacomprobante = $(this).attr("fechacomprobante");
6218  var observacioncomprobante = $(this).attr("observacioncomprobante");
6219
6220  $("#codPlan-imprenta").val(plan);
6221  $("#bancocomprobante-imprenta").val(bancocomprobante != "n" ? atob(bancocomprobante) : "");
6222  $("#numcomprobante-imprenta").val(comprobante != "n" ? atob(comprobante) : "");
6223  $("#valorcomprobante-imprenta").val(valorcomprobante != "n" ? atob(valorcomprobante) : "");
6224  $("#fechacomprobante-imprenta").val(fechacomprobante != "n" ? atob(fechacomprobante) : "");
6225  $("#observacioncomprobante-imprenta").val(observacioncomprobante != "n" ? atob(observacioncomprobante) : "");
6226
6227  $("#codPlanEmpresa-imprenta").val(usuario);
6228  $("#modalAgregarPagoPlanPrepagoImprenta").modal("show");
6229});
6230
6231
6232$(document).on('click', '.agregarPagoPlanPrepagoProyectos', function (event) {
6233  var plan = $(this).attr("plan");
6234  var comprobante = $(this).attr("comprobante");
6235  var bancocomprobante = $(this).attr("bancocomprobante");
6236  var valorcomprobante = $(this).attr("valorcomprobante");
6237  var fechacomprobante = $(this).attr("fechacomprobante");
6238  var observacioncomprobante = $(this).attr("observacioncomprobante");
6239
6240  var fecha = fechacomprobante != "n" ? atob(fechacomprobante) : "";
6241  var fechaFormateada = fecha.split(" ")[0];
6242  $("#codPlan-proyecto").val(plan);
6243  $("#bancocomprobante-proyecto").val(bancocomprobante != "n" ? atob(bancocomprobante) : "");
6244  $("#numcomprobante-proyecto").val(comprobante != "n" ? atob(comprobante) : "");
6245  $("#valorcomprobante-proyecto").val(valorcomprobante != "n" ? atob(valorcomprobante) : "");
6246  $("#fechacomprobante-proyecto").val(fechaFormateada);
6247  $("#observacioncomprobante-proyecto").val(observacioncomprobante != "n" ? atob(observacioncomprobante) : "");
6248
6249  $("#modalAgregarPagoPlanProyecto").modal("show");
6250});
6251
6252
6253
6254
6255
6256
6257
6258$(document).on('click', '.mostrarModalPDF', function (event) {
6259
6260  var planEmpresa = $(this).attr("planEmpresa");
6261  var documentoPdf = $(this).attr("documento");
6262
6263  $("#visorPdf").attr("src", "vistas/documentos/COMPROBANTE_PAGOS/" + atob(planEmpresa) + "/" + atob(documentoPdf));
6264  $("#descargar-documento").attr("src", "vistas/documentos/COMPROBANTE_PAGOS/" + atob(planEmpresa) + "/" + atob(documentoPdf));
6265
6266
6267  $("#modalVisorPDF").modal("show");
6268});
6269
6270$(document).on('click', '#descargar-documento', function (event) {
6271  var link = $(this).attr("src");
6272  descargarLink(link, "comprobante.pdf");
6273
6274});
6275
6276
6277$(document).on('click', '.mostrarModalIMG', function (event) {
6278
6279  var planEmpresa = $(this).attr("planEmpresa");
6280  var documentoImg = $(this).attr("documento");
6281  $("#visorImagen").attr("src", "vistas/documentos/COMPROBANTE_PAGOS/" + atob(planEmpresa) + "/" + atob(documentoImg));
6282  $("#modalVisorIMG").modal("show");
6283});
6284
6285$(document).on('click', '.mostrarModalIMGImprentas', function (event) {
6286  var planUsuario = $(this).attr("planEmpresa");
6287  var documentoImg = $(this).attr("documento");
6288  $("#visorImagen").attr("src", "vistas/documentos/COMPROBANTE_PAGOS_USUARIOS/" + atob(planUsuario) + "/" + atob(documentoImg));
6289  $("#modalVisorIMG").modal("show");
6290});
6291
6292$(document).on('click', '.mostrarModalPDFImprentas', function (event) {
6293
6294  var planUsuario = $(this).attr("planEmpresa");
6295  var documentoPdf = $(this).attr("documento");
6296  $("#visorPdf").attr("src", "vistas/documentos/COMPROBANTE_PAGOS_USUARIOS/" + atob(planUsuario) + "/" + atob(documentoPdf));
6297  $("#modalVisorPDF").modal("show");
6298});
6299
6300
6301$(document).on('click', '.mostrarModalIMGProyecto', function (event) {
6302  var documentoImg = $(this).attr("documento");
6303  $("#visorImagen").attr("src", "vistas/documentos/COMPROBANTE_PAGOS_PROYECTOS/" + atob(documentoImg));
6304  $("#modalVisorIMG").modal("show");
6305});
6306
6307$(document).on('click', '.mostrarModalPDFProyecto', function (event) {
6308  var documentoPdf = $(this).attr("documento");
6309  $("#visorPdf").attr("src", "vistas/documentos/COMPROBANTE_PAGOS_PROYECTOS/" + atob(documentoPdf));
6310  $("#descargar-documento").attr("src", "vistas/documentos/COMPROBANTE_PAGOS_PROYECTOS/" + atob(documentoPdf));
6311
6312  $("#modalVisorPDF").modal("show");
6313});
6314
6315
6316$(document).on('click', '.mostrarModalIMGSoporte', function (event) {
6317  var imagenes = $(this).data("imagenes");
6318  var explicacion = atob($(this).attr("explicacion"));
6319  var explicaciones = explicacion.split('\n').filter(function (item) {
6320    return item.trim() !== '';
6321  });
6322
6323  $("#galeriaItems").empty();
6324
6325  if (imagenes.length === 0) {
6326    explicaciones.forEach(function (explicacionText, index) {
6327      $("#galeriaItems").append(`
6328        <div class="col-md-12 mb-4">
6329          <div class="razon-text">
6330            <p>${explicacionText}</p>
6331          </div>
6332        </div>
6333      `);
6334    });
6335  } else {
6336    imagenes.forEach(function (imagen, index) {
6337      var explicacionesText = explicaciones[index] || '';
6338      $("#galeriaItems").append(`
6339        <div class="col-md-6 mb-4">
6340          <div class="d-flex flex-column align-items-center">
6341            <img class="img-fluid" src="vistas/documentos/COMPROBANTE_IMG_SOPORTE/${imagen}" alt="Imagen ${index + 1}" style="max-width: 100px; margin-bottom: 10px;">
6342            <div class="razon-text">
6343              <p>${explicacionesText}</p>
6344            </div>
6345          </div>
6346        </div>
6347      `);
6348    });
6349  }
6350
6351  $("#modalVisorIMG").modal("show");
6352});
6353
6354
6355$(document).on('click', '.mostrarModalIMGProgramacion', function (event) {
6356  var imagenes = $(this).data("imagenes");
6357  var razon = atob($(this).attr("razon"));
6358  var razones = razon.split('\n').filter(function (item) {
6359    return item.trim() !== '';
6360  });
6361  $("#galeriaItemsPro").empty();
6362  if (imagenes.length === 0) {
6363    razones.forEach(function (razonText, index) {
6364      $("#galeriaItems").append(`
6365        <div class="col-md-12 mb-4">
6366          <div class="razon-text">
6367            <p>${razonText}</p>
6368          </div>
6369        </div>
6370      `);
6371    });
6372  } else {
6373    imagenes.forEach(function (imagen, index) {
6374      var razonText = razones[index] || '';
6375      $("#galeriaItemsPro").append(`
6376        <div class="col-md-6 mb-4">
6377          <div class="d-flex flex-column align-items-center">
6378            <img class="img-fluid" src="vistas/documentos/COMPROBANTE_IMG_PROGRAMACION/${imagen}" alt="Imagen ${index + 1}" style="max-width: 100px; margin-bottom: 10px;">
6379            <div class="razon-text">
6380              <p>${razonText}</p>
6381            </div>
6382          </div>
6383        </div>
6384      `);
6385    });
6386
6387  }
6388
6389  $("#modalVisorIMGProgramacion").modal("show");
6390});
6391
6392
6393$(document).on('click', '.mostrarModalPDFDoporte', function (event) {
6394  var documentoPdf = $(this).attr("documento");
6395  $("#visorPdf").attr("src", "vistas/documentos/COMPROBANTE_IMG_SOPORTE/" + atob(documentoPdf));
6396  $("#descargar-documento").attr("src", "vistas/documentos/COMPROBANTE_IMG_SOPORTE/" + atob(documentoPdf));
6397
6398  $("#modalVisorPDF").modal("show");
6399});
6400
6401
6402
6403
6404$(document).on('click', '.mostrarModalIMGFacturalo', function (event) {
6405
6406  var planEmpresa = $(this).attr("planEmpresa");
6407  var documentoImg = $(this).attr("documento");
6408  $("#visorImagen").attr("src", "vistas/documentos/COMPROBANTE_PAGOS/" + atob(planEmpresa) + "/" + atob(documentoImg));
6409  $("#modalVisorIMG").modal("show");
6410});
6411
6412$(document).on('click', '.mostrarModalPDFFacturalo', function (event) {
6413
6414  var planEmpresa = $(this).attr("planEmpresa");
6415  var documentoPdf = $(this).attr("documento");
6416
6417  $("#visorPdf").attr("src", "vistas/documentos/COMPROBANTE_PAGOS/" + atob(planEmpresa) + "/" + atob(documentoPdf));
6418  $("#descargar-documento").attr("src", "vistas/documentos/COMPROBANTE_PAGOS/" + atob(planEmpresa) + "/" + atob(documentoPdf));
6419
6420
6421  $("#modalVisorPDF").modal("show");
6422});
6423
6424$(document).on('click', '#descargar-documento', function (event) {
6425  var link = $(this).attr("src");
6426  descargarLink(link, "comprobante.pdf");
6427
6428});
6429
6430$(document).on("click", ".mostrarContentPagoContable", function () {
6431  $("#modalContentPagoContable").modal("show");
6432  let documento = atob($(this).attr("documento"));
6433  let extension = documento.split('.').pop();
6434  if (extension != "pdf") {
6435    $("#pdfContentPago").hide();
6436    $("#imgContentPago").show();
6437    $("#imgContentPago").attr("src", documento);
6438  } else {
6439    $("#imgContentPago").hide()
6440    $("#pdfContentPago").show();
6441    $("#pdfContentPago").attr("src", documento);
6442  }
6443})
6444
6445$(document).on('click', '.mostrarModalImgContamatic', function (event) {
6446
6447  var planEmpresa = $(this).attr("planEmpresa");
6448  var documentoImg = $(this).attr("documento");
6449
6450  $("#visorImagen").attr("src", "https://empresarial.contamatic.ec/sistema/" + atob(documentoImg));
6451  $("#modalVisorIMG").modal("show");
6452});
6453
6454$(document).on('click', '.verDocumentoPago', function (event) {
6455
6456
6457  var keyDocumento = $(this).attr("documento");
6458  var tipoDocumento = $(this).attr("tipo");
6459  var link = "drive/imprimir.php?key=" + keyDocumento + "&tipo=" + tipoDocumento;
6460
6461  window.open(
6462    link,
6463    "Documento",
6464    "width=800,height=700,toolbar=no,location=no,menubar=no,zoom=50"
6465  );
6466});
6467
6468
6469$(document).on("click", "#btnDescargarReporte", async function () {
6470  // Actualizar los valores de datatableSolicitudes y datatableTipoEstado
6471  var tipo = $("#filtrar_tipo_solicitud").val();
6472  var estado = $("#filtrar_tipo_estado").val();
6473
6474  window.open("RideSRI/libs/documentosticket/reporteExcel-FirmaElectronica.php?tipoSolicitud=" + tipo + "&tipoEstado=" + estado, "_blank");
6475});
6476
6477function descargarLink(uri, name) {
6478  var link = document.createElement("a");
6479  link.download = name;
6480  link.href = uri;
6481  link.click();
6482}
6483
6484
6485$(document).on("click", ".btnEliminarComprobantePlan", function () {
6486  const parametrosURL = new URLSearchParams(window.location.search);
6487
6488  var codplan = $(this).attr("plan");
6489  var planEmpresa = $(this).attr("planEmpresa");
6490  var documento = $(this).attr("documento");
6491  var sistema = $(this).attr("sistema");
6492
6493  var datos = new FormData();
6494
6495  datos.append("eliminarComprobantePago", true);
6496  datos.append("codPlan", codplan);
6497  datos.append("codPlanEmpresa", planEmpresa);
6498  datos.append("documento", documento);
6499  datos.append("sistema", sistema);
6500
6501
6502
6503  swal({
6504    title: '¿Está seguro de eliminar el comprobante de pago?',
6505    text: "¡Si no lo está puede cancelar la accíón!",
6506    type: 'warning',
6507    showCancelButton: true,
6508    confirmButtonColor: '#3085d6',
6509    cancelButtonColor: '#d33',
6510    cancelButtonText: 'Cancelar',
6511    confirmButtonText: 'Si, eliminar comprobante!'
6512  }).then(function (result) {
6513
6514    if (result.value) {
6515
6516      $.ajax({
6517        url: "ajax/empresas.ajax.php",
6518        type: "POST",
6519        data: datos,
6520        cache: false,
6521        contentType: false,
6522        processData: false,
6523
6524
6525        success: function (respuesta) {
6526          var respuesta = JSON.parse(respuesta);
6527          if (respuesta.operacion) {
6528            toastr.success('Comprobante eliminado con éxito');
6529          } else {
6530            toastr.info('Error al generar eliminar comprobante, contacte con el administrador!');
6531          }
6532          $('.tablaHistorialPlanes').DataTable().ajax.reload();
6533        }
6534      })
6535
6536    }
6537
6538  })
6539})
6540
6541
6542$("#razon").change(function () {
6543
6544  $("#nombreComercial").val($(this).val());
6545
6546
6547});
6548
6549
6550
6551/*===============================================================================
6552                            MODIFICAR PLAN PREPAGO
6553=================================================================================*/
6554
6555var documentosPrepago = 0;
6556var planSeleccionado = "";
6557
6558async function TotalDocumentosImprenta(nombre) {
6559
6560  try {
6561
6562    let parametros = new FormData();
6563    parametros.append("validarPlanUsuario", true);
6564
6565    const resultado = await fetch("ajax/usuarios.ajax.php", {
6566      method: 'POST',
6567      body: parametros
6568    });
6569    const datos = resultado.json();
6570    return datos;
6571
6572  } catch (error) {
6573    throw error;
6574  }
6575}
6576
6577async function ModificarDocumentosPlan(cantidad, plan) {
6578
6579  try {
6580
6581    let parametros = new FormData();
6582    parametros.append("cantidad", cantidad);
6583    parametros.append("detalleplan", plan);
6584    parametros.append("modificarPlanEmpresa", true);
6585
6586    const resultado = await fetch("ajax/empresas.ajax.php", {
6587      method: 'POST',
6588      body: parametros
6589    });
6590    const datos = resultado.json();
6591    return datos;
6592
6593  } catch (error) {
6594    throw error;
6595  }
6596}
6597
6598
6599
6600$(document).on("click", ".btnModificarPlanEmpresa", async function () {
6601
6602  var empresaplan = $(this).attr("codempresaplan");
6603  planSeleccionado = $(this).attr("coddetalleplan");
6604
6605  let respuesta = await TotalDocumentosImprenta();
6606  documentosPrepago = parseInt(respuesta.cantidad);
6607  $("#modalModificarPlan").modal("show");
6608});
6609
6610
6611$('#codigoModificarPlan').on('keyup paste', function (e) {
6612
6613  var campo = $(this).val();
6614  campo = campo >= 0 && campo != "" ? campo : 0;
6615
6616  if (parseInt(documentosPrepago) >= campo) {
6617
6618    $("#mensaje-agregardocumentos").show();
6619    $("#mensaje-agregardocumentos").addClass("badge-info");
6620    $("#mensaje-agregardocumentos").removeClass("badge-danger");
6621    $("#mensaje-agregardocumentos").text("Documentos restantes de su Plan Prepago: " + (documentosPrepago - campo));
6622
6623  } else {
6624
6625    $("#mensaje-agregardocumentos").show();
6626    $("#mensaje-agregardocumentos").removeClass("badge-info");
6627    $("#mensaje-agregardocumentos").addClass("badge-danger");
6628    $("#mensaje-agregardocumentos").text("La cantidad indicada sobrepasa el total de documentos electrónicos de su Plan Prepago");
6629  }
6630
6631});
6632
6633
6634$(document).on("click", "#btnModificarPlan", async function () {
6635
6636  var cantidad = $("#codigoModificarPlan").val();
6637  if (cantidad < 0) {
6638    toastr.info("La cantidad de documentos es incorrecta");
6639    return;
6640  }
6641
6642  let respuesta = await ModificarDocumentosPlan(cantidad, planSeleccionado);
6643  const datos = respuesta;
6644
6645  if (!respuesta.estado) {
6646    toastr.error(respuesta.mensaje);
6647    return;
6648  }
6649
6650
6651
6652  toastr.success(respuesta.mensaje);
6653  $("#codigoModificarPlan").val("");
6654  $("#modalModificarPlan").modal("hide");
6655  //$('.tablaEmpresa').DataTable().ajax.reload()
6656
6657  setTimeout(() => {
6658    window.location = "empresas";
6659  }, 1000);
6660
6661});
6662
6663
6664
6665
6666
6667
6668
6669
6670if (window.location.href.indexOf("crearEmpresa") > -1) {
6671
6672  const razonEmpresa = document.querySelector("#razon");
6673  const nombreComercialEmpresa = document.querySelector("#nombreComercial");
6674  const nombreMostrarEmpresa = document.querySelector("#nombreMostrar");
6675  const nombreCiudadEmpresa = document.querySelector("#ciudad");
6676  const nombreDireccionEmpresa = document.querySelector("#direccion");
6677
6678  const telefonoEmpresa = document.querySelector("#telefono1");
6679  const emailEmpresa = document.querySelector("#emailEmpresa");
6680  const codigoEmpresa = document.querySelector("#codigoArtesal");
6681  const docRepresentanteEmpresa = document.querySelector("#identificacionUsuarioEmpresa");
6682  const nombreRepresentanteEmpresa = document.querySelector("#nombresUsuarioEmpresa");
6683
6684  const nombreUsuarioEmpresa = document.querySelector("#nombresUsuarioEmpresa");
6685  const emailUsuarioEmpresa = document.querySelector("#emailEmpresa");
6686  const aliasUsuarioEmpresa = document.querySelector("#usuarioEmpresa");
6687  const passUsuarioEmpresa = document.querySelector("#passwordCodificar");
6688
6689
6690
6691
6692  razonEmpresa.addEventListener("input", (e) => {
6693    e.target.value = e.target.value.replace(/['"&%`?¿!¡{}<>]+/g, '');
6694  });
6695  nombreComercialEmpresa.addEventListener("input", (e) => {
6696    e.target.value = e.target.value.replace(/['"&%`?¿!¡{}<>]+/g, '');
6697  });
6698  nombreMostrarEmpresa.addEventListener("input", (e) => {
6699    e.target.value = e.target.value.replace(/['"&%`?¿!¡{}<>]+/g, '');
6700  });
6701  nombreCiudadEmpresa.addEventListener("input", (e) => {
6702    e.target.value = e.target.value.replace(/['"&%`?¿!¡{}<>]+/g, '');
6703  });
6704  nombreDireccionEmpresa.addEventListener("input", (e) => {
6705    e.target.value = e.target.value.replace(/['"&%`?¿!¡{}<>]+/g, '');
6706  });
6707  emailEmpresa.addEventListener("input", (e) => {
6708    e.target.value = e.target.value.replace(/['" %)(=?¿&]+/g, '');
6709  });
6710  codigoEmpresa.addEventListener("input", (e) => {
6711    e.target.value = e.target.value.replace(/['"&%]+/g, '');
6712  });
6713  docRepresentanteEmpresa.addEventListener("input", (e) => {
6714    e.target.value = e.target.value.replace(/['" &%?¿]+/g, '');
6715  });
6716  nombreRepresentanteEmpresa.addEventListener("input", (e) => {
6717    e.target.value = e.target.value.replace(/['"&%?¿]+/g, '');
6718  });
6719  nombreUsuarioEmpresa.addEventListener("input", (e) => {
6720    e.target.value = e.target.value.replace(/['"%)(=?¿&]+/g, '');
6721  });
6722  emailUsuarioEmpresa.addEventListener("input", (e) => {
6723    e.target.value = e.target.value.replace(/['" %)(=?¿&]+/g, '');
6724  });
6725
6726
6727
6728  aliasUsuarioEmpresa.addEventListener("input", (e) => {
6729    e.target.value = e.target.value.replace(/['" %)(=?¿&`?¿!¡{}<>]+/g, '');
6730  });
6731  passwordCodificar.addEventListener("input", (e) => {
6732    e.target.value = e.target.value.replace(/['" %)(=?¿&`?¿!¡{}<>]+/g, '');
6733  });
6734
6735
6736  document.getElementById('valorcomprobante').addEventListener('blur', function (e) {
6737    let value = e.target.value;
6738    value = value.replace(',', '.');
6739
6740    let number = parseFloat(value);
6741
6742    if (!isNaN(number)) {
6743      e.target.value = number.toFixed(2);
6744    }
6745
6746    let valorComprobante = $(this).val() || '0.00';
6747
6748    document.getElementById('valor_facturar').innerHTML = '$' + valorComprobante;
6749    let valor_facturar = parseFloat(this.value);
6750    var precioContador = parseFloat(document.getElementById('valor_certificado').textContent.replace('$', '').replace(',', ''));
6751
6752    const valorFacturarNum = parseFloat(valor_facturar);
6753    const precioContadorNum = parseFloat(precioContador);
6754    if (valorFacturarNum < precioContadorNum) {
6755      document.getElementById('valorcomprobante').value = "";
6756      document.getElementById('valor_facturar').innerHTML = "$0.00";
6757      toastr.info("El valor a facturar no puede ser menor al precio contador.", "Importante", { timeOut: 3000 });
6758      return;
6759    }
6760
6761
6762    let comision = valor_facturar - precioContador;
6763    document.getElementById('comision').value = comision.toFixed(2);
6764    document.getElementById('contador').value = precioContador.toFixed(2);
6765    document.getElementById('publico').value = valor_facturar.toFixed(2);
6766  });
6767
6768
6769  $(document).on("change", "#valorpago_solicitudSJ", async function () {
6770    document.getElementById('valor_facturar').innerHTML = '$' + $(this).val();
6771  });
6772
6773  $(document).on("click", ".seleccionPlanFacturacion", function (e) {
6774    let numeroDocumentos = $(this).attr("data-documentos");
6775    let referencia = $(this).attr("referencia");
6776    let codigoPlan = $(this).attr("codigoPlan");
6777    $('.seleccionPlanFacturacion').prop("style", "border:1px solid #ccc");
6778    $(this).prop("style", "border:3px solid #70a3ff");
6779    document.getElementById('seleccionPlanNormal').value = numeroDocumentos;
6780    document.getElementById('codigoPlan').value = numeroDocumentos;
6781    document.getElementById('idPlanSeleccionado').value = codigoPlan;
6782    // asignar nombre plan y precio contador
6783    const nombreplan = $(this).find(".nombrePlan").text();
6784    let precioContador = $(this).find("#precioContador").text();
6785    document.getElementById('valor_certificado').innerHTML = "$" + precioContador;
6786    document.getElementById('observacioncomprobante').value = "PLAN" + ' ' + nombreplan;
6787    document.getElementById('numdocumento').value = numeroDocumentos;
6788    document.getElementById('nombreplan').value = nombreplan;
6789    document.getElementById('referenciaPlan').value = referencia;
6790    if (referencia.trim() == "GRATUITO-ANUAL") {
6791      llenarValoresDefectoPlanGratis();
6792      $("#contenedorDiasPrueba").hide();
6793      $("#diasPrueba").val("");
6794    } else if (referencia.trim() == "PLAN PRUEBAS ILIMITADO") {
6795      resetearValoresPagoPlan();
6796      $("#contenedorDiasPrueba").show();
6797    } else {
6798      resetearValoresPagoPlan();
6799      $("#contenedorDiasPrueba").hide();
6800      $("#diasPrueba").val("");
6801    }
6802  });
6803
6804  $(document).on("click", ".seleccionPlanFacturacionVendeFacil", function (e) {
6805    let valor = $(this).attr("data-doc");
6806    $('.seleccionPlanFacturacionVendeFacil').prop("style", "border:1px solid #ccc");
6807    $(this).prop("style", "border:3px solid #70a3ff");
6808    document.getElementById('seleccionPlanNormal').value = valor;
6809    document.getElementById('codigoPlan').value = valor;
6810
6811    const tipoplan = $("#tipoPlanEmpresa").val().toUpperCase();
6812    const documentos = $(this).find(".documentos").text();
6813    const nombreplan = $(this).find(".nombrePlan").text();
6814    var precioContador = $(this).find("#precioContador").text();
6815    document.getElementById('valor_certificado').innerHTML = "$" + precioContador;
6816    document.getElementById('observacioncomprobante').value = "PLAN" + ' ' + nombreplan + ' - ' + documentos;
6817  });
6818
6819
6820  function selecionFacturero(tipoSistema) {
6821    const tipoSistemaAnterior = document.getElementById('tipoSistema').value;
6822    document.getElementById('tipoSistema').value = tipoSistema;
6823
6824    document.getElementById('btnFacturero').classList.remove('active');
6825    document.getElementById('btnFacturalo').classList.remove('active');
6826
6827    if (tipoSistemaAnterior !== tipoSistema) {
6828      limpiarPlanSeleccionado();
6829    }
6830
6831    if (tipoSistema === 'facturero') {
6832      document.getElementById('btnFacturero').classList.add('active');
6833      consultarlistadoPlanesFacturacionElectronica();
6834    } else {
6835      document.getElementById('btnFacturalo').classList.add('active');
6836      consultarListadoPlanesFacturalo();
6837    }
6838  }
6839
6840  function limpiarPlanSeleccionado() {
6841    document.getElementById('seleccionPlanNormal').value = "";
6842    document.getElementById('codigoPlan').value = "";
6843    document.getElementById('idPlanSeleccionado').value = "";
6844    document.getElementById('numdocumento').value = "";
6845    document.getElementById('nombreplan').value = "";
6846    document.getElementById('referenciaPlan').value = "";
6847    document.getElementById('valor_certificado').innerHTML = "$0.00";
6848    document.getElementById('observacioncomprobante').value = "";
6849    $("#contenedorDiasPrueba").hide();
6850    $("#diasPrueba").val("");
6851  }
6852
6853
6854
6855
6856  document.getElementById("btnFactMisDatos").addEventListener("click", () => {
6857    const btnMisDatos = document.getElementById("btnFactMisDatos");
6858    btnMisDatos.innerHTML = '<i class="fas fa-check-circle" style="color:#2d2e5b"></i> <b>Facturar con mis datos</b>';
6859    btnMisDatos.style.color = "#2d2e5b";
6860    btnMisDatos.style.border = "3px solid rgb(41, 42, 99)";
6861
6862
6863    const btnDatosCli = document.getElementById("btnFactDatosCli");
6864    btnDatosCli.innerHTML = '<b>Facturar con otros datos</b>';
6865    btnDatosCli.style.color = "#292a63";
6866    btnDatosCli.style.border = "3px solid rgb(41, 42, 99)";
6867
6868    $("#misDatos").show();
6869    $("#datosCliente").hide();
6870    document.getElementById("seleccionarDatosFacturar").value = 1;
6871    document.getElementById("facturarEmpresaMisDatos").value = 1;
6872  });
6873
6874  document.getElementById("btnFactDatosCli").addEventListener("click", () => {
6875
6876    const btnMisDatos = document.getElementById("btnFactMisDatos");
6877    btnMisDatos.innerHTML = '<b>Facturar con mis datos</b>';
6878    btnMisDatos.style.color = "#292a63";
6879    btnMisDatos.style.border = "3px solid rgb(41, 42, 99)";
6880
6881
6882    const btnDatosCli = document.getElementById("btnFactDatosCli");
6883    btnDatosCli.innerHTML = '<i class="fas fa-check-circle" style="color:#2d2e5b"></i> <b>Facturar con otros datos</b>';
6884    btnDatosCli.style.color = "#2d2e5b";
6885    btnDatosCli.style.border = "3px solid rgb(41, 42, 99)";
6886
6887    $("#misDatos").hide();
6888    $("#datosCliente").show();
6889    document.getElementById("seleccionarDatosFacturar").value = 1;
6890    document.getElementById("facturarEmpresaMisDatos").value = 2;
6891  });
6892
6893  document.getElementById('ruc').addEventListener('input', function () {
6894    document.getElementById('identificacion_cliente').value = this.value;
6895  });
6896  document.getElementById('razon').addEventListener('input', function () {
6897    document.getElementById('nombre_cliente').value = this.value;
6898  });
6899
6900  document.getElementById('direccion').addEventListener('input', function () {
6901    document.getElementById('direccion_cliente').value = this.value;
6902  });
6903
6904  document.getElementById('telefono1').addEventListener('input', function () {
6905    document.getElementById('telefono_cliente').value = this.value;
6906  });
6907  document.getElementById('emailEmpresa').addEventListener('input', function () {
6908    document.getElementById('correo_cliente').value = this.value;
6909  });
6910
6911  document.addEventListener('DOMContentLoaded', async function () {
6912    selecionFacturero('facturero');
6913  })
6914
6915  async function consultarlistadoPlanesFacturacionElectronica() {
6916    try {
6917      let parametros = new FormData();
6918      parametros.append("getPlanesFactureroElectronico", true)
6919      parametros.append("codigoUsuario", $("#codigoUsuario").val())
6920      const response = await fetch("ajax/empresas.ajax.php", {
6921        method: "POST",
6922        body: parametros
6923      });
6924      if (!response.ok) throw new Error("Error en la solicitud.");
6925
6926      const json = await response.json();
6927      if (json.operacion == false) throw new Error(json.message);
6928
6929      const contenedorPlanesFactureroElectronico = document.getElementById("contenedorPlanesFactureroElectronico");
6930      const contenedorPlanesFacturalo = document.getElementById("contenedorPlanesFacturalo");
6931      const contenedorVerPlanes = document.getElementById("contenedorVerPlanes");
6932
6933
6934      contenedorPlanesFactureroElectronico.innerHTML = "";
6935      contenedorPlanesFacturalo.innerHTML = "";
6936      contenedorVerPlanes.innerHTML = "";
6937
6938
6939
6940      contenedorPlanesFactureroElectronico.removeAttribute("hidden");
6941      contenedorPlanesFacturalo.setAttribute("hidden", true);
6942
6943
6944      json.datos.forEach((currentPlan, index) => {
6945
6946        let templatePrecio = currentPlan.REF_EMP == "GRATUITO-ANUAL" ? `Criterio - Contador: <b>$</b><b id="precioPublico" hidden>5.00</b> <b>0.00 , $5.00 o $10.00</b>` : `<b>$</b><b id="precioPublico">${currentPlan.PREC_PUBLICO}</b>`;
6947
6948        let plantillaPlanGratis = currentPlan.NOM_PLAN == "NORMAL" ? `<div id="planGratuitoContador"></div>` : '';
6949        contenedorPlanesFactureroElectronico.insertAdjacentHTML("beforeend", `
6950        <div class="opcioneContables seleccionPlanFacturacion" codigoPlan="${currentPlan.COD_PLAN}" data-documentos="${currentPlan.DOC_PLAN}" referencia="${currentPlan.REF_EMP}">
6951          <div class="title d-flex align-items-center justify-content-between">
6952            <div class="nombre-centrada">
6953              <p class="nombrePlan text-center m-0">${currentPlan.NOM_PLAN} | ${currentPlan.DESC_PLAN}</p>
6954            </div>
6955            <div class="precios text-end">
6956              <div>Precio Público:<b>${templatePrecio}</b></div>
6957              <div>Precio Contador: <b>$</b><b id="precioContador">${currentPlan.PREC_CONTADOR}</b></div>
6958            </div>
6959          </div>
6960        </div> ${plantillaPlanGratis}`);
6961
6962        if (currentPlan.REF_EMP != "GRATUITO-ANUAL") {
6963          contenedorVerPlanes.insertAdjacentHTML("beforeend", `
6964            <li class="list-group-item flex-column align-items-start">
6965              <div class="d-flex w-100 justify-content-between">
6966                <h5 class="mb-1">${currentPlan.NOM_PLAN}</h5>
6967                <span class="badge badge-info badge-pill" style="font-weight:bold; font-size:0.8rem">$${currentPlan.PREC_PUBLICO}</span>
6968              </div>
6969              <small>${currentPlan.DESC_PLAN}</small>
6970            </li>
6971          `);
6972        }
6973
6974      });
6975
6976    } catch (err) {
6977      console.error(err);
6978      toastr.error(`${err.message}`);
6979    }
6980  }
6981
6982  async function consultarListadoPlanesFacturalo() {
6983    try {
6984      let parametros = new FormData();
6985      parametros.append("getPlanesFacturalo", true)
6986      parametros.append("codigoUsuario", $("#codigoUsuario").val())
6987      const response = await fetch("ajax/empresas.ajax.php", {
6988        method: "POST",
6989        body: parametros
6990      });
6991      if (!response.ok) throw new Error("Error en la solicitud.");
6992
6993      const json = await response.json();
6994
6995      if (json.operacion == false) throw new Error(json.message);
6996      const contenedorPlanesFacturalo = document.getElementById("contenedorPlanesFacturalo");
6997      const contenedorPlanesFactureroElectronico = document.getElementById("contenedorPlanesFactureroElectronico");
6998      const contenedorVerPlanes = document.getElementById("contenedorVerPlanes");
6999
7000      contenedorPlanesFactureroElectronico.innerHTML = "";
7001      contenedorPlanesFacturalo.innerHTML = "";
7002      contenedorVerPlanes.innerHTML = "";
7003
7004
7005      contenedorPlanesFacturalo.removeAttribute("hidden");
7006      contenedorPlanesFactureroElectronico.setAttribute("hidden", true);
7007
7008
7009      json.datos.forEach((currentPlan, index) => {
7010
7011        let templatePrecio = currentPlan.REF_EMP == "GRATUITO-ANUAL" ? `Criterio - Contador: <b>$</b><b id="precioPublico" hidden>5.00</b> <b>0.00 , $5.00 o $10.00</b>` : `<b>$</b><b id="precioPublico">${currentPlan.PREC_PUBLICO}</b>`;
7012
7013        contenedorPlanesFacturalo.insertAdjacentHTML("beforeend", `
7014        <div class="opcioneContables seleccionPlanFacturacion" codigoPlan="${currentPlan.COD_PLAN}" data-documentos="${currentPlan.DOC_PLAN}" referencia="${currentPlan.REF_EMP}">
7015          <div class="title d-flex align-items-center justify-content-between">
7016            <div class="nombre-centrada">
7017              <p class="nombrePlan text-center m-0">${currentPlan.NOM_PLAN} | ${currentPlan.DESC_PLAN}</p>
7018            </div>
7019            <div class="precios text-end">
7020              <div>Precio Público:<b>${templatePrecio}</b></div>
7021              <div>Precio Contador: <b>$</b><b id="precioContador">${currentPlan.PREC_CONTADOR}</b></div>
7022            </div>
7023          </div>
7024        </div>`);
7025
7026        if (currentPlan.REF_EMP != "GRATUITO-ANUAL") {
7027          contenedorVerPlanes.insertAdjacentHTML("beforeend", `
7028            <li class="list-group-item flex-column align-items-start">
7029              <div class="d-flex w-100 justify-content-between">
7030                <h5 class="mb-1">${currentPlan.NOM_PLAN}</h5>
7031                <span class="badge badge-info badge-pill" style="font-weight:bold; font-size:0.8rem">$${currentPlan.PREC_PUBLICO}</span>
7032              </div>
7033              <small>${currentPlan.DESC_PLAN}</small>
7034            </li>
7035          `);
7036        }
7037
7038      });
7039
7040    } catch (err) {
7041      console.error(err);
7042      toastr.error(`${err.message}`);
7043    }
7044  }
7045
7046
7047
7048
7049  $(document).on("click", "#video_firma1", function (e) {
7050    const drivePreviewUrl = "https://drive.google.com/file/d/1zjlG_sRDxj1a-Na4kI8HSvaTqPgiVxA-/preview";
7051    playVideo(drivePreviewUrl, e.currentTarget);
7052  });
7053
7054  function playVideo(videoUrl, element) {
7055    const videoPlayer = document.getElementById("videoPlayer");
7056    videoPlayer.innerHTML = `
7057    <iframe src="${videoUrl}" width="100%" height="200" allow="autoplay" frameborder="0" allowfullscreen></iframe>
7058  `;
7059
7060    videoPlayer.style.paddingBottom = "56.25%";
7061
7062    const videoItems = document.getElementsByClassName("videoItem");
7063    for (let i = 0; i < videoItems.length; i++) {
7064      if (videoItems[i] !== element) {
7065        videoItems[i].style.paddingBottom = "";
7066      }
7067    }
7068  }
7069
7070
7071
7072
7073  $(document).on("input", ".validarPlanRuc", async function () {
7074    if (this.value.substring(0, 10) == $("#identificacionUsuario").val().substring(0, 10)) {
7075      try {
7076        let parametros = new FormData();
7077        parametros.append("getPlanesPorTipoFacturero", true)
7078        parametros.append("tipoPlan", "promocion")
7079        const response = await fetch("ajax/empresas.ajax.php", {
7080          method: "POST",
7081          body: parametros
7082        });
7083        if (!response.ok) throw new Error("Error en la solicitud.");
7084
7085        const json = await response.json();
7086        //verificar y listar los planes como se debe
7087        if (json.operacion == false) throw new Error(json.message);
7088        if (document.getElementById("planGratuitoContador")) {
7089          $("#planGratuitoContador").html('');
7090          json.datos.forEach((currentPlan, index) => {
7091            document.getElementById("planGratuitoContador").insertAdjacentHTML("beforeend", `
7092            <div class="custom-option seleccionPlanFacturacion" style="border: 1px solid rgb(204, 204, 204);" codigoPlan="${currentPlan.COD_PLAN}" data-documentos="${currentPlan.DOC_PLAN}" referencia="${currentPlan.REF_EMP}">
7093                <div class="text-success d-flex"><p class="nombrePlan">${currentPlan.NOM_PLAN}</p>&nbsp; | &nbsp; <p class="documentos">${currentPlan.DESC_PLAN}</p></div>
7094                <div class="title-price">
7095                    <div class="left-message">Precio Público : <b>$</b><b id="precioPublico">${currentPlan.PREC_PUBLICO}</b></div>
7096                    <div class="right-message">Precio Contador : <b>$</b><b id="precioContador">${currentPlan.PREC_CONTADOR}</b></div>
7097                </div>
7098            </div>`);
7099          });
7100        }
7101      } catch (error) {
7102        console.error(err);
7103        toastr.error(`${err.message}`);
7104      }
7105    } else {
7106      $("#planGratuitoContador").html('');
7107    }
7108  });
7109}
7110
7111function llenarValoresDefectoPlanGratis() {
7112  let fechaActual = obtenerFechaActual();
7113  $("#fechacomprobante").val(fechaActual);
7114  $("#valorcomprobante").val(0);
7115  $("#bancopago_solicitudSJ").val("1");
7116  $("#numeropago_solicitudSJ").val("0");
7117  // $("#contenedorPagoPlan").hide();
7118  $("#btnFactMisDatos").trigger("click");
7119  $("#aceptarCondiciones").prop("checked", true);
7120}
7121
7122function resetearValoresPagoPlan() {
7123  $("#valorcomprobante").val("");
7124  $("#bancopago_solicitudSJ").val("");
7125  $("#numeropago_solicitudSJ").val("");
7126  //   $("#contenedorPagoPlan").show();
7127  $("#aceptarCondiciones").prop("checked", false);
7128}
7129
7130function obtenerFechaActual() {
7131  const fechaActual = new Date();
7132  const anio = fechaActual.getFullYear();
7133  const mes = String(fechaActual.getMonth() + 1).padStart(2, '0'); // Asegura que el mes tenga 2 dígitos
7134  const dia = String(fechaActual.getDate()).padStart(2, '0'); // Asegura que el día tenga 2 dígitos
7135  const horas = String(fechaActual.getHours()).padStart(2, '0'); // Asegura que las horas tengan 2 dígitos
7136  const minutos = String(fechaActual.getMinutes()).padStart(2, '0'); // Asegura que los minutos tengan 2 dígitos
7137  const segundos = String(fechaActual.getSeconds()).padStart(2, '0'); // Asegura que los segundos tengan 2 dígitos
7138  const fechaHoraFormateada = `${anio}-${mes}-${dia} ${horas}:${minutos}:${segundos}`;
7139  return fechaHoraFormateada;
7140}
7141
7142if (window.location.href.indexOf("crear-empresa-contable") > -1) {
7143  const razonEmpresa = document.querySelector("#razon");
7144  const nombreComercialEmpresa = document.querySelector("#nombreComercial");
7145  const nombreMostrarEmpresa = document.querySelector("#nombreMostrar");
7146  const nombreCiudadEmpresa = document.querySelector("#ciudad");
7147  const nombreDireccionEmpresa = document.querySelector("#direccion");
7148  const emailEmpresa = document.querySelector("#emailEmpresa");
7149  const codigoEmpresa = document.querySelector("#codigoArtesal");
7150  const docRepresentanteEmpresa = document.querySelector("#idRepresentante");
7151  const nombreRepresentanteEmpresa = document.querySelector("#nombreRepresentante");
7152  const aliasUsuarioEmpresa = document.querySelector("#usuarioEmpresa");
7153  const passUsuarioEmpresa = document.querySelector("#passwordCodificar");
7154
7155  razonEmpresa.addEventListener("input", (e) => {
7156    e.target.value = e.target.value.replace(/['"&%`?¿!¡{}<>]+/g, '');
7157  });
7158  nombreComercialEmpresa.addEventListener("input", (e) => {
7159    e.target.value = e.target.value.replace(/['"&%`?¿!¡{}<>]+/g, '');
7160  });
7161  nombreMostrarEmpresa.addEventListener("input", (e) => {
7162    e.target.value = e.target.value.replace(/['"&%`?¿!¡{}<>]+/g, '');
7163  });
7164  nombreCiudadEmpresa.addEventListener("input", (e) => {
7165    e.target.value = e.target.value.replace(/['"&%`?¿!¡{}<>]+/g, '');
7166  });
7167  nombreDireccionEmpresa.addEventListener("input", (e) => {
7168    e.target.value = e.target.value.replace(/['"&%`?¿!¡{}<>]+/g, '');
7169  });
7170  emailEmpresa.addEventListener("input", (e) => {
7171    e.target.value = e.target.value.replace(/['" %)(=?¿&]+/g, '');
7172  });
7173  codigoEmpresa.addEventListener("input", (e) => {
7174    e.target.value = e.target.value.replace(/['"&%]+/g, '');
7175  });
7176  docRepresentanteEmpresa.addEventListener("input", (e) => {
7177    e.target.value = e.target.value.replace(/['" &%?¿]+/g, '');
7178  });
7179  nombreRepresentanteEmpresa.addEventListener("input", (e) => {
7180    e.target.value = e.target.value.replace(/['"&%?¿]+/g, '');
7181  });
7182
7183  aliasUsuarioEmpresa.addEventListener("input", (e) => {
7184    e.target.value = e.target.value.replace(/['" %)(=?¿&@`?¿.,!¡{}<>]+/g, '');
7185  });
7186  passUsuarioEmpresa.addEventListener("input", (e) => {
7187    e.target.value = e.target.value.replace(/['" %)(=?¿&@`?¿.,!¡{}<>]+/g, '');
7188  });
7189
7190  $(document).on('input', '.requerircamponumerico', function () {
7191    this.value = this.value.replace(/[^0-9,.]+/g, '');
7192  });
7193
7194  $(document).on("input", '#razon', function () {
7195    if ($(this).val().length >= 280) {
7196      $(this).val($(this).val().substr(0, 280));
7197    }
7198  });
7199
7200  $(document).on("input", '#nombreComercial', function () {
7201    if ($(this).val().length >= 280) {
7202      $(this).val($(this).val().substr(0, 280));
7203    }
7204  });
7205  $(document).on("input", '#nombreMostrar', function () {
7206    if ($(this).val().length >= 280) {
7207      $(this).val($(this).val().substr(0, 280));
7208    }
7209  });
7210
7211  $(document).on("input", '#ciudad', function () {
7212    if ($(this).val().length >= 280) {
7213      $(this).val($(this).val().substr(0, 280));
7214    }
7215  });
7216
7217  $(document).on("input", '#direccion', function () {
7218    if ($(this).val().length >= 280) {
7219      $(this).val($(this).val().substr(0, 280));
7220    }
7221  });
7222
7223  $(document).on("input", '#usuarioEmpresa', function () {
7224    if ($(this).val().length >= 20) {
7225      $(this).val($(this).val().substr(0, 20));
7226    }
7227  });
7228
7229  $(document).on("input", '#passwordCodificar', function () {
7230    if ($(this).val().length >= 20) {
7231      $(this).val($(this).val().substr(0, 20));
7232    }
7233  });
7234
7235  document.addEventListener('DOMContentLoaded', async function () {
7236    $("#tipoPlanEmpresaContable").val("anual");
7237    $("#tipoPlanEmpresaContable").trigger("change");
7238  })
7239
7240
7241  $(document).on("change", "#tipoPlanEmpresaContable", async function () {
7242    let tipoPlan = $(this).val().toLowerCase();
7243    listarPlanesEnSelect(tipoPlan);
7244  });
7245  let documentos = '';
7246  let tipoplan = '';
7247  let precio = '';
7248
7249  $(document).on("click", ".seleccionContable", function (e) {
7250    let planEmpresa = document.getElementById('tipoPlanEmpresaContable').value;
7251    let precio = $(this).attr("data-precioPublico");
7252    let precioContador = $(this).attr("data-preciocontador");
7253    let esgratuito = $(this).attr("data-esGratuito");
7254    let idPlan = $(this).attr("data-idPlan");
7255    let ilimitado = $(this).attr("data-ilimitado");
7256    tipoplan = $(this).attr("data-nombrePlan");
7257    numeroDocumentos = $(this).attr("data-documentos");
7258    if (tipoplan === 'PLAN GRATUITO') {
7259      let parametros = new FormData();
7260      parametros.append("obtenerUsoPlanGratuito", true);
7261      parametros.append("nombre", 'PLAN GRATUITO');
7262      try {
7263        $.ajax({
7264          url: "ajax/empresa-contamatic.ajax.php",
7265          type: "POST",
7266          data: parametros,
7267          cache: false,
7268          contentType: false,
7269          processData: false,
7270          dataType: "json",
7271
7272          success: function (respuesta) {
7273            if (respuesta.length > 0) {
7274              return toastr.warning("Ya utilizo el plan gratuito, seleccione otro plan");
7275            }
7276          }
7277        });
7278      } catch (error) {
7279        console.log(error);
7280        toastr.error('Hubo un problema al obtener la información del perfil');
7281      }
7282    }
7283    $("#montoContrato").val(precio);
7284
7285    documentos = Number(ilimitado) == 1 ? "ILIMITADOS DOCUMENTOS" : numeroDocumentos + " DOCUMENTOS";
7286
7287    $("#esGratuito").val(esgratuito);
7288    $("#idPlanEmpresa").val(idPlan);
7289    $("#ilimitado").val(ilimitado);
7290    let valor_certificado = 0;
7291    if (planEmpresa == 'mensual') {
7292      valor_certificado = precio;
7293    } else {
7294      valor_certificado = (precio / 2).toFixed(2);
7295      if (tipoplan.trim() === ".PRO") {
7296        valor_certificado = 97.54
7297      } else if (tipoplan === 'PLAN CONTADOR') {
7298        valor_certificado = precioContador;
7299      }
7300    }
7301
7302    if (parseInt(esgratuito) == 1) {
7303      $("#mensaje-info-gratuito").show();
7304      $("#contenedorRolEmpresa").show();
7305    } else {
7306      $("#mensaje-info-gratuito").hide();
7307      $("#contenedorRolEmpresa").hide();
7308    }
7309
7310    $('.seleccionContable').prop("style", "border:1px solid #ccc");
7311    $(this).prop("style", "border:3px solid #292a63; background-color: #292a6317");
7312
7313    document.getElementById('valor_certificado').innerHTML = "$" + valor_certificado;
7314    actualizarObservacion();
7315    $("#seleccionPlanEmpresa").val(numeroDocumentos);
7316  });
7317
7318  async function listarPlanesEnSelect(tipoPlan) {
7319    let planesContable = await obtenerPlanesContable(tipoPlan);
7320    if (!planesContable.operacion) {
7321      toastr.error("No se pudo obtener el listado de planes");
7322      return;
7323    }
7324    let selectPlan = document.getElementById("itemsPlanesDisponibles");
7325    const contenedorVerPlanes = document.getElementById("contenedorVerPlanes");
7326    let contenidoPlanes = "";
7327
7328    planesContable.datos.forEach(plan => {
7329      if (plan.ESTADO == 1) {
7330        let numeroDocumentos = plan.ILIMITADO == 1 ? "ILIMITADOS DOCUMENTOS" : plan.NUM_DOCU + " DOCUMENTOS";
7331        let esGratis = plan.NOMBRE == 'PLAN GRATUITO' ? 1 : 0;
7332        let precioPublico = plan.PREC_PUB;
7333        if (plan.NOMBRE === 'PLAN CONTADOR') {
7334          precioPublico = 'No hay';
7335        }
7336
7337
7338        if (plan.NOMBRE != "PLAN GRATUITO CONTADOR REGISTRADO") {
7339          contenidoPlanes += `
7340        <div class="opcioneContables seleccionContable" data-idPlan="${plan.COD_PLAN}" data-nombrePlan="${plan.NOMBRE}" data-documentos="${plan.NUM_DOCU}" data-ilimitado="${plan.ILIMITADO}" data-esGratuito="${esGratis}" data-precioPublico="${plan.PREC_PUB}" data-precioContador="${plan.PREC_CONT}">
7341          <div class="title d-flex align-items-center justify-content-between">
7342            <div class="nombre-centrada">
7343              <p class="nombrePlan text-center m-0">${plan.NOMBRE} | ${numeroDocumentos}</p>
7344            </div>
7345            <div class="precios text-end">
7346              <div>Precio Público: <b>$</b><b id="precioContador">${precioPublico}</b></div>
7347              <div>Precio Contador: <b>$</b><b id="precioContador">${plan.PREC_CONT}</b></div>
7348            </div>
7349          </div>
7350        </div> `;
7351
7352          if (plan.NOMBRE != 'PLAN CONTADOR') {
7353            contenedorVerPlanes.insertAdjacentHTML("beforeend", `
7354            <li class="list-group-item flex-column align-items-start">
7355              <div class="d-flex w-100 justify-content-between">
7356                <h5 class="mb-1">${plan.NOMBRE}</h5>
7357                <span class="badge badge-info badge-pill" style="font-weight:bold; font-size:0.8rem">$${precioPublico}</span>
7358              </div>
7359              <small>${numeroDocumentos}</small>
7360            </li>
7361          `);
7362          } else {
7363            contenedorVerPlanes.insertAdjacentHTML("beforeend", `
7364            <li class="list-group-item flex-column align-items-start">
7365              <div class="d-flex w-100 justify-content-between">
7366                <h5 class="mb-1">${plan.NOMBRE}</h5>
7367                <span class="badge badge-info badge-pill" style="font-weight:bold; font-size:0.8rem">$123.22</span>
7368              </div>
7369              <small>${numeroDocumentos}</small>
7370            </li>
7371          `);
7372          }
7373        }
7374      }
7375    });
7376    selectPlan.innerHTML = contenidoPlanes;
7377
7378    $("#mensaje-info-gratuito").hide();
7379    $("#contenedorRolEmpresa").hide();
7380  }
7381
7382
7383  $(document).on("click", "#video_firma2", function (e) {
7384    const drivePreviewUrl = "https://drive.google.com/file/d/1w8lyR1woetJ4iuVvSYhz9qMePcKReOgi/preview";
7385    playVideo(drivePreviewUrl, e.currentTarget);
7386  });
7387
7388  function playVideo(videoUrl, element) {
7389    const videoPlayer = document.getElementById("videoPlayer");
7390    videoPlayer.innerHTML = `
7391    <iframe src="${videoUrl}" width="100%" height="200" allow="autoplay" frameborder="0" allowfullscreen></iframe>
7392  `;
7393
7394    videoPlayer.style.paddingBottom = "56.25%";
7395
7396    const videoItems = document.getElementsByClassName("videoItem");
7397    for (let i = 0; i < videoItems.length; i++) {
7398      if (videoItems[i] !== element) {
7399        videoItems[i].style.paddingBottom = "";
7400      }
7401    }
7402  }
7403
7404  async function obtenerPlanesContable(planType) {
7405    try {
7406      let parametros = new FormData();
7407      parametros.append("accoutingPlan", true);
7408      parametros.append("planType", planType);
7409      let resultado = await fetch(`ajax/empresas.ajax.php`, {
7410        method: "POST",
7411        body: parametros
7412      });
7413      let datos = await resultado.json();
7414      return datos;
7415    } catch (error) {
7416      console.error("obtenerPlanEmpresa() :" + error);
7417    }
7418  }
7419
7420  document.getElementById("btnFactMisDatos").addEventListener("click", () => {
7421    const btnMisDatos = document.getElementById("btnFactMisDatos");
7422    btnMisDatos.innerHTML = '<i class="fas fa-check-circle" style="color:#2d2e5b"></i> <b>Facturar con mis datos</b>';
7423    btnMisDatos.style.color = "#2d2e5b";
7424    btnMisDatos.style.border = "3px solid rgb(41, 42, 99)";
7425
7426
7427    const btnDatosCli = document.getElementById("btnFactDatosCli");
7428    btnDatosCli.innerHTML = '<b>
7428Facturar con otros datos</b>';
7429    btnDatosCli.style.color = "#292a63";
7430    btnDatosCli.style.border = "3px solid rgb(41, 42, 99)";
7431
7432    $("#misDatos").show();
7433    $("#datosCliente").hide();
7434    document.getElementById("seleccionarDatosFacturar").value = 1;
7435    document.getElementById("facturarEmpresaMisDatos").value = 1;
7436  });
7437
7438  document.getElementById("btnFactDatosCli").addEventListener("click", () => {
7439
7440    const btnMisDatos = document.getElementById("btnFactMisDatos");
7441    btnMisDatos.innerHTML = '<b>Facturar con mis datos</b>';
7442    btnMisDatos.style.color = "#292a63";
7443    btnMisDatos.style.border = "3px solid rgb(41, 42, 99)";
7444
7445
7446    const btnDatosCli = document.getElementById("btnFactDatosCli");
7447    btnDatosCli.innerHTML = '<i class="fas fa-check-circle" style="color:#2d2e5b"></i> <b>Facturar con otros datos</b>';
7448    btnDatosCli.style.color = "#2d2e5b";
7449    btnDatosCli.style.border = "3px solid rgb(41, 42, 99)";
7450
7451    $("#misDatos").hide();
7452    $("#datosCliente").show();
7453    document.getElementById("seleccionarDatosFacturar").value = 1;
7454    document.getElementById("facturarEmpresaMisDatos").value = 2;
7455  });
7456
7457
7458  document.getElementById('ruc').addEventListener('input', function () {
7459    document.getElementById('identificacion_cliente').value = this.value;
7460  });
7461  document.getElementById('razon').addEventListener('input', function () {
7462    document.getElementById('nombre_cliente').value = this.value;
7463  });
7464
7465  document.getElementById('direccion').addEventListener('input', function () {
7466    document.getElementById('direccion_cliente').value = this.value;
7467  });
7468
7469  document.getElementById('telefono1').addEventListener('input', function () {
7470    document.getElementById('telefono_cliente').value = this.value;
7471  });
7472  document.getElementById('emailEmpresa').addEventListener('input', function () {
7473    document.getElementById('correo_cliente').value = this.value;
7474  });
7475
7476
7477  document.getElementById('seleccionPlanEmpresa').addEventListener('change', function () {
7478    let selectedOption = this.options[this.selectedIndex];
7479    let text = selectedOption.text;
7480    let parts = text.split('|');
7481    let precioCompleto = parts[2].trim();
7482    let valor_certificado = 0;
7483    tipoplan = parts[0].trim().replace(/^\./, '');
7484    documentos = parts[1].trim();
7485    precio = precioCompleto.split(' ')[0];
7486    let planEmpresa = document.getElementById('tipoPlanEmpresaContable').value;
7487    if (planEmpresa == 'contabilidad') {
7488      valor_certificado = precio;
7489    } else {
7490      valor_certificado = (precio / 2).toFixed(2);
7491      if (parts[0].trim() === ".PRO") {
7492        valor_certificado = 97.54
7493      }
7494    }
7495    if (Number(selectedOption.getAttribute("esgratuito")) == 1) {
7496      $("#mensaje-info-gratuito").show();
7497      $("#contenedorRolEmpresa").show();
7498    } else {
7499      $("#mensaje-info-gratuito").hide();
7500      $("#contenedorRolEmpresa").hide();
7501
7502    }
7503
7504    document.getElementById('valor_certificado').innerHTML = "$" + valor_certificado;
7505    actualizarObservacion();
7506  });
7507
7508  document.getElementById('valorcomprobante').addEventListener('blur', function (e) {
7509    let value = e.target.value;
7510    value = value.replace(',', '.');
7511
7512    let number = parseFloat(value);
7513
7514    if (!isNaN(number)) {
7515      e.target.value = number.toFixed(2);
7516    }
7517
7518    let valorComprobante = $(this).val() || '0.00';
7519
7520    document.getElementById('valor_facturar').innerHTML = '$' + valorComprobante;
7521    let valor_facturar = parseFloat(this.value).toFixed(2);
7522    var precioContador = parseFloat(document.getElementById('valor_certificado').textContent.replace('$', '').replace(',', ''));
7523
7524    const valorFacturarNum = parseFloat(valor_facturar);
7525    const precioContadorNum = parseFloat(precioContador);
7526    if (valorFacturarNum < precioContadorNum) {
7527      document.getElementById('valorcomprobante').value = "";
7528      document.getElementById('valor_facturar').innerHTML = "$0.00";
7529      toastr.info("El valor a facturar no puede ser menor al precio contado.", "Importante", { timeOut: 3000 });
7530      return;
7531    }
7532
7533  });
7534
7535
7536  function actualizarObservacion() {
7537    let selectedPlan = document.getElementById('tipoPlanEmpresaContable').value;
7538    if (selectedPlan === 'mensual') {
7539      document.getElementById('observacioncomprobante').value = tipoplan + ' - ' + documentos;
7540    } else {
7541      document.getElementById('observacioncomprobante').value = "PLAN" + ' ' + tipoplan + ' - ' + documentos;
7542    }
7543
7544  }
7545
7546
7547}
7548
7549$(document).on("input", ".requerircampodecimal", function () {
7550  let value = this.value;
7551  value = value.replace(/[^0-9\.]+/g, '');
7552  let firstDotIndex = value.indexOf('.');
7553  if (firstDotIndex !== -1) {
7554    value = value.substring(0, firstDotIndex + 1) +
7555      value.substring(firstDotIndex + 1).replace(/\./g, '');
7556  }
7557  this.value = value;
7558});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.