(711,'core_formulario[8].javascript','2024-11-21 10:02:00','rafael',383,13568,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, \n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    console.log(\"hola\");\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if(!horaInicio || !horaFin) {\n        return;\n    }\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    var diff = hfMom.diff(hiMom);\n    console.log(\"diff\", diff);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ \n    console.log(\"hola\", $(\'#hora_inicio\').val());\n    var formatedValue = e.date.format(e.date._f);\n    console.log(\"formatedValue\", formatedValue);\n    calcularTiempo();\n});\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ \n    console.log(\"hola\", $(\'#hora_fin\').val());\n    var formatedValue = e.date.format(e.date._f);\n    console.log(\"formatedValue\", formatedValue);\n    calcularTiempo();\n});\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(712,'core_formulario[8].javascript','2024-11-21 10:05:00','rafael',374,13345,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, \n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    console.log(\"hola\");\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if(!horaInicio || !horaFin) {\n        return;\n    }\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const  duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asMinutes();\n    console.log(\"minutes\", minutes);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(713,'core_formulario[8].javascript','2024-11-21 10:05:00','rafael',374,13347,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, \n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    console.log(\"hola\");\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if(!horaInicio || !horaFin) {\n        return;\n    }\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asMinutes();\n    console.log(\"minutes\", minutes);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(714,'core_formulario[8].javascript','2024-11-21 10:06:00','rafael',374,13343,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, \n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    console.log(\"hola\");\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if(!horaInicio || !horaFin) {\n        return;\n    }\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asMinutes();\n    $(\'#cantidad\').val(minutes);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(715,'core_formulario[8].javascript','2024-11-21 10:06:00','rafael',374,13346,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, \n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    console.log(\"hola\");\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if(!horaInicio || !horaFin) {\n        return;\n    }\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asMinutes();\n    $(\'#cantidad\').val(minutes || 0);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(716,'core_formulario[8].javascript','2024-11-21 10:06:00','rafael',374,13324,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, \n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if(!horaInicio || !horaFin) {\n        return;\n    }\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asMinutes();\n    $(\'#cantidad\').val(minutes || 0);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(717,'core_formulario[8].javascript','2024-11-21 10:06:00','rafael',371,13306,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, \n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if(!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asMinutes();\n    $(\'#cantidad\').val(minutes || 0);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(718,'core_formulario[8].javascript','2024-11-21 10:07:00','rafael',371,13307,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, \n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if(!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asMinutes();\n    $(\'#cantidad\').val(minutes || 0);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(719,'core_formulario[8].javascript','2024-11-21 10:10:00','rafael',371,13307,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, \n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asMinutes();\n    $(\'#cantidad\').val(minutes || 0);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(720,'core_formulario[8].javascript','2024-11-21 10:13:00','rafael',379,13699,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asMinutes();\n    $(\'#cantidad\').val(minutes || 0);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(721,'core_formulario[8].javascript','2024-11-21 10:14:00','rafael',379,13700,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(minutes || 0);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(722,'core_formulario[8].javascript','2024-11-21 10:18:00','rafael',379,13712,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 0));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(723,'core_formulario[8].javascript','2024-11-21 10:18:00','rafael',379,13712,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 1));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(724,'core_formulario[8].javascript','2024-11-21 10:18:00','rafael',379,13717,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 1) || 1);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B');
INSERT INTO `core_pcoder_historial` VALUES (725,'core_formulario[8].javascript','2024-11-21 10:20:00','rafael',379,13717,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 1) || 1);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(726,'core_evento_objeto[197].javascript','2024-11-21 10:46:00','rafael',1,13,'getProduct();','B'),(727,'core_formulario[8].javascript','2024-11-21 10:48:00','rafael',388,13986,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 1) || 1);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    console.log();\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(728,'mod/app_productos/index.php','2024-11-21 10:49:00','rafael',31,657,'<?php\n\nif ($PCO_Accion == \"PRODUCTOS_getProductosByProveedor\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id_proveedor = \'$idProveedor\'\n    \")->fetchAll());\n    die();\n}\n\nif ($PCO_Accion == \"PRODUCTOS_getNombreProductoById\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT nombre\n        FROM app_productos\n        WHERE id = \'$id\'\n    \")->fetch());\n    die();\n}\n\nif ($PCO_Accion == \"PRODUCTOS_getProductById\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_productos\n        WHERE id = \'$id\'\n    \")->fetch());\n    die();\n}','A'),(729,'mod/app_productos/index.php','2024-11-21 10:49:00','rafael',31,657,'<?php\n\nif ($PCO_Accion == \"PRODUCTOS_getProductosByProveedor\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id_proveedor = \'$idProveedor\'\n    \")->fetchAll());\n    die();\n}\n\nif ($PCO_Accion == \"PRODUCTOS_getNombreProductoById\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT nombre\n        FROM app_productos\n        WHERE id = \'$id\'\n    \")->fetch());\n    die();\n}\n\nif ($PCO_Accion == \"PRODUCTOS_getProductById\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_productos\n        WHERE id = \'$id\'\n    \")->fetch());\n    die();\n}','A'),(730,'core_formulario[8].javascript','2024-11-21 10:50:00','rafael',388,13988,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 1) || 1);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    console.log(resp);\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(731,'mod/app_productos/index.php','2024-11-21 10:50:00','rafael',32,669,'<?php\n\nif ($PCO_Accion == \"PRODUCTOS_getProductosByProveedor\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id_proveedor = \'$idProveedor\'\n    \")->fetchAll());\n    die();\n}\n\nif ($PCO_Accion == \"PRODUCTOS_getNombreProductoById\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT nombre\n        FROM app_productos\n        WHERE id = \'$id\'\n    \")->fetch());\n    die();\n}\n\nif ($PCO_Accion == \"PRODUCTOS_getProductById\")\n{\n    if($id)\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_productos\n        WHERE id = \'$id\'\n    \")->fetch());\n    die();\n}','A'),(732,'mod/app_productos/index.php','2024-11-21 10:51:00','rafael',32,689,'<?php\n\nif ($PCO_Accion == \"PRODUCTOS_getProductosByProveedor\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id_proveedor = \'$idProveedor\'\n    \")->fetchAll());\n    die();\n}\n\nif ($PCO_Accion == \"PRODUCTOS_getNombreProductoById\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT nombre\n        FROM app_productos\n        WHERE id = \'$id\'\n    \")->fetch());\n    die();\n}\n\nif ($PCO_Accion == \"PRODUCTOS_getProductById\")\n{\n    if($id)\n        echo json_encode(PCO_EjecutarSQL(\"\n            SELECT *\n            FROM app_productos\n            WHERE id = \'$id\'\n        \")->fetch());\n    die();\n}','A'),(733,'mod/app_productos/index.php','2024-11-21 10:51:00','rafael',31,657,'<?php\n\nif ($PCO_Accion == \"PRODUCTOS_getProductosByProveedor\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id_proveedor = \'$idProveedor\'\n    \")->fetchAll());\n    die();\n}\n\nif ($PCO_Accion == \"PRODUCTOS_getNombreProductoById\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT nombre\n        FROM app_productos\n        WHERE id = \'$id\'\n    \")->fetch());\n    die();\n}\n\nif ($PCO_Accion == \"PRODUCTOS_getProductById\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_productos\n        WHERE id = \'$id\'\n    \")->fetch());\n    die();\n}','A'),(734,'core_formulario[8].javascript','2024-11-21 10:55:00','rafael',390,14109,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 1) || 1);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n    console.log(resp.precio_venta);\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(735,'core_formulario[8].javascript','2024-11-21 10:56:00','rafael',389,14078,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 1) || 1);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio)\n        $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_inicio\').show();\n        \n        //Mostrar Hora Fin\n    $(\'#PCOContenedor_hora_fin\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_hora_fin\').show();\n        \n        //Mostrar Guaje\n        $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado)\n        $(\'#PCOContenedor_guaje\').show();\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(736,'core_formulario[8].javascript','2024-11-21 10:59:00','rafael',383,13935,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 1) || 1);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(737,'core_formulario[8].javascript','2024-11-21 10:59:00','rafael',383,13935,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 1) || 1);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n        \n        //Mostar hora inicio\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(738,'core_formulario[8].javascript','2024-11-21 11:05:00','rafael',382,13906,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 1) || 1);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n        \n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(739,'core_formulario[8].javascript','2024-11-21 11:05:00','rafael',382,13898,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val(Math.round(minutes || 1) || 1);\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(740,'core_formulario[8].javascript','2024-11-21 11:09:00','rafael',382,13894,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val((minutes || 1).toFixed(2));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(741,'core_formulario[8].javascript','2024-11-21 11:10:00','rafael',382,13890,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours();\n    $(\'#cantidad\').val((minutes).toFixed(2));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(742,'core_formulario[8].javascript','2024-11-21 11:10:00','rafael',382,13893,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours() || 0;\n    $(\'#cantidad\').val((minutes).toFixed(2));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(743,'core_formulario[8].javascript','2024-11-21 11:11:00','rafael',385,14050,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours() || 0;\n    $(\'#cantidad\').val((minutes).toFixed(2));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&hora_inicio=\' + hora_inicio.value +\n                    \'&hora_fin=\' + hora_fin.value +\n                    \'&guaje=\' + guaje.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(744,'mod/app_ventas/index.php','2024-11-21 11:13:00','rafael',176,7339,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva) VALUES (?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"]);\n        /* $result = calcularTotalVenta($id, 1);\n        \n        $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n\n    //sleep(2);\n    // echo \"$PCO_Valor\";\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}','A'),(745,'core_formulario[8].javascript','2024-11-21 11:16:00','rafael',385,14050,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours() || 0;\n    $(\'#cantidad\').val((minutes).toFixed(2));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&hora_inicio=\' + hora_inicio.value +\n                    \'&hora_fin=\' + hora_fin.value +\n                    \'&guaje=\' + guaje.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(746,'mod/app_ventas/index.php','2024-11-21 11:17:00','rafael',176,7461,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        /* $result = calcularTotalVenta($id, 1);\n        \n        $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n\n    //sleep(2);\n    // echo \"$PCO_Valor\";\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}','A'),(747,'core_formulario[8].javascript','2024-11-21 11:21:00','rafael',385,14050,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours() || 0;\n    $(\'#cantidad\').val((minutes).toFixed(2));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&hora_inicio=\' + hora_inicio.value +\n                    \'&hora_fin=\' + hora_fin.value +\n                    \'&guaje=\' + guaje.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(748,'core_formulario[8].javascript','2024-11-21 11:29:00','rafael',385,14056,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours() || 0;\n    $(\'#cantidad\').val((minutes).toFixed(2));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&hora_inicio=\' + hora_inicio.value +\n                    \'&hora_fin=\' + hora_fin.value +\n                    \'&guaje=\' + guaje.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    /* if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    } */\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(749,'core_formulario[8].javascript','2024-11-21 11:38:00','rafael',385,14056,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours() || 0;\n    $(\'#cantidad\').val((minutes).toFixed(2));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&hora_inicio=\' + hora_inicio.value +\n                    \'&hora_fin=\' + hora_fin.value +\n                    \'&guaje=\' + guaje.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    /* if(dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    } */\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(750,'mod/app_ventas/index.php','2024-11-21 11:40:00','rafael',173,7418,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        /* $result = calcularTotalVenta($id, 1);\n        \n        $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}','A'),(751,'core_formulario[8].javascript','2024-11-21 11:56:00','rafael',385,14082,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours() || 0;\n    $(\'#cantidad\').val((minutes).toFixed(2));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&hora_inicio=\' + hora_inicio.value +\n                    \'&hora_fin=\' + hora_fin.value +\n                    \'&guaje=\' + guaje.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(tipo_pago.value != \'credito\' && dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),(752,'core_formulario[8].javascript','2024-11-21 11:57:00','rafael',385,14082,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours() || 0;\n    $(\'#cantidad\').val((minutes).toFixed(2));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        $(\'#PCOContenedor_firma\').hide();\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&hora_inicio=\' + hora_inicio.value +\n                    \'&hora_fin=\' + hora_fin.value +\n                    \'&guaje=\' + guaje.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    if(tipo_pago.value != \'credito\' && dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),