(13198,20,'mariano','2025-02-17 16:09:19','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13199,36,'mariano','2025-02-17 16:09:20','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13200,24,'mariano','2025-02-17 16:09:28','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.numero_documento,app_clientes.nombre_completo,app_ventas.placa,app_ventas.tipo_pago,FORMAT(app_ventas.total, 0),app_ventas.usuario as User,app_opcionlista.valor_visual,DATEDIFF(CURDATE(), app_ventas.fecha),FORMAT(app_ventas.abono, 0),FORMAT(app_ventas.total - app_ventas.abono, 0),if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.fecha >= \"\"  AND    app_ventas.fecha <= \"\"  AND    app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_pago = \'Credito\'  AND    app_ventas.factura_pagada = 0  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno ',''),(13201,24,'mariano','2025-02-17 16:09:41','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.numero_documento,app_clientes.nombre_completo,app_ventas.placa,app_ventas.tipo_pago,FORMAT(app_ventas.total, 0),app_ventas.usuario as User,app_opcionlista.valor_visual,DATEDIFF(CURDATE(), app_ventas.fecha),FORMAT(app_ventas.abono, 0),FORMAT(app_ventas.total - app_ventas.abono, 0),if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.fecha >= \"2025-02-15\"  AND    app_ventas.fecha <= \"2025-02-17\"  AND    app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_pago = \'Credito\'  AND    app_ventas.factura_pagada = 0  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno ',''),(13202,24,'mariano','2025-02-17 16:09:48','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.numero_documento,app_clientes.nombre_completo,app_ventas.placa,app_ventas.tipo_pago,FORMAT(app_ventas.total, 0),app_ventas.usuario as User,app_opcionlista.valor_visual,DATEDIFF(CURDATE(), app_ventas.fecha),FORMAT(app_ventas.abono, 0),FORMAT(app_ventas.total - app_ventas.abono, 0),if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.fecha >= \"2025-01-01\"  AND    app_ventas.fecha <= \"2025-02-18\"  AND    app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_pago = \'Credito\'  AND    app_ventas.factura_pagada = 0  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno ','N. Factura,Fecha,N° Docu Cliente,Cliente,Placa,Tipo Pago,Total Factura,Vendedor,Centro de Costo,Edad de Cartera,Abano,Total a Pagar,Factura electronica'),(13203,20,'mariano','2025-02-17 16:10:00','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13204,36,'mariano','2025-02-17 16:10:00','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13205,4,'mariano','2025-02-17 16:12:05','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13206,4,'mariano','2025-02-17 16:12:33','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13207,4,'daniela','2025-02-17 16:13:10','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13208,4,'admin','2025-02-17 18:44:46','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13209,4,'admin','2025-02-17 18:45:46','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13210,-2,'rafael','2025-02-17 19:49:37','','SELECT\r\n    core_formulario.id as Id,\r\n    core_formulario.titulo as \"T&iacute;tulo\",\r\n    core_formulario.tabla_datos as \"Tabla de datos\",\r\n    ##(SELECT count(*) FROM core_formulario_objeto WHERE formulario=core_formulario.id) as \"Objetos internos\",\r\n    (SELECT nombre FROM core_modulos_app WHERE core_formulario.modulo=core_modulos_app.id) as Modulo\r\nFROM\r\n    core_formulario\r\nWHERE\r\n    core_formulario.id >= 0\r\n    AND \r\n    (\r\n        \"rafael\" IN (SELECT desarrolladores FROM core_modulos_app WHERE core_formulario.modulo=core_modulos_app.id) \r\n        OR\r\n        core_formulario.modulo=0\r\n        OR\r\n        \"rafael\" = \"admin\"\r\n    )','Id,T&iacute;tulo,Tabla de datos,Modulo'),(13211,4,'rafael','2025-02-17 19:49:41','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13212,-19,'rafael','2025-02-17 19:50:30','','SELECT core_formulario.id as IdForm,core_formulario.titulo,core_formulario_objeto.pestana_objeto FROM core_formulario_objeto,core_formulario WHERE  core_formulario_objeto.formulario = core_formulario.id  AND    core_formulario_objeto.informe_vinculado = \"4\" ','IdForm,T&iacute;tulo,Pesta&ntilde;a'),(13213,-1,'rafael','2025-02-17 19:59:48','','SELECT\r\n    core_informe.id as Id,\r\n    CASE core_informe.formato_final WHEN \'T\' THEN \'<i class=\"fa fa-table fa-fw\"></i>\' WHEN \'G\' THEN \'<i class=\"fa fa-pie-chart fa-fw\"></i>\' END as Tipo,\r\n    CONCAT(\'<b>\',core_informe.titulo,\'</b><br><i>\',core_informe.descripcion,\'</i>\') as \'T&iacute;tulo / Descripcion\',\r\n    core_informe.categoria as \"Categor&iacute;a\",\r\n    (SELECT nombre FROM core_modulos_app WHERE core_informe.modulo=core_modulos_app.id) as Modulo\r\nFROM\r\n    core_informe\r\nWHERE\r\n    id >= 0\r\n    AND \r\n    (\r\n        \"rafael\" IN (SELECT desarrolladores FROM core_modulos_app WHERE core_informe.modulo=core_modulos_app.id) \r\n        OR\r\n        core_informe.modulo=0\r\n        OR\r\n        \"rafael\" = \"admin\"\r\n    )','Id,Tipo,T&iacute;tulo / Descripcion,Categor&iacute;a,Modulo'),(13214,-2,'rafael','2025-02-17 20:01:02','','SELECT\r\n    core_formulario.id as Id,\r\n    core_formulario.titulo as \"T&iacute;tulo\",\r\n    core_formulario.tabla_datos as \"Tabla de datos\",\r\n    ##(SELECT count(*) FROM core_formulario_objeto WHERE formulario=core_formulario.id) as \"Objetos internos\",\r\n    (SELECT nombre FROM core_modulos_app WHERE core_formulario.modulo=core_modulos_app.id) as Modulo\r\nFROM\r\n    core_formulario\r\nWHERE\r\n    core_formulario.id >= 0\r\n    AND \r\n    (\r\n        \"rafael\" IN (SELECT desarrolladores FROM core_modulos_app WHERE core_formulario.modulo=core_modulos_app.id) \r\n        OR\r\n        core_formulario.modulo=0\r\n        OR\r\n        \"rafael\" = \"admin\"\r\n    )','Id,T&iacute;tulo,Tabla de datos,Modulo'),(13215,4,'rafael','2025-02-17 20:01:05','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13216,-19,'rafael','2025-02-17 20:01:31','','SELECT core_formulario.id as IdForm,core_formulario.titulo,core_formulario_objeto.pestana_objeto FROM core_formulario_objeto,core_formulario WHERE  core_formulario_objeto.formulario = core_formulario.id  AND    core_formulario_objeto.informe_vinculado = \"4\" ','IdForm,T&iacute;tulo,Pesta&ntilde;a'),(13217,-19,'rafael','2025-02-17 20:01:58','','SELECT core_formulario.id as IdForm,core_formulario.titulo,core_formulario_objeto.pestana_objeto FROM core_formulario_objeto,core_formulario WHERE  core_formulario_objeto.formulario = core_formulario.id  AND    core_formulario_objeto.informe_vinculado = \"4\" ','IdForm,T&iacute;tulo,Pesta&ntilde;a'),(13218,4,'rafael','2025-02-17 20:02:03','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13219,-19,'rafael','2025-02-17 20:02:14','','SELECT core_formulario.id as IdForm,core_formulario.titulo,core_formulario_objeto.pestana_objeto FROM core_formulario_objeto,core_formulario WHERE  core_formulario_objeto.formulario = core_formulario.id  AND    core_formulario_objeto.informe_vinculado = \"4\" ','IdForm,T&iacute;tulo,Pesta&ntilde;a'),(13220,4,'daniela','2025-02-17 20:02:22','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13221,-19,'rafael','2025-02-17 20:02:23','','SELECT core_formulario.id as IdForm,core_formulario.titulo,core_formulario_objeto.pestana_objeto FROM core_formulario_objeto,core_formulario WHERE  core_formulario_objeto.formulario = core_formulario.id  AND    core_formulario_objeto.informe_vinculado = \"4\" ','IdForm,T&iacute;tulo,Pesta&ntilde;a'),(13222,4,'daniela','2025-02-17 20:02:49','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13223,4,'rafael','2025-02-17 20:04:36','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13224,4,'rafael','2025-02-17 20:04:50','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13225,4,'daniela','2025-02-17 20:12:41','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13226,4,'daniela','2025-02-17 20:12:59','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13227,20,'admin','2025-02-17 20:19:15','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13228,36,'admin','2025-02-17 20:19:15','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13229,20,'admin','2025-02-17 20:23:33','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13230,36,'admin','2025-02-17 20:23:33','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13231,-19,'admin','2025-02-17 20:23:38','','SELECT core_formulario.id as IdForm,core_formulario.titulo,core_formulario_objeto.pestana_objeto FROM core_formulario_objeto,core_formulario WHERE  core_formulario_objeto.formulario = core_formulario.id  AND    core_formulario_objeto.informe_vinculado = \"36\" ','IdForm,T&iacute;tulo,Pesta&ntilde;a'),(13232,-19,'admin','2025-02-17 20:24:18','','SELECT core_formulario.id as IdForm,core_formulario.titulo,core_formulario_objeto.pestana_objeto FROM core_formulario_objeto,core_formulario WHERE  core_formulario_objeto.formulario = core_formulario.id  AND    core_formulario_objeto.informe_vinculado = \"20\" ','IdForm,T&iacute;tulo,Pesta&ntilde;a'),(13233,-1,'admin','2025-02-17 20:24:28','','SELECT\r\n    core_informe.id as Id,\r\n    CASE core_informe.formato_final WHEN \'T\' THEN \'<i class=\"fa fa-table fa-fw\"></i>\' WHEN \'G\' THEN \'<i class=\"fa fa-pie-chart fa-fw\"></i>\' END as Tipo,\r\n    CONCAT(\'<b>\',core_informe.titulo,\'</b><br><i>\',core_informe.descripcion,\'</i>\') as \'T&iacute;tulo / Descripcion\',\r\n    core_informe.categoria as \"Categor&iacute;a\",\r\n    (SELECT nombre FROM core_modulos_app WHERE core_informe.modulo=core_modulos_app.id) as Modulo\r\nFROM\r\n    core_informe\r\nWHERE\r\n    id >= 0\r\n    AND \r\n    (\r\n        \"admin\" IN (SELECT desarrolladores FROM core_modulos_app WHERE core_informe.modulo=core_modulos_app.id) \r\n        OR\r\n        core_informe.modulo=0\r\n        OR\r\n        \"admin\" = \"admin\"\r\n    )','Id,Tipo,T&iacute;tulo / Descripcion,Categor&iacute;a,Modulo'),(13234,-19,'admin','2025-02-17 20:24:39','','SELECT core_formulario.id as IdForm,core_formulario.titulo,core_formulario_objeto.pestana_objeto FROM core_formulario_objeto,core_formulario WHERE  core_formulario_objeto.formulario = core_formulario.id  AND    core_formulario_objeto.informe_vinculado = \"41\" ',''),(13235,-19,'admin','2025-02-17 20:25:12','','SELECT core_formulario.id as IdForm,core_formulario.titulo,core_formulario_objeto.pestana_objeto FROM core_formulario_objeto,core_formulario WHERE  core_formulario_objeto.formulario = core_formulario.id  AND    core_formulario_objeto.informe_vinculado = \"41\" ',''),(13236,-19,'admin','2025-02-17 20:25:49','','SELECT core_formulario.id as IdForm,core_formulario.titulo,core_formulario_objeto.pestana_objeto FROM core_formulario_objeto,core_formulario WHERE  core_formulario_objeto.formulario = core_formulario.id  AND    core_formulario_objeto.informe_vinculado = \"41\" ',''),(13237,-19,'admin','2025-02-17 20:25:54','','SELECT core_formulario.id as IdForm,core_formulario.titulo,core_formulario_objeto.pestana_objeto FROM core_formulario_objeto,core_formulario WHERE  core_formulario_objeto.formulario = core_formulario.id  AND    core_formulario_objeto.informe_vinculado = \"41\" ',''),(13238,20,'admin','2025-02-17 20:26:28','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13239,41,'admin','2025-02-17 20:26:28','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13240,36,'admin','2025-02-17 20:26:28','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13241,20,'admin','2025-02-17 20:26:56','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13242,36,'admin','2025-02-17 20:26:56','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13243,41,'admin','2025-02-17 20:26:56','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13244,20,'admin','2025-02-17 20:27:03','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13245,36,'admin','2025-02-17 20:27:03','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13246,41,'admin','2025-02-17 20:27:03','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13247,20,'daniela','2025-02-17 20:34:03','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13248,36,'daniela','2025-02-17 20:34:03','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13249,41,'daniela','2025-02-17 20:34:03','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13250,20,'daniela','2025-02-17 20:34:12','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13251,36,'daniela','2025-02-17 20:34:12','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13252,41,'daniela','2025-02-17 20:34:12','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13253,6,'daniela','2025-02-17 20:34:28','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13254,19,'daniela','2025-02-17 20:34:28','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13255,6,'daniela','2025-02-17 20:35:56','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13256,19,'daniela','2025-02-17 20:35:56','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13257,11,'daniela','2025-02-17 20:35:57','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"217\"  \"\"   ','Código,Producto,Cant,Total producto'),(13258,11,'daniela','2025-02-17 20:35:58','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"217\"  \"\"   ','Código,Producto,Cant,Total producto'),(13259,11,'daniela','2025-02-17 20:36:06','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"217\"  \"\"   ',''),(13260,11,'daniela','2025-02-17 20:36:28','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"217\"  \"\"   ','Código,Producto,Cant,Total producto'),(13261,6,'daniela','2025-02-17 20:36:41','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13262,19,'daniela','2025-02-17 20:36:41','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13263,20,'daniela','2025-02-17 20:36:59','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13264,36,'daniela','2025-02-17 20:36:59','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13265,41,'daniela','2025-02-17 20:36:59','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13266,20,'daniela','2025-02-17 20:37:09','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13267,36,'daniela','2025-02-17 20:37:09','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13268,41,'daniela','2025-02-17 20:37:09','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13269,20,'daniela','2025-02-17 20:37:13','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13270,36,'daniela','2025-02-17 20:37:13','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13271,41,'daniela','2025-02-17 20:37:13','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13272,6,'daniela','2025-02-17 20:37:17','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13273,19,'daniela','2025-02-17 20:37:17','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13274,6,'daniela','2025-02-17 20:37:45','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13275,19,'daniela','2025-02-17 20:37:45','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13276,11,'daniela','2025-02-17 20:37:46','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"217\"  \"\"   ','Código,Producto,Cant,Total producto'),(13277,11,'daniela','2025-02-17 20:37:47','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"217\"  \"\"   ','Código,Producto,Cant,Total producto'),(13278,6,'daniela','2025-02-17 20:37:50','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13279,19,'daniela','2025-02-17 20:37:50','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13280,6,'mariano','2025-02-19 12:33:46','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13281,19,'mariano','2025-02-19 12:33:46','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13282,6,'mariano','2025-02-19 12:34:50','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13283,19,'mariano','2025-02-19 12:34:50','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13284,11,'mariano','2025-02-19 12:34:51','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13285,11,'mariano','2025-02-19 12:34:52','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13286,6,'mariano','2025-02-19 13:24:52','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13287,19,'mariano','2025-02-19 13:24:52','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13288,6,'mariano','2025-02-19 13:25:03','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13289,19,'mariano','2025-02-19 13:25:03','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13290,11,'mariano','2025-02-19 13:25:05','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13291,11,'mariano','2025-02-19 13:25:05','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13292,11,'mariano','2025-02-19 13:40:16','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13293,6,'mariano','2025-02-19 13:40:58','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13294,19,'mariano','2025-02-19 13:40:58','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13295,11,'mariano','2025-02-19 13:41:00','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13296,11,'mariano','2025-02-19 13:41:00','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13297,6,'mariano','2025-02-19 14:51:44','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13298,19,'mariano','2025-02-19 14:51:44','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13299,6,'mariano','2025-02-19 14:51:51','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13300,19,'mariano','2025-02-19 14:51:51','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13301,11,'mariano','2025-02-19 14:51:52','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13302,11,'mariano','2025-02-19 14:51:53','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13303,11,'mariano','2025-02-19 14:56:24','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13304,11,'mariano','2025-02-19 14:57:08','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13305,11,'mariano','2025-02-19 14:57:08','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13306,11,'mariano','2025-02-19 14:57:26','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13307,11,'mariano','2025-02-19 14:57:26','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13308,11,'mariano','2025-02-19 15:49:15','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13309,11,'mariano','2025-02-19 15:49:32','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13310,11,'mariano','2025-02-19 15:49:51','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13311,11,'mariano','2025-02-19 15:50:08','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13312,11,'mariano','2025-02-19 15:53:25','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13313,11,'mariano','2025-02-19 15:53:25','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13314,6,'mariano','2025-02-19 16:03:12','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13315,19,'mariano','2025-02-19 16:03:12','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13316,11,'mariano','2025-02-19 16:03:14','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13317,11,'mariano','2025-02-19 16:03:14','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13318,20,'mariano','2025-02-19 16:03:43','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13319,36,'mariano','2025-02-19 16:03:43','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13320,41,'mariano','2025-02-19 16:03:43','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13321,20,'mariano','2025-02-19 16:04:09','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13322,36,'mariano','2025-02-19 16:04:09','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13323,41,'mariano','2025-02-19 16:04:09','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13324,20,'mariano','2025-02-19 16:04:17','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13325,36,'mariano','2025-02-19 16:04:17','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13326,41,'mariano','2025-02-19 16:04:17','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13327,20,'mariano','2025-02-19 16:05:07','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13328,36,'mariano','2025-02-19 16:05:07','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13329,41,'mariano','2025-02-19 16:05:07','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13330,20,'mariano','2025-02-19 16:06:25','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13331,36,'mariano','2025-02-19 16:06:25','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13332,41,'mariano','2025-02-19 16:06:25','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13333,20,'mariano','2025-02-19 16:07:03','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13334,36,'mariano','2025-02-19 16:07:03','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13335,41,'mariano','2025-02-19 16:07:03','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13336,6,'mariano','2025-02-19 16:08:04','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13337,19,'mariano','2025-02-19 16:08:04','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13338,6,'mariano','2025-02-19 16:09:00','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13339,19,'mariano','2025-02-19 16:09:00','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13340,11,'mariano','2025-02-19 16:09:02','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"219\"  \"\"   ','Código,Producto,Cant,Total producto'),(13341,11,'mariano','2025-02-19 16:09:03','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"219\"  \"\"   ','Código,Producto,Cant,Total producto'),(13342,6,'mariano','2025-02-19 16:09:08','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13343,19,'mariano','2025-02-19 16:09:08','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13344,2,'mariano','2025-02-19 16:09:24','','SELECT app_clientes.id,app_clientes.id,app_clientes.numero_documento,app_clientes.nombre_completo,app_clientes.telefono,app_clientes.direccion FROM app_clientes WHERE  1 ','Número de documento,Nombre completo,Teléfono,Dirección'),(13345,4,'mariano','2025-02-19 16:10:21','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13346,4,'mariano','2025-02-19 16:12:55','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13347,20,'mariano','2025-02-19 16:14:36','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13348,36,'mariano','2025-02-19 16:14:36','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13349,41,'mariano','2025-02-19 16:14:36','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13350,20,'mariano','2025-02-19 16:14:44','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13351,36,'mariano','2025-02-19 16:14:44','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13352,41,'mariano','2025-02-19 16:14:44','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13353,4,'mariano','2025-02-19 16:16:02','','SELECT app_productos.id,app_productos.codigo,app_productos.nombre,app_productos.descripcion,app_productos.precio_compra,app_productos.precio_venta,app_productos.inventario as Inventario FROM app_productos WHERE  1 ','Código,Nombre,Descripción,Precio Compra,Precio Venta,Inventario'),(13354,20,'mariano','2025-02-19 16:29:45','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13355,36,'mariano','2025-02-19 16:29:45','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13356,41,'mariano','2025-02-19 16:29:45','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13357,6,'mariano','2025-02-19 16:30:00','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13358,19,'mariano','2025-02-19 16:30:00','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13359,20,'mariano','2025-02-19 16:38:58','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = 2  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica');
INSERT INTO `core_informe_cache` VALUES (13360,36,'mariano','2025-02-19 16:38:58','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\'),app_opcionlista.valor_visual FROM app_ventas,app_clientes,app_opcionlista WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  AND    app_ventas.tipo_venta = app_opcionlista.valor_interno  AND    app_ventas.factura_cerrada = 1  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica,Centro de Costo'),(13361,41,'mariano','2025-02-19 16:38:58','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.nro_remision,app_ventas.observaciones,if(app_ventas.factura_cerrada=1,\'SI\',\'NO\'),app_ventas.usuario as User,if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\') FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id  ORDER BY app_ventas.fecha DESC','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,N° Remisión,Observaciones,Factura Cerrada,Vendedor,Factura electronica'),(13362,6,'mariano','2025-02-19 16:40:11','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13363,19,'mariano','2025-02-19 16:40:11','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13364,6,'mariano','2025-02-19 16:40:20','','SELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\nm.nombre_completo \"Mecánico\"\r\nFROM app_ventas v,app_clientes c, app_mecanicos m\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = m.id AND v.estado = 0 \r\nUNION\r\nSELECT v.id,v.total Total,c.nombre_completo Cliente,v.usuario Vendedor,v.fecha Fecha,\r\nv.placa Placa, \r\n\"\"\r\nFROM app_ventas v,app_clientes c\r\nWHERE v.id_cliente = c.id AND \r\nv.id_mecanico = 0 AND v.estado = 0 ','id,Total,Cliente,Vendedor,Fecha,Placa,Mecánico'),(13365,19,'mariano','2025-02-19 16:40:20','','SELECT app_ventas.id,app_ventas.fecha as Fecha,app_clientes.nombre_completo,app_ventas.placa,app_ventas.forma_pago,app_ventas.total,app_ventas.nro_factura,app_ventas.usuario as User FROM app_ventas,app_clientes WHERE  app_ventas.estado = 1  AND    app_ventas.id_cliente = app_clientes.id ','N. Factura,Fecha,Cliente,Placa,Forma de Pago,Total,N° Factura Electrónica,Vendedor'),(13366,11,'mariano','2025-02-19 16:40:21','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13367,11,'mariano','2025-02-19 16:40:22','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13368,11,'mariano','2025-02-19 16:40:52','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13369,11,'mariano','2025-02-19 16:45:53','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto'),(13370,11,'mariano','2025-02-19 17:24:03','','SELECT CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio),app_productos.codigo,app_productos.nombre as Producto,app_ventas_detalle.cantidad as Cant,FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2) FROM app_productos,app_ventas_detalle WHERE  app_productos.id = app_ventas_detalle.id_producto  AND    app_ventas_detalle.id_venta = \"218\"  \"\"   ','Código,Producto,Cant,Total producto');

--
-- Table structure for table `core_informe_campos`
--

CREATE TABLE `core_informe_campos` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `informe` int(10) DEFAULT NULL,
  `valor_campo` varchar(250) DEFAULT NULL,
  `valor_alias` varchar(250) DEFAULT NULL,
  `peso` int(10) DEFAULT 0,
  `visible` int(1) DEFAULT 1,
  `editable` int(1) DEFAULT 0,
  `titulo_arbitrario` varchar(255) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=801 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_informe_campos`
--

INSERT INTO `core_informe_campos` VALUES (551,-4,'core_bugtracker.titulo','',4,1,0,'{$MULTILANG_Titulo}'),(550,-4,'core_bugtracker.proyecto','',3,1,0,'{$MULTILANG_BTProyectoAsociado}'),(538,-14,'COUNT(core_auditoria.id)','Conteo',6,1,0,''),(537,-14,'core_auditoria.hora','',5,1,0,'{$MULTILANG_Hora}'),(536,-14,'core_auditoria.fecha','',4,1,0,'{$MULTILANG_Fecha}'),(502,-9,'COUNT(core_bugtracker.id)','Conteo',2,1,0,''),(501,-9,'DATE(fecha_apertura)','Fecha',1,1,0,''),(545,-26,'direccion_origen','',4,1,0,'Origen'),(473,-31,'core_acortadorurls.fecha_creacion','Creado',4,1,0,''),(472,-31,'core_acortadorurls.contador_uso','Accesos',3,1,0,''),(530,-16,'basedatos','',4,1,0,'{$MULTILANG_Basedatos}'),(529,-16,'servidorbd','',3,1,0,'{$MULTILANG_Servidor}'),(448,-46,'id','Id',2,0,0,''),(461,-8,'core_bugtracker.reportado_por','',9,1,0,'{$MULTILANG_BTUsuarioReporte}'),(460,-8,'core_bugtracker.prioridad','',7,1,0,'{$MULTILANG_Prioridad}'),(459,-8,'core_bugtracker.severidad','',6,1,0,'{$MULTILANG_BTSeveridad}'),(458,-8,'core_bugtracker.categoria','',5,1,0,'{$MULTILANG_InfCategoria}'),(457,-8,'core_bugtracker.titulo','',4,1,0,'{$MULTILANG_Titulo}'),(456,-8,'core_bugtracker.proyecto_version','',3,1,0,'{$MULTILANG_Version}'),(455,-8,'core_bugtracker.proyecto','',3,1,0,'{$MULTILANG_BTProyectoAsociado}'),(478,-12,'core_auditoria.hora','',5,1,0,'{$MULTILANG_Hora}'),(477,-12,'core_auditoria.fecha','',4,1,0,'{$MULTILANG_Fecha}'),(436,-17,'basedatos','',4,1,0,'{$MULTILANG_Basedatos}'),(435,-17,'servidorbd','',3,1,0,'{$MULTILANG_Servidor}'),(440,-24,'ultimo_acceso','',4,1,0,'{$MULTILANG_UsrAcceso}'),(439,-24,'nombre','',3,1,0,'{$MULTILANG_Nombre}'),(438,-24,'login','',2,1,0,'{$MULTILANG_Usuario}'),(540,-30,'manual1','Id',2,0,0,''),(520,-44,'hora','',5,1,0,''),(508,-20,'login','',2,1,0,'{$MULTILANG_Usuario}'),(509,-20,'nombre','',3,1,0,'{$MULTILANG_Nombre}'),(510,-20,'ultimo_acceso','',4,1,0,'{$MULTILANG_UsrAcceso}'),(504,-7,'COUNT(core_bugtracker.id)','Conteo',2,1,0,''),(519,-44,'fecha','',4,1,0,''),(499,-18,'nombre','',5,1,0,'{$MULTILANG_Nombre}'),(498,-18,'tipo','',4,1,0,'{$MULTILANG_Tipo}'),(497,-18,'peso','',3,1,0,'{$MULTILANG_Peso}'),(507,-22,'codigo_tarea','',3,1,0,'{$MULTILANG_CodigoSeguridad}'),(506,-22,'titulo','',2,1,0,'{$MULTILANG_Titulo}'),(505,-22,'id','',1,0,0,''),(488,-13,'core_auditoria.hora','',5,1,0,'{$MULTILANG_Hora}'),(487,-13,'core_auditoria.fecha','',4,1,0,'{$MULTILANG_Fecha}'),(556,-21,'core_auditoria.hora','',5,1,0,'{$MULTILANG_Hora}'),(555,-21,'core_auditoria.fecha','',4,1,0,'{$MULTILANG_Fecha}'),(561,-25,'direccion_origen','',4,1,0,'Origen'),(446,-10,'core_bugtracker.asignado_a','',6,1,0,'{$MULTILANG_BTAsignadoA}'),(445,-10,'core_bugtracker.estado','',5,1,0,'{$MULTILANG_Estado}'),(444,-10,'core_bugtracker.categoria','',4,1,0,'{$MULTILANG_InfCategoria}'),(443,-10,'core_bugtracker.titulo','',3,1,0,'{$MULTILANG_Titulo}'),(515,-23,'lineas','',5,1,0,'Lineas/Lines'),(516,-23,'IF(caracteres>1024000, CONCAT(FORMAT(caracteres/1024000,0),\" Mb\"), IF(caracteres>1024,CONCAT(FORMAT(caracteres/1024,0),\" Kb\"),CONCAT(FORMAT(caracteres,0),\" bytes\")))','',8,1,0,'Tamano/Size'),(514,-23,'usuario','',4,1,0,'Usuario/User'),(513,-23,'fecha_edicion','',3,1,0,'Fecha/Date'),(512,-23,'archivo','',2,0,0,'Archivo'),(511,-23,'id','id',1,0,0,''),(524,-39,'id','',1,0,0,''),(523,-19,'core_formulario_objeto.pestana_objeto','',3,1,0,'{$MULTILANG_Pestana}'),(522,-19,'core_formulario.titulo','',2,1,0,'{$MULTILANG_Titulo}'),(521,-19,'core_formulario.id','IdForm',1,1,0,''),(118,1,'app_empresa.nit','',2,1,0,'NIT'),(119,1,'app_empresa.nombre','',3,1,0,'Nombre'),(120,1,'app_empresa.razon_social','',4,1,0,'Razon Social'),(121,1,'app_empresa.telefono','',5,1,0,'Teléfono'),(122,1,'app_empresa.email','',7,1,0,'E-mail'),(123,1,'app_empresa.direccion','',6,1,0,'Dirección'),(124,1,'app_empresa.iva','',8,1,0,'IVA'),(125,1,'app_empresa.id','',1,1,0,''),(535,-14,'core_auditoria.usuario_login','',2,1,0,'{$MULTILANG_UsrLogin}'),(544,-26,'ultima_edicion','',3,1,0,'Fecha/Date'),(471,-31,'core_acortadorurls.url_corta','URLCorta',2,1,0,''),(528,-16,'nombre','',2,1,0,'{$MULTILANG_Nombre}'),(454,-8,'core_bugtracker.fecha_apertura','',2,1,0,'{$MULTILANG_BTFechaApertura}'),(476,-12,'core_auditoria.usuario_login','',2,1,0,'{$MULTILANG_UsrLogin}'),(434,-17,'nombre','',2,1,0,'{$MULTILANG_Nombre}'),(500,-18,'milisegundos_lectura','',6,1,0,'{$MULTILANG_MonMsLectura}'),(518,-44,'usuario_login','',2,1,1,''),(486,-13,'core_auditoria.usuario_login','',2,1,0,'{$MULTILANG_UsrLogin}'),(554,-21,'core_auditoria.usuario_login','',2,1,0,'{$MULTILANG_UsrLogin}'),(560,-25,'ultima_edicion','',3,1,0,'Fecha/Date'),(243,2,'app_clientes.numero_documento','',2,1,0,'Número de documento'),(244,2,'app_clientes.nombre_completo','',3,1,0,'Nombre completo'),(245,2,'app_clientes.telefono','',4,1,0,'Teléfono'),(246,2,'app_clientes.id','',1,0,0,''),(247,2,'app_clientes.direccion','',5,1,0,'Dirección'),(248,3,'app_proveedores.id','',1,1,0,''),(249,3,'app_proveedores.razon_social','',2,1,0,'Razón social'),(250,3,'app_proveedores.nit','',3,1,0,'NIT'),(251,3,'app_proveedores.nombre_contacto','',4,1,0,'Nombre Asesor'),(252,3,'app_proveedores.telefono','',5,1,0,'Teléfono'),(253,3,'app_proveedores.direccion','',6,1,0,'Dirección'),(254,4,'app_productos.id','',1,0,0,''),(255,4,'app_productos.codigo','',2,1,0,'Código'),(256,4,'app_productos.nombre','',3,1,0,'Nombre'),(257,4,'app_productos.descripcion','',4,1,0,'Descripción'),(258,4,'app_productos.precio_compra','',5,1,0,'Precio Compra'),(259,4,'app_productos.precio_venta','',6,1,0,'Precio Venta'),(270,7,'app_ordenes_compra_detalle.id','',1,0,0,''),(261,5,'app_ordenes_compra_detalle.id','',1,0,0,''),(262,5,'app_productos.nombre','Producto',2,1,1,''),(263,5,'app_ordenes_compra_detalle.cantidad','Cantidad',3,1,0,''),(264,5,'app_ordenes_compra_detalle.precio','Precio',4,1,1,''),(265,5,'app_ordenes_compra_detalle.precio * app_ordenes_compra_detalle.cantidad','',5,1,0,'Total producto'),(566,6,'app_ventas.id','',1,1,0,''),(567,6,'app_ventas.fecha','',5,1,0,''),(568,6,'app_clientes.usuario','',4,1,0,'Vendedor'),(569,6,'app_ventas.total','',2,1,0,''),(271,7,'app_productos.nombre','Producto',2,1,0,''),(272,7,'app_ordenes_compra_detalle.cantidad','',3,1,0,'Cantidad solicitada'),(273,7,'app_ordenes_compra_detalle.cantidad_recibida','',4,1,0,'Cantidad recibida'),(274,7,'app_ordenes_compra_detalle.precio','Precio',5,1,0,''),(275,4,'app_productos.inventario','Inventario',7,1,0,''),(276,9,'app_ventas.id','',1,1,0,'N. Factura'),(277,9,'app_ventas.fecha','Fecha',2,1,0,''),(284,11,'CONCAT(app_ventas_detalle.id,\'|\',app_ventas_detalle.cantidad,\'|\',app_ventas_detalle.precio)','',1,0,0,''),(281,10,'DATE_FORMAT(fecha, \"%M %d %Y\")','Fecha',2,1,0,''),(283,10,'SUM(app_ventas.total)','total',4,1,0,''),(285,11,'app_productos.nombre','Producto',3,1,0,''),(286,11,'app_ventas_detalle.cantidad','Cant',4,1,1,''),(287,11,'FORMAT(app_ventas_detalle.cantidad * app_ventas_detalle.precio,2)','',5,1,0,'Total producto'),(288,12,'DATE_FORMAT(fecha, \"%M %d %Y\")','Fecha',2,1,0,''),(289,12,'SUM(app_ventas.id)','Cantidad',4,1,0,''),(290,9,'app_productos.nombre','',4,1,0,'Productos'),(291,9,'app_ventas.forma_pago','',7,1,0,'Forma de Pago'),(292,9,' (app_ventas_detalle.cantidad * app_ventas_detalle.precio)','',8,1,0,'Total'),(293,9,'app_ventas_detalle.cantidad','',6,1,0,'Cantidad'),(294,13,'app_ventas.fecha','',1,1,0,'Fecha'),(295,13,'sum(app_ventas_detalle.cantidad * app_ventas_detalle.precio)','',2,1,0,'Vendido'),(296,13,'sum(app_productos.precio_compra * app_ventas_detalle.cantidad)','',3,1,0,'Costo productos'),(297,13,'sum(app_ventas_detalle.cantidad * app_ventas_detalle.precio)-sum(app_productos.precio_compra * app_ventas_detalle.cantidad)','',4,1,0,'Utilidad'),(298,14,'app_productos.id','',1,0,0,''),(299,14,'app_proveedores.nombre','Proveedor',2,1,0,''),(300,14,'app_productos.nombre','Producto',4,1,0,''),(301,14,'app_productos.codigo','',3,1,0,''),(302,14,'app_productos.inventario','Stock',5,1,0,''),(303,9,'app_ventas.usuario','User',10,1,0,''),(548,-4,'core_bugtracker.id','',1,0,0,''),(549,-4,'core_bugtracker.fecha_apertura','',2,1,0,'{$MULTILANG_BTFechaApertura}'),(534,-14,'core_auditoria.id','ID',1,1,0,''),(543,-26,'archivo','',2,1,0,'Archivo'),(542,-26,'id','id',1,0,0,''),(470,-31,'core_acortadorurls.id','id',1,0,0,''),(527,-16,'id','',1,0,0,''),(503,-7,'core_bugtracker.prioridad','Prioridad',1,1,0,''),(453,-8,'core_bugtracker.id','',1,0,0,''),(564,-6,'core_bugtracker.categoria','Categoria',1,1,0,''),(475,-12,'core_auditoria.id','ID',1,1,0,''),(433,-17,'id','',1,0,0,''),(493,-48,'Id','',1,0,0,''),(494,-48,'Codigo','',2,1,0,''),(451,-32,'id','CreadoParaOcultarCoampoQueryManual',1,1,0,''),(517,-44,'id','',1,1,0,''),(495,-18,'id','',1,0,0,''),(496,-18,'pagina','',2,1,0,'{$MULTILANG_Pagina}'),(463,-5,'COUNT(core_bugtracker.id)','Conteo',1,1,0,''),(485,-13,'core_auditoria.id','ID',1,1,0,''),(553,-21,'core_auditoria.id','ID',1,1,0,''),(559,-25,'archivo','',2,1,0,'Archivo'),(558,-25,'id','id',1,0,0,''),(441,-10,'core_bugtracker.id','',1,0,0,''),(442,-10,'core_bugtracker.fecha_apertura','',2,1,0,'{$MULTILANG_BTFechaApertura}'),(421,15,'app_clientes.nombre_completo','',2,1,0,'Cliente'),(422,15,'app_cartera.fecha','',1,1,0,'Fecha'),(423,15,'app_cartera.tipo_cartera','',3,1,0,'Tipo cartera'),(424,15,'app_cartera.tipo_remision','',4,1,0,'Tipo remisión'),(425,15,'app_cartera.numero_remision','',5,1,0,'Numero remisión'),(426,15,'app_cartera.placa','',6,1,0,'Placa Vehiculo'),(427,15,'app_cartera.descripcion','',7,1,0,'Descripción'),(428,15,'app_cartera.valor','',8,1,0,'Valor'),(429,15,'app_cartera.abono','',9,1,0,'Abono'),(430,15,'IF(app_cartera.factura_electronica = 1, \"SI\", \"NO\")','',10,1,0,'¿Factura Electronica?'),(431,15,'IF(app_cartera.estado = 1, \"CANCELADO\", \"PENDIENTE\")','',12,1,0,'Estado'),(432,15,'(app_cartera.valor - app_cartera.abono)','',11,1,0,'Saldo pendiente'),(437,-17,'motorbd','',5,1,0,'{$MULTILANG_TipoMotor}'),(447,-10,'core_bugtracker.historial_gestion','',7,1,0,'{$MULTILANG_BTHistorial}'),(449,-58,'id','Id',1,0,0,''),(450,-55,'id','ID',1,0,0,''),(452,-32,'login_admintablero','',2,0,0,''),(462,-8,'core_bugtracker.asignado_a','',10,1,0,'{$MULTILANG_BTAsignadoA}'),(464,-5,'core_bugtracker.estado','Estado',2,1,0,''),(465,-52,'fecha','',1,1,0,''),(466,-52,'cantidad','',2,1,0,''),(467,-52,'cantidad_usuarios','',3,1,0,''),(468,-52,'cantidad_api','',4,1,0,''),(469,-51,'id','Id',1,0,0,''),(474,-31,'core_acortadorurls.url_larga','URLLarga',5,1,0,''),(479,-12,'COUNT(core_auditoria.id)','Conteo',6,1,0,''),(480,-49,'id','Id',1,0,0,''),(481,-49,'nombre','Lenguaje',2,1,0,''),(482,-49,'comando_compilacion','Comando_Compilacion',6,1,1,''),(483,-49,'comando_ejecucion','Comando_Ejecucion',7,1,1,''),(484,-49,'extensiones','Extensiones',8,1,1,''),(489,-13,'COUNT(core_auditoria.id)','Conteo',6,1,0,''),(490,-56,'id','ID',1,0,0,''),(491,-53,'table_name','',1,1,0,''),(492,-53,'table_rows','',2,1,0,''),(525,-61,'core_llaves_metodo.nombre','EndPoint',1,1,0,''),(526,-61,'core_llaves_metodo.total_ejecuciones','Ejecuciones',2,1,0,''),(531,-16,'motorbd','',5,1,0,'{$MULTILANG_TipoMotor}'),(532,-62,'core_llaves_api.nombre','NombreAPI',3,1,0,''),(533,-62,'core_llaves_api.total_ejecuciones','Consumos',4,1,0,''),(539,-14,'HOUR(core_auditoria.hora)','HoraPico',7,1,0,''),(541,-59,'id','Id',1,0,0,''),(546,-26,'agente','',5,1,0,'Agente'),(547,-26,'usuario','',6,1,0,'Usuario'),(552,-4,'core_bugtracker.reportado_por','',6,1,0,'{$MULTILANG_BTUsuarioReporte}'),(557,-21,'COUNT(core_auditoria.id)','Conteo',6,1,0,''),(562,-25,'agente','',5,1,0,'Agente'),(563,-25,'usuario','',6,1,0,'Usuario'),(565,-6,'COUNT(core_bugtracker.id)','Conteo',2,1,0,''),(570,6,'app_clientes.nombre_completo','',3,1,0,'Cliente'),(579,16,'app_egresos.usuario','Usuario',5,1,0,''),(578,16,'app_egresos.fecha','Fecha',2,1,0,''),(577,16,'app_egresos.valor_egreso','Valor',4,1,0,''),(576,16,'app_egresos.descripcion','',3,1,0,'Descripción'),(580,2,'app_clientes.id','',1,0,0,''),(581,16,'app_egresos.id','',1,0,0,''),(582,6,'app_ventas.placa','',6,1,0,'Placa'),(583,17,'DATE_FORMAT(fecha, \"%M %d %Y\")','Fecha',2,1,0,''),(584,17,'SUM(app_egresos.valor_egreso)','Cantidad',4,1,0,''),(585,18,'app_egresos.id','',1,0,0,''),(606,19,'app_ventas.nro_factura','',7,1,1,'N° Factura Electrónica'),(596,19,'app_ventas.id','',1,1,0,'N. Factura'),(595,18,' FORMAT(app_egresos.valor_egreso, 2)','',4,1,0,'Valor'),(594,18,'app_egresos.descripcion','',3,1,0,'Descripción'),(593,18,'app_egresos.fecha','',2,1,0,'Fecha'),(592,18,'app_egresos.usuario','User',5,1,0,'Usuario Registro'),(598,19,'app_ventas.fecha','Fecha',2,1,0,''),(599,19,'app_ventas.forma_pago','',5,1,0,'Forma de Pago'),(605,19,'app_ventas.placa','',4,1,0,'Placa'),(604,19,'app_clientes.nombre_completo','',3,1,0,'Cliente'),(602,19,'app_ventas.total','',6,1,0,'Total'),(603,19,'app_ventas.usuario','User',8,1,0,'Vendedor'),(607,20,'app_ventas.id','',1,1,0,'N. Factura'),(608,20,'app_ventas.fecha','Fecha',2,1,0,''),(609,20,'app_clientes.nombre_completo','',3,1,0,'Cliente'),(610,20,'app_ventas.placa','',4,1,0,'Placa'),(611,20,'app_ventas.forma_pago','',5,1,0,'Forma de Pago'),(612,20,'app_ventas.total','',6,1,0,'Total'),(613,20,'app_ventas.nro_factura','',7,1,0,'N° Factura Electrónica'),(614,20,'app_ventas.usuario','User',11,1,0,'Vendedor'),(615,20,'app_ventas.nro_remision','',8,1,0,'N° Remisión'),(616,20,'if(app_ventas.factura_cerrada=1,\'SI\',\'NO\')','',10,1,0,'Factura Cerrada'),(617,20,'app_ventas.observaciones','',9,1,0,'Observaciones'),(618,21,'app_ventas.id_mecanico','',1,0,0,''),(619,21,'app_mecanicos. nombre_completo','',2,1,0,'Mecánico'),(620,21,'app_ventas.fecha','Fecha',3,1,0,''),(621,21,'SUM(app_ventas.total)','Total',4,1,0,''),(622,22,'app_mecanicos.nombre_completo','',3,1,0,'Nombre Mecánico'),(639,23,'app_ventas.placa','',4,1,0,'Placa'),(640,23,'app_ventas.forma_pago','',5,1,0,'Forma de Pago'),(627,22,'app_novedades_mecanicos.tipo_novedad','',4,1,0,'Tipo Novedad'),(628,22,'app_novedades_mecanicos.valor_novedad','',5,1,0,'Valor'),(629,22,'app_novedades_mecanicos.observacion','',6,1,0,'Observacion'),(630,22,'app_novedades_mecanicos.usuario','',7,1,0,'Usuario'),(631,22,'app_novedades_mecanicos.fecha','',2,1,0,'Fecha'),(638,23,'app_clientes.nombre_completo','',3,1,0,'Cliente'),(636,23,'app_ventas.id','',1,1,0,'N. Factura'),(637,23,'app_ventas.fecha','Fecha',2,1,0,''),(641,23,'app_ventas.total','',6,1,0,'Total'),(761,37,'app_mecanicos.nombre_completo','',1,1,0,'Nombre Mecanico'),(643,23,'app_mecanicos. nombre_completo','',8,1,0,'Macánico'),(644,22,'app_novedades_mecanicos.id','',1,0,0,''),(645,24,'app_ventas.id','',1,1,0,'N. Factura'),(656,24,'app_ventas.tipo_pago','',6,1,0,'Tipo Pago'),(647,24,'app_ventas.fecha','Fecha',2,1,0,''),(654,24,'app_clientes.nombre_completo','',4,1,0,'Cliente'),(655,24,'app_clientes.numero_documento','',3,1,0,'N° Docu Cliente'),(653,24,'FORMAT(app_ventas.total, 0)','',7,1,0,'Total Factura'),(652,24,'app_ventas.usuario','User',8,1,0,'Vendedor'),(659,24,'app_ventas.placa','',5,1,0,'Placa'),(660,25,'app_ventas.id','',1,1,0,'N. Factura'),(662,25,'app_ventas.fecha','Fecha',2,1,0,''),(670,25,'app_ventas.forma_pago','',8,1,0,'Forma de Pago'),(669,25,'app_ventas.tipo_pago','',7,1,0,'Tipo de Pago'),(668,25,'app_clientes.nombre_completo','',4,1,0,'Cliente'),(666,25,' FORMAT(app_ventas.total, 2)','',5,1,0,'Total'),(667,25,'app_ventas.usuario','',6,1,0,'Vendedor'),(671,26,'app_ventas.id','',1,1,0,'N. Factura'),(672,26,'app_ventas.fecha','Fecha',2,1,0,''),(673,26,'app_clientes.nombre_completo','',4,1,0,'Cliente'),(674,26,'FORMAT(app_ventas.total, 2)','',5,1,0,'Total'),(675,26,'app_ventas.usuario','',6,1,0,'Vendedor'),(676,26,'app_ventas.tipo_pago','',7,1,0,'Tipo de Pago'),(677,26,'app_ventas.forma_pago','',8,1,0,'Forma de Pago'),(678,27,'app_ventas.id','',1,1,0,'N. Factura'),(679,27,'app_ventas.fecha','Fecha',2,1,0,''),(680,27,'app_clientes.nombre_completo','',4,1,0,'Cliente'),(681,27,'FORMAT(app_ventas.total, 2)','',5,1,0,'Total'),(682,27,'app_ventas.usuario','',6,1,0,'Vendedor'),(683,27,'app_ventas.tipo_pago','',7,1,0,'Tipo de Pago'),(684,27,'app_ventas.forma_pago','',8,1,0,'Forma de Pago'),(685,28,'app_ventas.id','',1,1,0,'N. Factura'),(686,28,'app_ventas.fecha','Fecha',2,1,0,''),(687,28,'app_clientes.nombre_completo','',4,1,0,'Cliente'),(688,28,'FORMAT(app_ventas.total, 2)','',5,1,0,'Total'),(689,28,'app_ventas.usuario','',6,1,0,'Vendedor'),(690,28,'app_ventas.tipo_pago','',7,1,0,'Tipo de Pago'),(691,28,'app_ventas.forma_pago','',8,1,0,'Forma de Pago'),(692,29,'app_ventas.id','',1,1,0,'N. Factura'),(693,29,'app_ventas.fecha','Fecha',2,1,0,''),(694,29,'app_clientes.nombre_completo','',4,1,0,'Cliente'),(695,29,'FORMAT(app_ventas.total, 2)','',5,1,0,'Total'),(696,29,'app_ventas.usuario','',6,1,0,'Vendedor'),(697,29,'app_ventas.tipo_pago','',7,1,0,'Tipo de Pago'),(698,29,'app_ventas.forma_pago','',8,1,0,'Forma de Pago'),(699,30,'app_ventas.id','',1,1,0,'N. Factura'),(700,30,'app_ventas.fecha','Fecha',2,1,0,''),(701,30,'app_clientes.nombre_completo','',4,1,0,'Cliente'),(702,30,'FORMAT(app_ventas.total, 2)','',5,1,0,'Total'),(703,30,'app_ventas.usuario','',6,1,0,'Vendedor'),(704,30,'app_ventas.tipo_pago','',7,1,0,'Tipo de Pago'),(705,30,'app_ventas.forma_pago','',8,1,0,'Forma de Pago'),(706,31,'app_mecanicos.nombre_completo','',1,1,0,'Mecánico'),(707,31,'app_novedades_mecanicos.tipo_novedad','',2,0,0,''),(708,31,'SUM(app_novedades_mecanicos.valor_novedad)','Total',3,1,0,''),(709,31,'app_novedades_mecanicos.observacion','',4,0,0,''),(710,11,'app_productos.codigo','',2,1,0,'Código'),(711,9,'app_clientes.nombre_completo','',9,1,0,'Cliente'),(712,9,'app_productos.codigo','',3,1,0,'Codigo'),(713,32,'app_ventas.id','',1,1,0,'N. Factura'),(714,32,'app_ventas.fecha','Fecha',2,1,0,''),(715,32,'app_clientes.nombre_completo','',4,1,0,'Cliente'),(716,32,'FORMAT(app_ventas.total, 2)','',5,1,0,'Total'),(717,32,'app_ventas.usuario','',6,1,0,'Vendedor'),(718,32,'app_ventas.tipo_pago','',7,1,0,'Tipo de Pago'),(719,32,'app_ventas.forma_pago','',8,1,0,'Forma de Pago'),(720,29,'app_opcionlista.valor_visual','',9,1,0,'Tipo de Producto'),(721,24,'app_opcionlista.valor_visual','',9,1,0,'Centro de Costo'),(722,30,'app_opcionlista.valor_visual','',9,1,0,'Tipo de Producto'),(723,32,'app_opcionlista.valor_visual','',9,1,0,'Tipo de Producto'),(728,21,'SUM(app_ventas.total_mecanico)','',5,1,0,'Ganancia Mecánico'),(730,20,'if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\')','',12,1,0,'Factura electronica'),(731,25,'app_opcionlista.valor_visual','',9,1,0,'Centro de Costo'),(732,9,'app_opcionlista.valor_visual','',11,1,0,'Centro de Costo'),(733,35,'app_liquidacion_mecanicos_enc.id','',1,0,0,''),(734,35,'app_mecanicos.nombre_completo','',2,1,0,'Mecánico'),(735,35,'app_liquidacion_mecanicos_enc.fecha','Fecha',3,1,0,''),(742,35,'IF(app_liquidacion_mecanicos_enc.valor_venta = 0,\'\',CONCAT(\'$\',FORMAT(app_liquidacion_mecanicos_enc.valor_venta,2,\'de_DE\')))','Venta',4,1,0,''),(744,35,'IF(app_liquidacion_mecanicos_enc.seguridad_social = 0,\'\',CONCAT(\'$\',FORMAT(app_liquidacion_mecanicos_enc.seguridad_social,2,\'de_DE\')))','',7,1,0,'Seguridad social'),(743,35,'IF(app_liquidacion_mecanicos_enc.valor_novedad_debitar = 0,\'\',CONCAT(\'$\',FORMAT(app_liquidacion_mecanicos_enc.valor_novedad_debitar,2,\'de_DE\')))','Debitar',6,1,0,''),(741,35,'IF(app_liquidacion_mecanicos_enc.valor_novedad_abonar = 0, \'\',CONCAT(\'$\',FORMAT(app_liquidacion_mecanicos_enc.valor_novedad_abonar,2,\'de_DE\')))','Abonar',5,1,0,''),(745,35,'CONCAT(\'$\',FORMAT((app_liquidacion_mecanicos_enc.valor_venta + app_liquidacion_mecanicos_enc.valor_novedad_abonar - app_liquidacion_mecanicos_enc.valor_novedad_debitar - app_liquidacion_mecanicos_enc.seguridad_social),2,\'de_DE\'))','',8,1,0,'Total'),(746,36,'app_ventas.id','',1,1,0,'N. Factura'),(747,36,'app_ventas.fecha','Fecha',2,1,0,''),(748,36,'app_clientes.nombre_completo','',3,1,0,'Cliente'),(749,36,'app_ventas.placa','',4,1,0,'Placa'),(750,36,'app_ventas.forma_pago','',5,1,0,'Forma de Pago'),(751,36,'app_ventas.total','',6,1,0,'Total'),(752,36,'app_ventas.nro_factura','',7,1,0,'N° Factura Electrónica'),(753,36,'app_ventas.nro_remision','',8,1,0,'N° Remisión'),(754,36,'app_ventas.observaciones','',9,1,0,'Observaciones'),(755,36,'if(app_ventas.factura_cerrada=1,\'SI\',\'NO\')','',10,1,0,'Factura Cerrada'),(756,36,'app_ventas.usuario','User',11,1,0,'Vendedor'),(757,36,'if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\')','',12,1,0,'Factura electronica'),(758,32,'app_ventas.fecha_pago_credito','',10,1,0,'Fecha pago Credito'),(759,24,'DATEDIFF(CURDATE(), app_ventas.fecha)','',9,1,0,'Edad de Cartera'),(760,36,'app_opcionlista.valor_visual','',13,1,0,'Centro de Costo'),(762,37,'COUNT(app_ventas.id)','',2,1,0,'Cantidad de Servicios'),(763,37,' format(SUM(app_ventas.total_mecanico),2)','',4,1,0,'Total Pagado'),(771,38,' format(SUM(app_ventas.total_mecanico),2)','',4,1,0,'Total Pagado'),(770,38,'COUNT(app_ventas.id)','',2,1,0,'Cantidad de Servicios'),(769,38,'app_mecanicos.nombre_completo','',1,1,0,'Nombre Mecanico'),(773,24,'FORMAT(app_ventas.total - app_ventas.abono, 0)','',11,1,0,'Total a Pagar'),(774,24,'FORMAT(app_ventas.abono, 0)','',10,1,0,'Abano'),(775,39,'app_abonos_ventas_credito.id','',1,0,0,''),(776,39,'app_abonos_ventas_credito.valor_abono','',4,1,0,'Valor Abono'),(777,39,'app_abonos_ventas_credito.forma_pago','',5,1,0,'Forma de Pago'),(779,39,'app_abonos_ventas_credito.fecha','',6,1,0,'Fecha'),(780,39,'app_abonos_ventas_credito.usuario','',7,1,0,'Usuario'),(781,39,'app_abonos_ventas_credito.id_venta','',2,1,0,'Nro Factura'),(782,39,'app_ventas.placa','',3,1,0,'Placa'),(783,24,'if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\')','',12,1,0,'Factura electronica'),(784,40,'valor_abono','',2,1,0,'Valor Abono'),(785,40,'app_abonos_ventas_credito.id_venta','',1,1,0,''),(786,40,'app_abonos_ventas_credito.forma_pago','',3,1,0,'Forma de Pago'),(787,40,'app_abonos_ventas_credito.fecha','',4,1,0,'Fecha'),(788,40,'app_abonos_ventas_credito.usuario','',5,1,0,'Usuario'),(789,41,'app_ventas.id','',1,1,0,'N. Factura'),(790,41,'app_ventas.fecha','Fecha',2,1,0,''),(791,41,'app_clientes.nombre_completo','',3,1,0,'Cliente'),(792,41,'app_ventas.placa','',4,1,0,'Placa'),(793,41,'app_ventas.forma_pago','',5,1,0,'Forma de Pago'),(794,41,'app_ventas.total','',6,1,0,'Total'),(795,41,'app_ventas.nro_factura','',7,1,0,'N° Factura Electrónica'),(796,41,'app_ventas.nro_remision','',8,1,0,'N° Remisión'),(797,41,'app_ventas.observaciones','',9,1,0,'Observaciones'),(798,41,'if(app_ventas.factura_cerrada=1,\'SI\',\'NO\')','',10,1,0,'Factura Cerrada'),(799,41,'app_ventas.usuario','User',11,1,0,'Vendedor'),(800,41,'if(app_ventas.require_factura_electronica=1,\'SI\',\'NO\')','',12,1,0,'Factura electronica');

--
-- Table structure for table `core_informe_condiciones`
--

CREATE TABLE `core_informe_condiciones` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `informe` int(10) DEFAULT NULL,
  `valor_izq` varchar(250) DEFAULT NULL,
  `operador` varchar(250) DEFAULT NULL,
  `valor_der` varchar(250) DEFAULT NULL,
  `peso` int(3) DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=545 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_informe_condiciones`
--

INSERT INTO `core_informe_condiciones` VALUES (259,-4,'core_bugtracker.estado','<>','\"{$MULTILANG_BTEstadoCerrado}\"',2),(257,-14,'AND','','',6),(256,-14,'core_auditoria.accion','LIKE','\"%{$AccionAuditoria}%\"',5),(255,-14,'AND','','',4),(254,-14,'core_auditoria.fecha','<=','\"{$FechaFinAuditoria}\"',3),(251,-16,'tipo_replica','=','1',1),(220,-8,'core_bugtracker.estado','=','\"{$MULTILANG_BTEstadoCerrado}\"',1),(227,-12,'AND','','',6),(226,-12,'core_auditoria.accion','LIKE','\"%{$AccionAuditoria}%\"',5),(225,-12,'AND','','',4),(224,-12,'core_auditoria.fecha','<=','\"{$FechaFinAuditoria}\"',3),(215,-17,'tipo_replica','=','0',1),(218,-24,'instr(\",{$PCOVAR_Administradores},\",concat(\",\",login,\",\"))','>','0',7),(217,-24,'AND','','',4),(216,-24,'login','<>','\"{$PCOSESS_LoginUsuario}\"',1),(238,-20,'usuario_interno','LIKE','\"%{$PCOVAR_FiltroUsuariosChat}%\"',5),(237,-20,'AND','','',3),(236,-20,'login','<>','\"{$PCOSESS_LoginUsuario}\"',1),(258,-14,'core_auditoria.usuario_login','LIKE','\"%{$UsuarioAuditoria}%\"',7),(245,-11,'core_auditoria.usuario_login','LIKE','\"%{$UsuarioAuditoria}%\"',7),(247,-44,'1','=','1',1),(244,-11,'AND','','',6),(243,-11,'core_auditoria.accion','LIKE','\"%{$AccionAuditoria}%\"',5),(242,-11,'AND','','',4),(241,-11,'core_auditoria.fecha','<=','\"{$FechaFinAuditoria}\"',3),(234,-13,'AND','','',6),(233,-13,'core_auditoria.accion','LIKE','\"%{$AccionAuditoria}%\"',5),(232,-13,'AND','','',4),(231,-13,'core_auditoria.fecha','<=','\"{$FechaFinAuditoria}\"',3),(262,-21,'core_auditoria.fecha','<=','\"{$FechaFinAuditoria}\"',3),(265,-25,'usuario','=','\"{$PCOSESS_LoginUsuario}\"',2),(219,-10,'core_bugtracker.reportado_por','=','\"{$PCOSESS_LoginUsuario}\"',2),(246,-23,'archivo','=','\"{$RutaDocumento}\"',1),(250,-19,'core_formulario_objeto.informe_vinculado','=','\"{$PCO_ValorBusquedaBD}\"',7),(249,-19,'AND','','',4),(248,-19,'core_formulario_objeto.formulario','=','core_formulario.id',1),(253,-14,'AND','','',2),(223,-12,'AND','','',2),(240,-11,'AND','','',2),(230,-13,'AND','','',2),(261,-21,'AND','','',2),(272,17,'fecha','>=','\"{$fecha_inicio}\"',3),(266,6,'app_ventas.estado','=','0',1),(114,5,'app_ordenes_compra_detalle.id_producto','=','app_productos.id',1),(115,5,'AND','','',2),(116,5,'app_ordenes_compra_detalle.id_orden_compra','=','\"{$id}\"',3),(126,9,'app_ventas.fecha','>=','\"{$fecha_inicio}\"',1),(118,7,'app_ordenes_compra_detalle.id_producto','=','app_productos.id',1),(119,7,'AND','','',2),(120,7,'app_ordenes_compra_detalle.id_orden_compra','=','\"{$id}\"',3),(121,7,'AND','','',4),(122,7,'app_ordenes_compra_detalle.cantidad','!=','app_ordenes_compra_detalle.cantidad_recibida',5),(123,8,'app_ventas.id','=','app_ventas_detalle.id_venta',1),(124,8,'AND','','',2),(125,8,'app_ventas_detalle.id','=','\"{$id}\"',3),(127,9,'AND','','',2),(128,9,'app_ventas.fecha','<=','\"{$fecha_fin}\"',3),(129,10,'fecha','>=','\"{$fecha_inicio}\"',1),(130,10,'AND','','',2),(131,10,'fecha','<=','\"{$fecha_fin}\"',3),(132,11,'app_productos.id','=','app_ventas_detalle.id_producto',1),(133,11,'AND','','',2),(134,11,'app_ventas_detalle.id_venta','=','\"{$id}\"',3),(135,12,'fecha','>=','\"{$fecha_inicio}\"',3),(136,12,'AND','','',4),(137,12,'fecha','<=','\"{$fecha_fin}\"',5),(138,9,'AND','','',4),(139,9,'app_ventas.id','=','app_ventas_detalle.id_venta',5),(140,9,'AND','','',6),(141,9,'app_ventas_detalle.id_producto','=','app_productos.id',7),(142,13,'app_ventas_detalle.id_producto','=','app_productos.id',1),(143,13,'AND','','',2),(144,13,'app_ventas_detalle.id_venta','=','app_ventas.id',3),(149,130,'app_ventas.fecha','>=','\"{$fecha_inicio}\"',5),(148,130,'AND','','',4),(150,130,'AND','','',6),(151,130,'app_ventas.fecha','<=','\"{$fecha_fin}\"',7),(152,14,'app_proveedores.id','=','app_productos.id_proveedor',1),(153,14,'AND','','',2),(154,14,'app_productos.inventario','<=','2',3),(155,14,'AND','','',4),(156,14,'app_productos.estado','=','1',5),(252,-14,'core_auditoria.fecha','>=','\"{$FechaInicioAuditoria}\"',1),(222,-12,'core_auditoria.fecha','>=','\"{$FechaInicioAuditoria}\"',1),(239,-11,'core_auditoria.fecha','>=','\"{$FechaInicioAuditoria}\"',1),(229,-13,'core_auditoria.fecha','>=','\"{$FechaInicioAuditoria}\"',1),(260,-21,'core_auditoria.fecha','>=','\"{$FechaInicioAuditoria}\"',1),(212,15,'app_cartera.id_cliente','=','app_clientes.id',1),(213,15,'app_cartera.id_mecanico','=','app_mecanicos.id',3),(214,15,'AND','','',2),(221,-52,'fecha','>=','date_sub(date(now()),INTERVAL 30 DAY)',1),(228,-12,'core_auditoria.usuario_login','LIKE','\"%{$UsuarioAuditoria}%\"',7),(235,-13,'core_auditoria.usuario_login','LIKE','\"%{$UsuarioAuditoria}%\"',7),(263,-21,'AND','','',6),(264,-21,'core_auditoria.usuario_login','=','\"SQLog:error\"',7),(269,6,'AND','','',4),(270,6,'app_ventas.id_cliente','=','app_clientes.id',5),(273,17,'AND','','',4),(274,17,'fecha','<=','\"{$fecha_fin}\"',5),(275,10,'AND','','',4),(276,10,'app_ventas.estado','=','1',5),(277,18,'app_egresos.fecha','>=','\"{$fecha_inicio}\"',1),(278,18,'AND','','',2),(279,18,'app_egresos.fecha','<=','\"{$fecha_fin}\"',3),(285,9,'app_ventas.estado','=','1',9),(284,9,'AND','','',8),(299,20,'app_ventas.id_cliente','=','app_clientes.id',11),(298,20,'AND','','',10),(297,20,'app_ventas.estado','=','1',9),(296,19,'app_ventas.id_cliente','=','app_clientes.id',11),(295,19,'AND','','',10),(294,19,'app_ventas.estado','=','1',9),(532,36,'AND','','',10),(533,36,'app_ventas.factura_cerrada','=','1',15),(306,21,'app_mecanicos.id','=','app_ventas.id_mecanico',1),(307,21,'AND','','',2),(308,21,'app_ventas.fecha','>=','\"{$fechaInicio}\"',3),(309,21,'AND','','',4),(310,21,'app_ventas.fecha','<=','\"{$fechaFin}\"',5),(311,21,'AND','','',6),(312,21,'app_ventas.estado','=','1',7),(328,23,'app_ventas.id_cliente','=','app_clientes.id',1),(321,11,'\"{$condiciones}\"','','',4),(320,22,'app_novedades_mecanicos.id_mecanico','=','app_mecanicos.id',1),(327,23,'AND','','',2),(326,23,'app_ventas.estado','=','1',5),(329,23,'AND','','',4),(330,23,'app_ventas.id_mecanico','=','app_mecanicos.id',3),(331,23,'{$condiciones}','','',6),(332,24,'app_ventas.fecha','>=','\"{$fecha_inicio}\"',1),(333,24,'AND','','',2),(334,24,'app_ventas.fecha','<=','\"{$fecha_fin}\"',3),(350,25,'app_ventas.fecha','>=','\"{$fecha_inicio}\"',1),(348,24,'app_ventas.factura_pagada','=','0',17),(347,24,'AND','','',16),(462,20,'app_ventas.tipo_venta','=','2',19),(340,24,'app_ventas.estado','=','1',11),(341,24,'AND','','',10),(342,24,'app_ventas.id_cliente','=','app_clientes.id',13),(343,24,'AND','','',12),(344,24,'app_ventas.tipo_pago','=','\'Credito\'',15),(345,24,'AND','','',14),(461,20,'AND','','',18),(351,25,'AND','','',2),(352,25,'app_ventas.fecha','<=','\"{$fecha_fin}\"',3),(365,25,'app_ventas.forma_pago','=','\'Efectivo\'',15),(355,25,'AND','','',6),(356,25,'app_ventas.id_cliente','=','app_clientes.id',7),(357,25,'AND','','',8),(358,25,'app_ventas.estado','=','1',9),(362,25,'app_ventas.tipo_venta','IN','(2,3)',11),(361,25,'AND','','',10),(452,30,'AND','','',14),(453,30,'app_ventas.tipo_venta','=','app_opcionlista.valor_interno',15),(366,25,'AND','','',14),(367,26,'app_ventas.fecha','>=','\"{$fecha_inicio}\"',1),(368,26,'AND','','',2),(369,26,'app_ventas.fecha','<=','\"{$fecha_fin}\"',3),(370,26,'AND','','',6),(371,26,'app_ventas.id_cliente','=','app_clientes.id',7),(372,26,'AND','','',8),(373,26,'app_ventas.estado','=','1',9),(374,26,'AND','','',10),(375,26,'app_ventas.tipo_venta','=','1',11),(376,26,'AND','','',12),(379,26,'app_ventas.forma_pago','=','\'Efectivo\'',15),(380,27,'app_ventas.fecha','>=','\"{$fecha_inicio}\"',1),(381,27,'AND','','',2),(382,27,'app_ventas.fecha','<=','\"{$fecha_fin}\"',3),(383,27,'AND','','',6),(384,27,'app_ventas.id_cliente','=','app_clientes.id',7),(385,27,'AND','','',8),(386,27,'app_ventas.estado','=','1',9),(387,27,'AND','','',10),(388,27,'app_ventas.tipo_venta','=','4',11),(389,27,'AND','','',12),(451,24,'app_ventas.tipo_venta','=','app_opcionlista.valor_interno',19),(450,24,'AND','','',18),(392,27,'app_ventas.forma_pago','=','\'Efectivo\'',15),(393,28,'app_ventas.fecha','>=','\"{$fecha_inicio}\"',1),(394,28,'AND','','',2),(395,28,'app_ventas.fecha','<=','\"{$fecha_fin}\"',3),(396,28,'AND','','',6),(397,28,'app_ventas.id_cliente','=','app_clientes.id',7),(398,28,'AND','','',8),(399,28,'app_ventas.estado','=','1',9),(400,28,'AND','','',10),(401,28,'app_ventas.tipo_venta','=','5',11),(402,28,'AND','','',12),(405,28,'app_ventas.forma_pago','=','\'Efectivo\'',15),(406,29,'app_ventas.fecha','>=','\"{$fecha_inicio}\"',1),(407,29,'AND','','',2),(408,29,'app_ventas.fecha','<=','\"{$fecha_fin}\"',3),(409,29,'AND','','',6),(410,29,'app_ventas.id_cliente','=','app_clientes.id',7),(411,29,'AND','','',8),(412,29,'app_ventas.estado','=','1',9),(419,30,'app_ventas.fecha','>=','\"{$fecha_inicio}\"',1),(415,29,'AND','','',12),(449,29,'app_ventas.tipo_venta','=','app_opcionlista.valor_interno',17),(448,29,'AND','','',16),(418,29,'app_ventas.forma_pago','=','\'Transferencia QR\'',15),(420,30,'AND','','',2),(421,30,'app_ventas.fecha','<=','\"{$fecha_fin}\"',3),(422,30,'AND','','',6),(423,30,'app_ventas.id_cliente','=','app_clientes.id',7),(424,30,'AND','','',8),(425,30,'app_ventas.estado','=','1',9),(426,30,'AND','','',12),(427,30,'app_ventas.tipo_pago','=','\'Credito\'',13),(430,31,'app_mecanicos.id','=','app_novedades_mecanicos.id_mecanico',1),(431,31,'AND','','',2),(432,31,'app_novedades_mecanicos.fecha','>=','\"{$fechaInicio}\"',3),(433,31,'AND','','',4),(434,31,'app_novedades_mecanicos.fecha','<=','\"{$fechaFin}\"',5),(435,9,'AND','','',10),(436,9,'app_ventas.id_cliente','=','app_clientes.id',11),(437,32,'app_ventas.fecha_pago_credito','>=','\"{$fecha_inicio}\"',1),(438,32,'AND','','',2),(439,32,'app_ventas.fecha_pago_credito','<=','\"{$fecha_fin}\"',3),(440,32,'AND','','',6),(441,32,'app_ventas.id_cliente','=','app_clientes.id',7),(442,32,'AND','','',8),(443,32,'app_ventas.estado','=','1',9),(444,32,'AND','','',12),(445,32,'app_ventas.tipo_pago','=','\'Credito\'',13),(446,32,'AND','','',14),(447,32,'app_ventas.factura_pagada','=','1',15),(454,32,'app_ventas.tipo_venta	','=','app_opcionlista.valor_interno	',17),(455,32,'AND','','',16),(464,25,'app_ventas.tipo_venta','=','app_opcionlista.valor_interno',17),(463,25,'AND','','',16),(465,9,'AND','','',12),(466,9,'app_ventas.tipo_venta','=','app_opcionlista.valor_interno',13),(467,35,'app_liquidacion_mecanicos_enc.id_mecanico','=','app_mecanicos.id',1),(468,35,'AND','','',2),(469,35,'app_liquidacion_mecanicos_enc.fecha','<=','\"{$fechaFin}\"',5),(470,35,'AND','','',4),(485,36,'app_ventas.id_cliente','=','app_clientes.id',11),(484,36,'AND','','',14),(483,36,'app_ventas.estado','=','1',9),(482,21,'app_ventas.id_liquidacion','=','0',9),(481,21,'AND','','',8),(480,35,'app_liquidacion_mecanicos_enc.fecha','>=','\"{$fechaInicio}\"',3),(498,37,'app_ventas.fecha','>=','\"{$fecha_inicio}\"',1),(497,36,'app_ventas.tipo_venta','=','app_opcionlista.valor_interno',13),(496,36,'AND','','',12),(494,25,'AND','','',18),(495,25,'app_ventas.tipo_pago','=','\'Contado\'',19),(499,37,'AND','','',2),(500,37,'app_ventas.fecha','<=','\"{$fecha_fin}\"',3),(501,37,'AND','','',6),(502,37,'app_ventas.id_mecanico','=','app_mecanicos.id',7),(503,37,'AND','','',8),(504,37,'app_ventas.estado','=','1',9),(505,37,'AND','','',10),(507,37,'AND','','',15),(516,37,'app_ventas.id','=','app_ventas_detalle.id_venta',16),(515,37,'AND','','',16),(514,37,'app_ventas_detalle.id_producto','<>','3141',16),(513,37,'app_ventas.id','<>','0',14),(517,38,'app_ventas.fecha','>=','\"{$fecha_inicio}\"',1),(518,38,'AND','','',2),(519,38,'app_ventas.fecha','<=','\"{$fecha_fin}\"',3),(520,38,'AND','','',6),(521,38,'app_ventas.id_mecanico','=','app_mecanicos.id',7),(522,38,'AND','','',8),(523,38,'app_ventas.estado','=','1',9),(524,38,'AND','','',10),(525,38,'app_ventas.id','<>','0',14),(526,38,'AND','','',15),(527,38,'app_ventas_detalle.id_producto','=','3141',16),(528,38,'AND','','',16),(529,38,'app_ventas.id','=','app_ventas_detalle.id_venta',16),(534,39,'app_abonos_ventas_credito.id_venta','=','app_ventas.id',1),(538,31,'app_novedades_mecanicos.id_liquidacion','=','0',7),(537,31,'AND','','',6),(539,40,'app_abonos_ventas_credito.id_venta','=','\"{$id}\"',1),(540,41,'app_ventas.estado','=','1',9),(541,41,'AND','','',10),(542,41,'app_ventas.id_cliente','=','app_clientes.id',11);

--
-- Table structure for table `core_informe_tablas`
--

CREATE TABLE `core_informe_tablas` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `informe` int(10) DEFAULT NULL,
  `valor_tabla` varchar(250) DEFAULT NULL,
  `valor_alias` varchar(250) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=224 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_informe_tablas`
--

INSERT INTO `core_informe_tablas` VALUES (137,-4,'core_bugtracker',''),(135,-14,'core_auditoria',''),(123,-9,'core_bugtracker',''),(136,-26,'core_pcoder_bloqueos',''),(118,-31,'core_acortadorurls',''),(133,-16,'core_replicasbd',''),(124,-7,'core_bugtracker',''),(115,-8,'core_bugtracker',''),(140,-6,'core_bugtracker',''),(119,-12,'core_auditoria',''),(112,-17,'core_replicasbd',''),(113,-24,'core_usuario',''),(126,-20,'core_usuario',''),(129,-44,'core_auditoria',''),(122,-18,'core_monitoreo',''),(116,-5,'core_bugtracker',''),(127,-11,'core_auditoria',''),(125,-22,'core_tareascron',''),(121,-13,'core_auditoria',''),(138,-21,'core_auditoria',''),(139,-25,'core_pcoder_bloqueos',''),(114,-10,'core_bugtracker',''),(128,-23,'core_pcoder_historial',''),(131,-19,'core_formulario_objeto',''),(27,1,'app_empresa',''),(130,-19,'core_formulario',''),(54,2,'app_clientes',''),(55,3,'app_proveedores',''),(56,4,'app_productos',''),(63,7,'app_ordenes_compra_detalle',''),(58,5,'app_ordenes_compra_detalle',''),(59,5,'app_productos',''),(141,6,'app_ventas',''),(64,7,'app_productos',''),(65,8,'app_ventas',''),(66,8,'app_ventas_detalle',''),(67,9,'app_ventas',''),(68,10,'app_ventas',''),(71,11,'app_productos',''),(70,11,'app_ventas_detalle',''),(73,12,'app_ventas',''),(75,9,'app_ventas_detalle',''),(76,9,'app_productos',''),(78,13,'app_ventas',''),(79,13,'app_ventas_detalle',''),(80,13,'app_productos',''),(81,14,'app_productos',''),(82,14,'app_proveedores',''),(109,15,'app_cartera',''),(110,15,'app_clientes',''),(111,15,'app_mecanicos',''),(117,-52,'core_auditoria',''),(120,-49,'core_scripts_lenguajes',''),(132,-61,'core_llaves_metodo',''),(134,-62,'core_llaves_api',''),(145,16,'app_egresos',''),(143,6,'app_clientes',''),(147,17,'app_egresos',''),(152,19,'app_ventas',''),(151,18,'app_egresos',''),(155,19,'app_clientes',''),(156,20,'app_ventas',''),(157,20,'app_clientes',''),(161,21,'app_mecanicos',''),(160,21,'app_ventas',''),(162,22,'app_novedades_mecanicos',''),(163,22,'app_mecanicos',''),(164,23,'app_mecanicos',''),(165,23,'app_ventas',''),(180,26,'app_clientes',''),(170,24,'app_ventas',''),(169,23,'app_clientes',''),(174,25,'app_ventas',''),(173,24,'app_clientes',''),(179,26,'app_ventas',''),(177,25,'app_clientes',''),(181,27,'app_clientes',''),(182,27,'app_ventas',''),(183,28,'app_clientes',''),(184,28,'app_ventas',''),(185,29,'app_clientes',''),(186,29,'app_ventas',''),(187,30,'app_clientes',''),(188,30,'app_ventas',''),(189,31,'app_novedades_mecanicos',''),(190,31,'app_mecanicos',''),(191,9,'app_clientes',''),(192,32,'app_clientes',''),(193,32,'app_ventas',''),(194,29,'app_opcionlista',''),(195,24,'app_opcionlista',''),(196,30,'app_opcionlista',''),(197,32,'app_opcionlista',''),(200,25,'app_opcionlista',''),(201,9,'app_opcionlista',''),(206,35,'app_mecanicos',''),(205,35,'app_liquidacion_mecanicos_enc',''),(207,36,'app_ventas',''),(208,36,'app_clientes',''),(209,36,'app_opcionlista',''),(210,37,'app_ventas',''),(213,37,'app_ventas_detalle',''),(214,37,'app_mecanicos',''),(215,38,'app_ventas',''),(216,38,'app_ventas_detalle',''),(217,38,'app_mecanicos',''),(218,39,'app_abonos_ventas_credito',''),(219,39,'app_ventas',''),(221,40,'app_abonos_ventas_credito',''),(222,41,'app_ventas',''),(223,41,'app_clientes','');

--
-- Table structure for table `core_kanban`
--

CREATE TABLE `core_kanban` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `login_admintablero` varchar(250) DEFAULT NULL,
  `titulo` varchar(255) DEFAULT NULL,
  `descripcion` text DEFAULT NULL,
  `asignado_a` varchar(250) DEFAULT NULL,
  `categoria` varchar(255) DEFAULT '',
  `columna` int(11) DEFAULT NULL,
  `peso` int(11) DEFAULT NULL,
  `estilo` varchar(15) DEFAULT NULL,
  `fecha` date DEFAULT NULL,
  `archivado` int(11) DEFAULT NULL,
  `compartido_rw` text DEFAULT NULL,
  `tablero` int(11) DEFAULT NULL,
  `porcentaje` int(11) DEFAULT 0,
  `usuarios_edicion` varchar(255) DEFAULT NULL,
  `estado_general` varchar(30) DEFAULT NULL,
  `pruebas_funcionales` varchar(500) DEFAULT NULL,
  `pruebas_nofuncionales` varchar(500) DEFAULT NULL,
  `fecha_inicio` date DEFAULT NULL,
  `aceptacion_pf` char(2) DEFAULT 'No',
  `aceptacion_pnf` char(2) DEFAULT 'No',
  `usuario_aceptacion_pf` varchar(250) DEFAULT '',
  `usuario_aceptacion_pnf` varchar(250) DEFAULT '',
  `historial` text DEFAULT NULL COMMENT 'Guarda categorias en tableros padre',
  `horas_estimadas` int(11) DEFAULT 0,
  `presupuesto` int(11) DEFAULT 0,
  `adjunto_elicitacion` varchar(255) DEFAULT NULL,
  `diagrama_elicitacion` mediumtext DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `columna` (`columna`),
  KEY `login_admintablero` (`login_admintablero`),
  KEY `usuario_aceptacion_pf` (`usuario_aceptacion_pf`),
  KEY `usuario_aceptacion_pnf` (`usuario_aceptacion_pnf`),
  KEY `aceptacion_pf` (`aceptacion_pf`),
  KEY `aceptacion_pnf` (`aceptacion_pnf`),
  KEY `archivado` (`archivado`),
  KEY `fecha` (`fecha`),
  KEY `fecha_inicio` (`fecha_inicio`),
  KEY `categoria` (`categoria`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_kanban`
--


--
-- Table structure for table `core_llaves_api`
--

CREATE TABLE `core_llaves_api` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(15) NOT NULL,
  `llave` varchar(50) NOT NULL,
  `secreto` varchar(50) NOT NULL,
  `uri` varchar(255) NOT NULL,
  `dominio_autorizado` varchar(255) NOT NULL,
  `ip_autorizada` varchar(255) NOT NULL,
  `funciones_autorizadas` text DEFAULT NULL,
  `total_ejecuciones` int(11) NOT NULL DEFAULT 0,
  `cifrado_openssl` varchar(20) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_llaves_api`
--


--
-- Table structure for table `core_llaves_api_externas`
--

CREATE TABLE `core_llaves_api_externas` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) NOT NULL,
  `api_key` varchar(150) NOT NULL,
  `api_secret` varchar(150) NOT NULL,
  `url_consumo` varchar(255) NOT NULL,
  `url_redireccion` varchar(255) NOT NULL,
  `script` mediumtext DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_llaves_api_externas`
--


--
-- Table structure for table `core_llaves_metodo`
--

CREATE TABLE `core_llaves_metodo` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(250) NOT NULL,
  `descripcion` varchar(250) NOT NULL,
  `tipo_ejecucion` varchar(50) NOT NULL DEFAULT 'LIBRE',
  `metodo_recepcion` varchar(15) NOT NULL DEFAULT 'GET+POST',
  `formato` varchar(50) NOT NULL DEFAULT 'TXT',
  `script` mediumtext DEFAULT NULL,
  `ejemplo_salida` mediumtext DEFAULT NULL,
  `total_ejecuciones` int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_llaves_metodo`
--


--
-- Table structure for table `core_llaves_metodoparametro`
--

CREATE TABLE `core_llaves_metodoparametro` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `metodo` int(10) NOT NULL,
  `nombre` varchar(50) NOT NULL,
  `descripcion` varchar(250) NOT NULL,
  `tipo_dato` varchar(50) NOT NULL,
  `longitud` int(11) DEFAULT NULL,
  `obligatorio` char(1) DEFAULT NULL,
  `observaciones` text DEFAULT NULL,
  `ejemplo_entrada` mediumtext DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_llaves_metodoparametro`
--


--
-- Table structure for table `core_menu`
--

CREATE TABLE `core_menu` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `texto` varchar(250) DEFAULT '',
  `padre` varchar(15) DEFAULT '0',
  `peso` int(3) DEFAULT 0,
  `url` text DEFAULT NULL,
  `destino` varchar(250) DEFAULT '',
  `tipo_comando` varchar(15) DEFAULT 'Interno',
  `comando` text DEFAULT NULL,
  `nivel_usuario` int(10) DEFAULT 0,
  `columna` int(1) DEFAULT 1,
  `posible_arriba` int(1) DEFAULT 0,
  `posible_centro` int(1) DEFAULT 1,
  `posible_escritorio` int(1) DEFAULT 0,
  `seccion` varchar(250) DEFAULT '',
  `imagen` varchar(250) DEFAULT '',
  `posible_izquierda` int(1) DEFAULT 0,
  `tipo_menu` varchar(10) DEFAULT 'opc',
  `formulario_vinculado` int(11) DEFAULT 0,
  `clase_contenedor` varchar(250) DEFAULT '',
  `hash_unico` varchar(15) DEFAULT '',
  `posible_usuario` int(1) DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=273 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_menu`
--

INSERT INTO `core_menu` VALUES (247,'.','1648064142412',15,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648066348889',0),(248,'{$MULTILANG_PCODER_EnrollarSeleccion} <span class=\'pull-right text-muted small\'><i>Alt+L</i></span>','1648066658218',15,'javascript:var LMQTP=editor.execCommand(\'fold\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-compress fa-fw',0,'opc',-33,'','1648125231862',0),(246,'.','1648066658218',14,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648125205513',0),(245,'{$MULTILANG_PCODER_UnirSeleccion}','1648064142412',14,'javascript:var LMQTP=editor.execCommand(\'joinlines\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-reorder fa-fw',0,'opc',-33,'','1648066301592',0),(244,'','',13,'javascript:var LMQTP=IntercambiarEstadoCaracteresInvisibles();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-eye-slash fa-fw text-info',0,'opc',-33,'menu_iconos','9648067162943',0),(243,'{$MULTILANG_PCODER_DividirVertical}','1648066658218',13,'javascript:PCODER_DividirPantalla_Vertical();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-pause fa-fw',0,'opc',-33,'','1648125168144',0),(242,'{$MULTILANG_PCODER_InvertirSeleccion}','1648064142412',13,'javascript:var LMQTP=editor.execCommand(\'invertSelection\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-eraser fa-fw',0,'opc',-33,'','1648066244965',0),(241,'{$PCODER_LenguajesResaltado}','',12,'javascript:var LMQTP=event.preventDefault();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'btn-sm menu_textual','1648128333025',0),(240,'{$MULTILANG_PCODER_DividirHorizontal}','1648066658218',12,'javascript:PCODER_DividirPantalla_Horizontal();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-pause fa-rotate-90 fa-fw',0,'opc',-33,'','1648125125431',0),(239,'{$MULTILANG_PCODER_Salir}: {$MULTILANG_PCODER_CerrarVentana}','1648062287548',12,'javascript: var LMQTP=PCODER_CerrarArchivoActual();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-sign-out fa-fw',0,'opc',-33,'','1648063740365',0),(238,'{$MULTILANG_PCODER_DividirNO}','1648066658218',11,'javascript:PCODER_DividirPantalla_NO();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-stop fa-fw',0,'opc',-33,'','1648125068752',0),(237,'{$MULTILANG_PCODER_DuplicarSeleccion} <span class=\'pull-right text-muted small\'><i>Ctrl+Shift+D</i></span>','1648064142412',11,'javascript:var LMQTP=editor.execCommand(\'duplicateSelection\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-pause fa-fw',0,'opc',-33,'','1648066135334',0),(235,'Consulta comodin','1684860213028',10,'javascript:PCODER_ComodinIA();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-magic fa-fw',0,'opc',-33,'','1684960130723',0),(236,'{$MULTILANG_PCODER_Cerrar} <span class=\'pull-right text-muted small\'><i>Ctrl+Q</i></span>','1648062287548',11,'javascript:PCODER_CerrarArchivoActual();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-times fa-fw',0,'opc',-33,'hidden','1648063631113',0),(234,'.','1648066658218',10,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648125048076',0),(232,'.','1648062287548',10,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648063589476',0),(233,'.','1648064142412',10,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider ','1648066014296',0),(231,'<div style=\'color:lightgray;display:inline;\'>{$MULTILANG_PCODER_Herramientas}</div>','',9,'','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','',0,'grp',-33,'btn-sm menu_textual hidden','1648126289200',0),(230,'{$MULTILANG_PCODER_PanelDer}','1648066658218',9,'javascript:PCODER_ActivarPanelDerecho();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-columns fa-fw',0,'opc',-33,'','1648124882294',0),(229,'{$MULTILANG_PCODER_Pegar} <span class=\'pull-right text-muted small\'><i>Ctrl+V</i></span>','1648064142412',9,'javascript:var LMQTP=editor.execCommand(\'paste\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-clipboard fa-fw',0,'opc',-33,' ','1648065677387',0),(228,'{$MULTILANG_PCODER_HistorialVersiones} <span class=\'pull-right text-muted small\'><i></i></span>','1648062287548',9,'javascript:var LMQTP=PCODER_HistorialArchivoActual();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-history fa-fw',0,'opc',-33,'','1648063499409',0),(227,'<div style=\'color:lightgray;display:inline;\'>{$MULTILANG_PCODER_Depurar}</div>','',8,'','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','',0,'grp',-33,'btn-sm menu_textual','1648125708462',0),(226,'{$MULTILANG_PCODER_PanelIzq}','1648066658218',8,'javascript:PCODER_ActivarPanelIzquierdo();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-columns fa-fw',0,'opc',-33,'','1648124812813',0),(225,'{$MULTILANG_PCODER_Copiar} <span class=\'pull-right text-muted small\'><i>Ctrl+C</i></span>','1648064142412',8,'javascript:var LMQTP=editor.execCommand(\'copy\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-files-o fa-fw',0,'opc',-33,' ','1648065546727',0),(223,'{$MULTILANG_PCODER_OrdenaSel}','1648125397567',7,'javascript:var LMQTP=editor.execCommand(\'sortlines\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-sort-alpha-asc fa-fw',0,'opc',-33,'','1648125676764',0),(224,'.','1648062287548',8,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider ','1648063386605',0),(222,'<div style=\'color:lightgray;display:inline;\'>{$MULTILANG_PCODER_Formato}</div>','',7,'','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','',0,'grp',-33,'btn-sm menu_textual','1648125397567',0),(221,'.','1648066658218',7,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648124793372',0),(220,'{$MULTILANG_PCODER_Cortar} <span class=\'pull-right text-muted small\'><i>Ctrl+X</i></span>','1648064142412',7,'javascript:var LMQTP=editor.execCommand(\'cut\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-scissors fa-fw',0,'opc',-33,' ','1648064762839',0),(219,'{$MULTILANG_PCODER_Guardar} <span class=\'pull-right text-muted small\'><i>Ctrl+S</i></span>','1648062287548',7,'javascript:Guardar();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-floppy-o fa-fw',0,'opc',-33,'','1648063280945',0),(218,'Buscar fuga de recursos y/o errores lógicos','1684860213028',6,'javascript:PCODER_BuscarFugadeRecursosyErroresLogicos();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-tachometer fa-fw',0,'opc',-33,'','1684933719941',0),(216,'{$MULTILANG_PCODER_Alejar}','1648066658218',6,'javascript:DisminuirTamanoFuente();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-minus-square fa-fw',0,'opc',-33,'','1648124740615',0),(217,'{$MULTILANG_PCODER_ConvMin}','1648125397567',6,'javascript:var LMQTP=editor.execCommand(\'tolowercase\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-info fa-fw',0,'opc',-33,'','1648125638591',0),(214,'.','1648064142412',6,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648064655620',0),(215,'<div style=\'color:lightgray;display:inline;\'>{$MULTILANG_PCODER_Ver}</div>','',6,'','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','',0,'grp',-33,'btn-sm menu_textual','1648066658218',0),(213,'{$MULTILANG_PCODER_Buscar}','1648062287548',6,'javascript:BuscadorArchivosVisible=0; PCODER_ActivarPanelIzquierdo(); ActivarBuscadorArchivos();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-search fa-fw',0,'opc',-33,'hidden','1648063106949',0),(212,'<input type=\'checkbox\' id=\'Check_VerificarAutocompletado\' value=\'1\' checked readonly> {$MULTILANG_PCODER_Activar}/{$MULTILANG_PCODER_Desactivar} {$MULTILANG_PCODER_Autocompletado}','1648125708462',5,'javascript:var LMQTP=VerificarAutocompletado(0);','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'','1648126154931',0),(211,'{$MULTILANG_PCODER_ConvMay}','1648125397567',5,'javascript:var LMQTP=editor.execCommand(\'touppercase\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-font fa-fw',0,'opc',-33,'','1648125595455',0),(210,'{$MULTILANG_PCODER_Acercar}','1648066658218',5,'javascript:AumentarTamanoFuente();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-plus-square fa-fw',0,'opc',-33,'','1648124701348',0),(209,'{$MULTILANG_PCODER_SeleccionarTodo} <span class=\'pull-right text-muted small\'><i>Ctrl+A</i></span>','1648064142412',5,'javascript:editor.selectAll();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-file-text fa-fw',0,'opc',-33,'','1648064536699',0),(208,'<div style=\'color:lightgray;display:inline;\'>{$MULTILANG_PCODER_Editar}</div>','',5,'','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','',0,'grp',-33,'btn-sm menu_textual','1648064142412',0),(207,'{$MULTILANG_PCODER_Abrir} <span class=\'pull-right text-muted small\'><i>Ctrl+O</i></span>','1648062287548',5,'javascript: var LMQTP=OperacionFS_AbrirArchivo();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-folder-open fa-fw',0,'opc',-33,'','1648063009084',0),(206,'Documentar/Explicar código','1684860213028',4,'javascript:PCODER_DocumentarCodigo();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-book fa-fw',0,'opc',-33,'','1684933668616',0),(205,' ','',4,'javascript:Guardar();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-floppy-o fa-fw text-warning',0,'opc',-33,'menu_iconos','9648063280945',0),(204,'{$MULTILANG_PCODER_Otros}','1648127074712',4,'javascript:var LMQTP=editor.execCommand(\'showSettingsMenu\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-cogs fa-fw',0,'opc',-33,' hidden','1648127290523',0),(203,'{$MULTILANG_PCODER_Buscar} {$MULTILANG_PCODER_Archivo}','1648126289200',4,'javascript:BuscadorArchivosVisible=0; PCODER_ActivarPanelIzquierdo(); ActivarBuscadorArchivos();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-search fa-fw',0,'opc',-33,'','1648126514554',0),(202,'<input type=\'checkbox\' id=\'Check_VerificarSintaxisEditor\' value=\'1\' checked readonly> {$MULTILANG_PCODER_Activar}/{$MULTILANG_PCODER_Desactivar} {$MULTILANG_PCODER_CheqSintaxis}','1648125708462',4,'javascript:var LMQTP=VerificarSintaxisEditor(0);','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'','1648125985468',0),(200,'.','1648066658218',4,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648067410597',0),(201,'.','1648125397567',4,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648125584680',0),(199,'.','1648064142412',4,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648064475468',0),(198,'.','1648062287548',4,'','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider ','1648062955193',0),(197,'Optimizar código','1684860213028',3,'javascript:PCODER_BuscarOptimizacionesCodigo();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-code fa-fw',0,'opc',-33,'','1684930227664',0),(196,' ','',3,'javascript:PCODER_HistorialArchivoActual();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-history fa-fw text-warning',0,'opc',-33,'menu_iconos','9648063499409',0),(195,'Auto-formatear c&oacute;digo','1648125397567',3,'javascript:var LMQTP=editor.autoIndent();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-code fa-fw',0,'opc',-33,'','1649179657595',0),(194,'{$MULTILANG_PCODER_Acerca}','1648127074712',3,'javascript:AbrirAcercaDe();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-info-circle fa-fw',0,'opc',-33,'','1648127228608',0),(192,'.','1648125708462',3,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648125972686',0),(193,'{$MULTILANG_PCODER_HerramientaDiferencias}','1648126289200',3,'javascript:$(\'#pestana_diferencias\').trigger(\'click\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-eye-slash fa-fw',0,'opc',-33,'','1648126460806',0),(83,'Empresa','',1,'','_self','Objeto','frm:1:1',-1,1,0,1,0,'Administración','fa ion-briefcase',0,'opc',0,'','1652934855543',0),(265,'Egresos','',1,'','_self','Objeto','frm:11:1',-1,1,0,1,0,'Administración','glyphicon glyphicon-shopping-cart',1,'opc',0,'','1730770214516',0),(80,'Registrar venta','',1,'','_self','Objeto','frm:8:1',-1,1,0,1,0,'Ventas','fa fa-barcode',1,'opc',0,'','1652158482281',0),(81,'Productos','',1,'','_self','Objeto','frm:4:1',-1,1,0,1,0,'Administración','glyphicon glyphicon-edit',1,'opc',0,'','1652850817404',0),(84,'Clientes','',1,'','_self','Objeto','frm:2:1',-1,1,0,1,0,'Clientes','glyphicon glyphicon-user',1,'opc',0,'','1652934994082',0),(85,'Reportes','',1,'','_self','Objeto','frm:6:1',-1,1,0,1,0,'Reportes','fa ion-podium',1,'opc',0,'','1657686137865',0),(191,'{$MULTILANG_PCODER_NrosLinea}','1648066658218',3,'javascript:IntercambiarVisibilidadNumerosDeLinea();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-list-ol fa-fw',0,'opc',-33,'','1648067225486',0),(190,'{$MULTILANG_PCODER_Rehacer} <span class=\'pull-right text-muted small\'><i>Ctrl+Y</i></span>','1648064142412',3,'javascript:PCODER_RehacerEdicion();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-repeat fa-fw',0,'opc',-33,'','1648064361795',0),(189,'<div style=\'color:lightgray;display:inline;\'>{$MULTILANG_Archivo}</div>','',3,'','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','',0,'grp',-33,'btn-sm menu_textual','1648062287548',0),(188,'Buscar posibles bugs de seguridad','1684860213028',2,'javascript:PCODER_BuscarPosiblesBugsSeguridad();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-bomb fa-fw',0,'opc',-33,'','1684861308492',0),(187,'{$PCODER_PathVisual}','',2,'javascript:var LMQTP=event.preventDefault();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'path_visual','1649706169022',0),(185,'.','1648127074712',2,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648127207649',0),(186,' ','',2,'javascript:var LMQTP=IntercambiarVisibilidadMenu();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-bullseye fa-fw text-info',0,'opc',-33,'menu_iconos','9649273350755',0),(184,'{$MULTILANG_PCODER_Minimap}','1648126289200',2,'javascript:PCODER_ActivarPanelDerecho();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-map-signs fa-fw',0,'opc',-33,'','1648126423747',0),(183,'{$MULTILANG_PCODER_DepuraErrorPrevio} <span class=\'pull-right text-muted small\'><i>Alt+Shift+E</i></span>','1648125708462',2,'javascript:var LMQTP=editor.execCommand(\'goToPreviousError\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-outdent fa-fw',0,'opc',-33,'','1648125903753',0),(182,'{$MULTILANG_PCODER_DisSangria}','1648125397567',2,'javascript:var LMQTP=editor.blockOutdent();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-outdent fa-fw',0,'opc',-33,'','1648125531321',0),(181,'{$MULTILANG_PCODER_CaracNoImprimibles}','1648066658218',2,'javascript:var LMQTP=IntercambiarEstadoCaracteresInvisibles();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-eye-slash fa-fw',0,'opc',-33,'','1648067162943',0),(180,'{$MULTILANG_PCODER_Deshacer} <span class=\'pull-right text-muted small\'><i>Ctrl+Z</i></span>','1648064142412',2,'javascript:PCODER_DeshacerEdicion();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-undo fa-fw',0,'opc',-33,'','1648064203573',0),(179,' ','',1,'javascript: var LMQTP=PCODER_CerrarArchivoActual();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-times fa-fw texto-blink',0,'opc',-33,'btn btn-xs btn-warning ','1656526089915',0),(178,'{$MULTILANG_PCODER_AtajosTitPcoder}','1648127074712',1,'javascript:AbrirAtajosTeclado();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-keyboard-o fa-fw',0,'opc',-33,'','1648127121009',0),(177,'{$MULTILANG_PCODER_ExploradorColores}','1648126289200',1,'javascript:PCODER_ActivarPanelDerecho();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-paint-brush fa-fw',0,'opc',-33,'','1648126364949',0),(176,'{$MULTILANG_PCODER_DepuraErrorSiguiente} <span class=\'pull-right text-muted small\'><i>Alt+E</i></span>','1648125708462',1,'javascript:var LMQTP=editor.execCommand(\'goToNextError\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-indent fa-fw',0,'opc',-33,'','1648125839143',0),(175,'{$MULTILANG_PCODER_AumSangria}','1648125397567',1,'javascript:var LMQTP=editor.blockIndent();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-indent fa-fw',0,'opc',-33,'','1648125472538',0),(174,'{$MULTILANG_PCODER_PantallaCompleta} <span class=','1648066658218',1,'javascript:var LMQTP=IntercambiarPantallaCompleta();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-desktop fa-fw',0,'opc',-33,'','1648067117626',0),(173,'{$MULTILANG_PCODER_Nuevo} ({$MULTILANG_Archivo}-{$MULTILANG_PCODER_Carpeta})','1648062287548',1,'javascript: varLMQTP=OperacionFS_CrearArchivo();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-file-o fa-fw',0,'opc',-33,'','1648062889382',0),(172,'Cartera','',1,'','_self','Objeto','frm:10:1',-1,1,0,1,0,'Administración','glyphicon glyphicon-book',1,'opc',0,'','1710365543839',0),(249,'','',15,'javascript:AumentarTamanoFuente();','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-plus-square fa-fw text-info',0,'opc',-33,'menu_iconos','9648124701348',0),(250,'{$MULTILANG_PCODER_DesenrollarTodo} <span class=\'pull-right text-muted small\'><i>Alt+Shift+0</i></span>','1648066658218',16,'javascript:var LMQTP=editor.execCommand(\'unfoldall\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-expand fa-fw',0,'opc',-33,'','1648125300734',0),(251,' ','',16,'javascript:DisminuirTamanoFuente();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-minus-square fa-fw text-info',0,'opc',-33,'menu_iconos','9648124740615',0),(252,'{$MULTILANG_PCODER_Buscar} <span class=\'pull-right text-muted small\'><i>Ctrl+F</i></span>','1648064142412',17,'javascript:var LMQTP=editor.execCommand(\'find\');','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-search fa-fw',0,'opc',-33,'','1648066381069',0),(253,'.','1648066658218',17,'','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1649273273302',0),(254,'','',17,'javascript:var LMQTP=editor.execCommand(\'fold\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-compress fa-fw text-info',0,'opc',-33,'menu_iconos','9648125231862',0),(255,'{$MULTILANG_PCODER_Reemplazar} <span class=\'pull-right text-muted small\'><i>Ctrl+H</i></span>','1648064142412',18,'javascript:var LMQTP=editor.execCommand(\'replace\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-exchange fa-fw',0,'opc',-33,'','1648066449372',0),(256,'Ver/Ocultar Menus <span class=\'pull-right text-muted small\'><i>Ctrl+B</i></span>','1648066658218',18,'javascript:var LMQTP=IntercambiarVisibilidadMenu();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-bullseye fa-fw',0,'opc',-33,'','1649273350755',0),(257,'','',18,'javascript:var LMQTP=editor.execCommand(\'unfoldall\');','','','',-1,1,0,0,0,'PCO_NoVisible','fa fa-expand fa-fw text-info',0,'opc',-33,'menu_iconos','9648125300734',0),(258,'.','1648064142412',19,'','','','',-1,1,0,0,0,'PCO_NoVisible','',0,'opc',-33,'divider','1648066538212',0),(259,'{$MULTILANG_PCODER_Preferencias}','1648064142412',25,'javascript:AbrirPreferencias();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-wrench fa-fw text-warning',0,'opc',-33,'','1648066585350',0),(260,'<div style=\'color:lightgray;display:inline;\'>A.I.</div>','',50,'','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-qq fa-fw',0,'grp',-33,'btn-sm','1684860213028',0),(261,' ','',86,'javascript:var LMQTP=$(\'#AtajosTeclado\').modal(\'show\'); var LMQTP2=$(\'#AtajosTeclado\').css(\'z-index\', \'1500\');','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-keyboard-o fa-fw text-info',0,'opc',-33,'menu_iconos','9648127121009',0),(262,' ','',89,'javascript:var LMQTP=editor.execCommand(\'find\');','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-search fa-fw text-danger',0,'opc',-33,'iconos_fijos_menu','1648126615710',0),(263,' ','',90,'javascript:var LMQTP=IntercambiarPantallaCompleta();','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-desktop fa-fw text-default',0,'opc',-33,'iconos_fijos_menu','1648126767823',0),(264,'<div style=\'color:lightgray;display:inline;\'>{$MULTILANG_PCODER_AyudaBORRAME}</div>','',99,'','_self','Objeto','',-1,1,0,0,0,'PCO_NoVisible','fa fa-question-circle text-info',0,'grp',-33,'btn-sm menu_textual','1648127074712',0),(266,'Nueva venta','',1,'','_self','Objeto','frm:8:1',-1,1,0,0,1,'Menu','fa fa-barcode',0,'opc',8,'btn-primary','1731644966967',0),(267,'Administracion Ventas','',1,'','_self','Objeto','frm:12:1',-1,1,0,1,0,'Ventas','glyphicon glyphicon-file',1,'opc',0,'','1732202078130',0),(268,'Novedades Mecanicos','',1,'','_self','Objeto','frm:15:1',-1,1,0,1,0,'Administración','glyphicon glyphicon-plus-sign',1,'opc',0,'','1732647054278',0),(269,'Liquidación Mecanicos','',1,'','_self','Objeto','frm:14:1',-1,1,0,1,0,'Administración','glyphicon glyphicon-briefcase',1,'opc',0,'','1732649197472',0),(270,'Ventas a Crédito','',1,'','_self','Objeto','frm:16:1',-1,1,0,1,0,'Ventas','glyphicon glyphicon-time',1,'opc',0,'','1732809595527',0),(271,'Abonos','',1,'','_blank','Objeto','frm:17:1',-1,1,1,0,0,'Abonos','fa-money-check-dollar',0,'opc',16,'','1739373649703',1),(272,'Ventas a Crédito','',1,'','_self','Objeto','frm:16:1',-1,1,1,0,0,'Ventas a credito','glyphicon glyphicon-book',0,'opc',17,'','1739373723626',1);

--
-- Table structure for table `core_modulos_app`
--

CREATE TABLE `core_modulos_app` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(250) NOT NULL,
  `descripcion` text DEFAULT NULL,
  `desarrolladores` text DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_modulos_app`
--


--
-- Table structure for table `core_monitoreo`
--

CREATE TABLE `core_monitoreo` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `tipo` varchar(20) NOT NULL DEFAULT '',
  `pagina` int(10) NOT NULL,
  `peso` int(10) NOT NULL,
  `nombre` varchar(255) NOT NULL DEFAULT '',
  `host` varchar(255) NOT NULL DEFAULT '',
  `puerto` varchar(255) NOT NULL DEFAULT '',
  `tipo_ping` varchar(255) NOT NULL DEFAULT '',
  `saltos` int(10) NOT NULL,
  `comando` text DEFAULT NULL,
  `ancho` int(10) NOT NULL,
  `alto` int(10) NOT NULL,
  `tamano_resultado` int(10) NOT NULL,
  `ocultar_titulos` int(10) NOT NULL,
  `path` varchar(255) NOT NULL DEFAULT '',
  `correo_alerta` varchar(255) NOT NULL DEFAULT '',
  `alerta_sonora` int(10) DEFAULT 0,
  `milisegundos_lectura` int(10) DEFAULT 1,
  `alerta_vibracion` int(10) DEFAULT 0,
  `ultimo_estado` varchar(250) DEFAULT '',
  `valor_minimo` int(11) DEFAULT NULL,
  `valor_maximo` int(11) DEFAULT NULL,
  `conexion_origen_datos` varchar(255) DEFAULT '',
  `modo_compacto` int(10) DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_monitoreo`
--


--
-- Table structure for table `core_opcionlista`
--

CREATE TABLE `core_opcionlista` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `identificador_lista` varchar(250) DEFAULT NULL,
  `valor_interno` varchar(255) DEFAULT NULL,
  `valor_visual` varchar(255) DEFAULT NULL,
  `ordenamiento` int(11) DEFAULT NULL,
  `tags_extra` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=265 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_opcionlista`
--

INSERT INTO `core_opcionlista` VALUES (1,'tipos_grafico','T','{$MULTILANG_TablaDatos}',1,NULL),(2,'tipos_grafico','G','{$MULTILANG_Grafico}',2,NULL),(3,'dicotomico_sino','S','{$MULTILANG_Si}',1,NULL),(4,'dicotomico_sino','N','{$MULTILANG_No}',2,NULL),(5,'dicotomico_nosi','N','{$MULTILANG_No}',1,NULL),(6,'dicotomico_nosi','S','{$MULTILANG_Si}',2,NULL),(7,'booleano_nosi','0','{$MULTILANG_No}',1,NULL),(8,'booleano_nosi','1','{$MULTILANG_Si}',2,NULL),(9,'booleano_sino','1','{$MULTILANG_Si}',1,NULL),(10,'booleano_sino','0','{$MULTILANG_No}',2,NULL),(11,'visibilidad_oauth','1','{$MULTILANG_OauthOpcionBoton}',1,NULL),(12,'visibilidad_oauth','0','{$MULTILANG_OauthOpcionDirecta}',2,NULL),(13,'motores_bd','mysql','MySQL - MariaDB (3.x/4.x/5.x)',1,NULL),(14,'motores_bd','pgsql','PostgreSQL',2,NULL),(15,'motores_bd','sqlite','SQLite v2 - SQLite v3',3,NULL),(16,'motores_bd','sqlsrv','FreeTDS/Microsoft SQL Server: Win32 [max version 2008]',4,NULL),(17,'motores_bd','mssql','FreeTDS/Microsoft SQL Server: Win32&Linux, [max version 2000]',5,NULL),(18,'motores_bd','ibm','IBM (DB2)',6,NULL),(19,'motores_bd','dblib','DBLIB',7,NULL),(20,'motores_bd','odbc','Microsoft Access (ODBC v3: IBM DB2, unixODBC, Win32 ODBC)',8,NULL),(21,'motores_bd','oracle','ORACLE (OCI Oracle Call Interface)',9,NULL),(22,'motores_bd','ifmx','Informix (IBM Informix Dynamic Server)',10,NULL),(23,'motores_bd','fbd','Firebird (Firebird/Interbase 6)',11,NULL),(24,'tipo_monitor','{$MULTILANG_Deshabilitado}','{$MULTILANG_Deshabilitado}',1,NULL),(25,'tipo_monitor','Etiqueta','{$MULTILANG_Etiqueta}',2,NULL),(26,'tipo_monitor','Maquina','{$MULTILANG_Maquina}',3,NULL),(27,'tipo_monitor','ComandoShell','{$MULTILANG_MonCommShell}',4,NULL),(28,'tipo_monitor','ComandoSQL','{$MULTILANG_MonCommSQL}',5,NULL),(29,'tipo_monitor','Imagen','{$MULTILANG_Imagen}',6,NULL),(30,'tipo_monitor','Embebido','{$MULTILANG_Embebido}',7,NULL),(31,'tipo_monitor','SensorRango','{$MULTILANG_MonSensorRango}',8,NULL),(32,'tipo_monitor','SensorMaquina','{$MULTILANG_MonSensorRango} ({$MULTILANG_Apariencia} {$MULTILANG_Maquina})',9,NULL),(33,'metodos_monitor','socket','Socket',1,NULL),(34,'metodos_monitor','ping','Ping',2,NULL),(35,'metodos_monitor','curl:1','cURL (HTTP 01 sec. Timeout)',3,NULL),(36,'metodos_monitor','curl:3','cURL (HTTP 03 sec. Timeout)',4,NULL),(37,'metodos_monitor','curl:5','cURL (HTTP 05 sec. Timeout)',5,NULL),(38,'metodos_monitor','curl:10','cURL (HTTP 10 sec. Timeout)',6,NULL),(39,'metodos_monitor','curl:15','cURL (HTTP 15 sec. Timeout)',7,NULL),(40,'metodos_monitor','curl:30','cURL (HTTP 30 sec. Timeout)',8,NULL),(41,'opciones_menu','opc','{$MULTILANG_Opcion}',1,NULL),(42,'opciones_menu','grp','{$MULTILANG_Agrupador}',2,NULL),(43,'destino_menu','_self','{$MULTILANG_MnuTgtSelf}',1,NULL),(44,'destino_menu','_blank','{$MULTILANG_MnuTgtBlank}',2,NULL),(45,'destino_menu','_parent','{$MULTILANG_MnuTgtParent}',3,NULL),(46,'destino_menu','_top','{$MULTILANG_MnuTgtTop}',4,NULL),(47,'comando_menu','Objeto','1. {$MULTILANG_MnuObjeto}',1,NULL),(48,'comando_menu','Interno','2. {$MULTILANG_MnuInterno}',2,NULL),(49,'comando_menu','Personal','3. {$MULTILANG_MnuPersonal}',3,NULL),(50,'motores_bd','---------------','-------------------------------------- NoSQL -------------------------------------',12,NULL),(51,'motores_bd','couchbase','CouchBase',13,NULL),(52,'modo_monitor','0','{$MULTILANG_No}',1,NULL),(53,'modo_monitor','1','{$MULTILANG_Si}',2,NULL),(54,'modo_monitor','2','Ultra',3,NULL),(55,'tipos_maquetacion','tradicional','{$MULTILANG_FrmTradicional}',1,NULL),(56,'tipos_maquetacion','responsive','Responsive',2,NULL),(57,'estilos_pestanas','nav-tabs','{$MULTILANG_FrmEstiloTabs}',1,NULL),(58,'estilos_pestanas','nav-pills','{$MULTILANG_FrmEstiloPills}',2,NULL),(59,'estilos_pestanas','','{$MULTILANG_FrmEstiloOculto}',3,NULL),(60,'tipos_planificacion','_OPTGROUP_|Planificacion simple / Simple schedule','',1,NULL),(61,'tipos_planificacion','@reboot','Al inicio del sistema / At system boot',2,NULL),(62,'tipos_planificacion','@annually','Una vez al ano / Once per year',3,NULL),(63,'tipos_planificacion','@monthly','Una vez al mes / Once per month',4,NULL),(64,'tipos_planificacion','@weekly','Una vez a la semana / Once per week',5,NULL),(65,'tipos_planificacion','@daily','Una vez al dia / Once per day',6,NULL),(66,'tipos_planificacion','@hourly','Una vez por hora / Once per hour',7,NULL),(67,'tipos_planificacion','_OPTGROUP_','',8,NULL),(68,'tipos_planificacion','_OPTGROUP_|Ejemplos de otras combinaciones / Other schedules examples','',9,NULL),(69,'tipos_planificacion','15 10 * * *','Diario a las 10:15 AM / Daily at 10:15 AM',10,NULL),(70,'tipos_planificacion','15 22 * * *','Diario a las 10:15 PM / Daily at 10:15 PM',11,NULL),(71,'tipos_planificacion','00 10 * * 0','Domingos a las 10:00 AM / Sundays at 10:00 AM',12,NULL),(72,'tipos_planificacion','30 7 20 11 *','Noviembre 20 a las 7:30 AM / November 20th 7:30AM',13,NULL),(73,'tipos_planificacion','01 * * * *','Cada minuto / Each minute',14,NULL),(74,'tipos_planificacion','_OPTGROUP_','',15,NULL),(75,'tipos_planificacion','_OPTGROUP_|Ejemplos de uso de rangos / Interval examples','',16,NULL),(76,'tipos_planificacion','30 17 * * 1,2,3,4,5','De lunes a viernes, 5:30 PM / Lun-Fri 5:30PM',17,NULL),(77,'tipos_planificacion','00 12 1,15 * *','Dias 1 y 15 a las 12M / Days 1 and 5 at 12M',18,NULL),(78,'tipos_planificacion','_OPTGROUP_','',19,NULL),(79,'vistas_informe','N','{$MULTILANG_No}',1,NULL),(80,'vistas_informe','E','{$MULTILANG_Si}, {$MULTILANG_Escritorio}',2,NULL),(81,'vistas_informe','B','{$MULTILANG_Si}, {$MULTILANG_InfBarraSuperior}',3,NULL),(82,'vistas_informe','A','{$MULTILANG_Si}, {$MULTILANG_Ambos}',4,NULL),(83,'dicotomico_habilitadodeshabilitado','1','{$MULTILANG_Habilitado}',1,NULL),(84,'dicotomico_habilitadodeshabilitado','0','{$MULTILANG_Deshabilitado}',2,NULL),(85,'dicotomico_deshabilitadohabilitado','0','{$MULTILANG_Deshabilitado}',1,NULL),(86,'dicotomico_deshabilitadohabilitado','1','{$MULTILANG_Habilitado}',2,NULL),(87,'tipos_filtrocolor','','Sin cambios - predeterminado (None - default)',1,NULL),(88,'tipos_filtrocolor','inverso','Inverso para modos dia y noche - (Inverted)',2,NULL),(89,'tipos_filtrocolor','grises','Escala de grises (Grayscale)',3,NULL),(90,'tipos_filtrocolor','sepia','Tonos Sepia (Sepia)',4,NULL),(91,'idiomas_plataforma','','{$MULTILANG_Predeterminado}',0,NULL),(92,'idiomas_plataforma','es','Espanol - Spanish (es.php)',1,NULL),(93,'idiomas_plataforma','en','Ingles - English (en.php)',2,NULL),(94,'idiomas_plataforma','hi','हिंदी - Hindi (by GoogleTranslato (hi.php)',3,NULL),(95,'idiomas_plataforma','fr','Frances - French (by GoogleTranslator) (fr.php)',4,NULL),(96,'idiomas_plataforma','pt','Português - Portuguese (by GoogleTranslator) (pt.php)',5,NULL),(97,'plantillas_kanban','','{$MULTILANG_Ninguno}',1,NULL),(98,'plantillas_kanban','{$MULTILANG_Historia1Des}','{$MULTILANG_Historia1}',2,NULL),(99,'plantillas_kanban','{$MULTILANG_Historia2Des}','{$MULTILANG_Historia2}',3,NULL),(100,'plantillas_kanban','{$MULTILANG_Historia3Des}','{$MULTILANG_Historia3}',4,NULL),(101,'estilos_kanban','','{$MULTILANG_Ninguno}',1,NULL),(102,'estilos_kanban','default ','{$MULTILANG_BtnEstiloPredeterminado} (gris)',1,NULL),(103,'estilos_kanban','primary ','{$MULTILANG_BtnEstiloPrimario} (azul oscuro)',1,NULL),(104,'estilos_kanban','success ','{$MULTILANG_BtnEstiloFinalizado} (verde)',1,NULL),(105,'estilos_kanban','info ','{$MULTILANG_BtnEstiloInformacion} (azul claro)',1,NULL),(106,'estilos_kanban','warning ','{$MULTILANG_BtnEstiloAdvertencia} (naranja)',1,NULL),(107,'estilos_kanban','danger ','{$MULTILANG_BtnEstiloPeligro} (rojo)',1,NULL),(108,'exportaciones_informe','N','{$MULTILANG_No}',1,NULL),(109,'exportaciones_informe_DEPRECATED','S','{$MULTILANG_Si}, Nativo personalizable',2,NULL),(110,'exportaciones_informe','C','{$MULTILANG_Si}, Crudo CSV',3,NULL),(111,'exportaciones_informe_DEPRECATED','A','{$MULTILANG_Si}, Ambos: Nativo y CSV',4,NULL),(112,'ubicaciones_panelesfiltro','N','{$MULTILANG_No}',1,NULL),(113,'ubicaciones_panelesfiltro','S','{$MULTILANG_Si}, Arriba de la tabla',2,NULL),(114,'ubicaciones_panelesfiltro','I','{$MULTILANG_Si}, Debajo de la tabla',4,NULL),(115,'tipos_controles','_OPTGROUP_|{$MULTILANG_FrmTipoTit1}','',2,''),(116,'tipos_controles','texto_corto','{$MULTILANG_FrmTipo1}',3,'data-icon=glyphicon-log-in'),(117,'tipos_controles','texto_clave','{$MULTILANG_FrmTipo10}',4,'data-icon=\'fa fa-eye-slash\''),(118,'tipos_controles','texto_largo','{$MULTILANG_FrmTipo2}',5,'data-icon=glyphicon-text-width'),(119,'tipos_controles','texto_formato','{$MULTILANG_FrmTipo3}',6,'data-icon=glyphicon-font'),(120,'tipos_controles','area_responsive','{$MULTILANG_FrmTipo17}',7,'data-icon=glyphicon-edit'),(121,'tipos_controles','lista_seleccion','{$MULTILANG_FrmTipo4}',8,'data-icon=glyphicon-indent-right'),(122,'tipos_controles','lista_radio','{$MULTILANG_FrmTipo5}',9,'data-icon=glyphicon-record'),(123,'tipos_controles','casilla_check','{$MULTILANG_FrmTipo18}',10,'data-icon=glyphicon-check'),(124,'tipos_controles','deslizador','{$MULTILANG_FrmTipo9}',11,'data-icon=glyphicon-resize-horizontal'),(125,'tipos_controles','campo_etiqueta','{$MULTILANG_FrmTipo11}',12,'data-icon=glyphicon-tags'),(126,'tipos_controles','_OPTGROUP_','',13,''),(127,'tipos_controles','_OPTGROUP_|{$MULTILANG_FrmTipoTit4}','',14,''),(128,'tipos_controles','archivo_adjunto','{$MULTILANG_FrmTipo12}',15,'data-icon=glyphicon-file'),(129,'tipos_controles','objeto_canvas','{$MULTILANG_FrmTipo13}',16,'data-icon=glyphicon-picture'),(130,'tipos_controles','objeto_camara','{$MULTILANG_FrmTipo14}',17,'data-icon=glyphicon-facetime-video'),(131,'tipos_controles','_OPTGROUP_','',18,''),(132,'tipos_controles','_OPTGROUP_|{$MULTILANG_FrmTipoTit2}','',19,''),(133,'tipos_controles','etiqueta','{$MULTILANG_FrmTipo6}',20,'data-icon=glyphicon-pencil'),(134,'tipos_controles','url_iframe','{$MULTILANG_FrmTipo7}',21,'data-icon=glyphicon-globe'),(135,'tipos_controles','_OPTGROUP_','',22,''),(136,'tipos_controles','_OPTGROUP_|{$MULTILANG_FrmTipoTit3}','',23,''),(137,'tipos_controles','informe','{$MULTILANG_FrmTipo8}',24,'data-icon=glyphicon-list-alt'),(138,'tipos_controles','form_consulta','{$MULTILANG_FrmTipo15}',25,'data-icon=glyphicon-search'),(139,'tipos_controles','boton_comando','{$MULTILANG_FrmTipo16}',26,'data-icon=glyphicon-flash'),(140,'tipos_controles','_OPTGROUP_','',27,''),(141,'tipos_validacion_datos','','{$MULTILANG_Ninguno}',1,NULL),(142,'tipos_validacion_datos','numerico','{$MULTILANG_FrmValida1}',2,NULL),(143,'tipos_validacion_datos','numerico_entero','{$MULTILANG_FrmValida9}',3,NULL),(144,'tipos_validacion_datos','alfabetico','{$MULTILANG_FrmValida2}',4,NULL),(145,'tipos_validacion_datos','alfanumerico','{$MULTILANG_FrmValida3}',5,NULL),(146,'tipos_validacion_datos','personalizado','{$MULTILANG_FrmValida10}',6,NULL),(147,'tipos_validacion_datos','_OPTGROUP_|{$MULTILANG_AplicaPara} {$MULTILANG_FrmTipo1}','',7,NULL),(148,'tipos_validacion_datos','fecha','{$MULTILANG_FrmValida4}',8,NULL),(149,'tipos_validacion_datos','fechaxanos','{$MULTILANG_FrmValida7}',9,NULL),(150,'tipos_validacion_datos','hora','{$MULTILANG_FrmValida5}',10,NULL),(151,'tipos_validacion_datos','fechahora','{$MULTILANG_FrmValida6}',11,NULL),(152,'tipos_validacion_datos','fechahorafull','{$MULTILANG_FrmValida8}',12,NULL),(153,'tipos_validacion_datos','_OPTGROUP_','',13,NULL),(154,'dicotomico_readonly_nosi','','{$MULTILANG_No}',1,NULL),(155,'dicotomico_readonly_nosi','READONLY','{$MULTILANG_Si}',2,NULL),(156,'formato_salida_etiquetas','','{$MULTILANG_MnuTexto}',1,NULL),(157,'formato_salida_etiquetas','_OPTGROUP_|{$MULTILANG_CodigoBarras}','',2,'data-icon=\'fa fa-barcode\''),(158,'formato_salida_etiquetas','std25','Standard 2 of 5 (industrial, Numerio Sin limite)',3,NULL),(159,'formato_salida_etiquetas','int25','Interleaved 2 of 5',4,NULL),(160,'formato_salida_etiquetas','ean8','EAN 8 (Numerico 7 caracteres)',5,NULL),(161,'formato_salida_etiquetas','ean13','EAN 13 (Numerico 12 caracteres)',6,NULL),(162,'formato_salida_etiquetas','upc','UPC',7,NULL),(163,'formato_salida_etiquetas','code11','Code 11',8,NULL),(164,'formato_salida_etiquetas','code39','Code 39',9,NULL),(165,'formato_salida_etiquetas','code93','Code 93',10,NULL),(166,'formato_salida_etiquetas','code128','Code 128',11,NULL),(167,'formato_salida_etiquetas','codabar','CodaBar',12,NULL),(168,'formato_salida_etiquetas','msi','MSI',13,NULL),(169,'formato_salida_etiquetas','_OPTGROUP_','',14,NULL),(170,'formato_salida_etiquetas','_OPTGROUP_|{$MULTILANG_Matriz}','',15,'data-icon=\'fa fa-qrcode\''),(171,'formato_salida_etiquetas','datamatrix','Datamatrix (ASCII+extended)',16,NULL),(172,'formato_salida_etiquetas','qrcode','QR-Code',17,NULL),(173,'formato_salida_etiquetas','_OPTGROUP_','',18,NULL),(174,'pesos_archivo_adjunto','50','50 KB',0,NULL),(175,'pesos_archivo_adjunto','100','100 KB',1,NULL),(176,'pesos_archivo_adjunto','150','150 KB',2,NULL),(177,'pesos_archivo_adjunto','250','250 KB',3,NULL),(178,'pesos_archivo_adjunto','500','500 KB',4,NULL),(179,'pesos_archivo_adjunto','750','750 KB',5,NULL),(180,'pesos_archivo_adjunto','1000','1 MB',6,NULL),(181,'pesos_archivo_adjunto','1500','1.5 MB',7,NULL),(182,'pesos_archivo_adjunto','2000','2 MB',8,NULL),(183,'pesos_archivo_adjunto','4000','4 MB',9,NULL),(184,'pesos_archivo_adjunto','8000','8 MB',10,NULL),(185,'pesos_archivo_adjunto','16000','16 MB',11,NULL),(186,'tipos_accion_botones','','{$MULTILANG_SeleccioneUno}',1,NULL),(187,'tipos_accion_botones','_OPTGROUP_|{$MULTILANG_FrmAccionT1}','',2,NULL),(188,'tipos_accion_botones','interna_guardar','{$MULTILANG_FrmAccionGuardar}',3,NULL),(189,'tipos_accion_botones','interna_actualizar','{$MULTILANG_FrmAccionActualizar}',4,NULL),(190,'tipos_accion_botones','interna_eliminar','{$MULTILANG_FrmAccionEliminar}',5,NULL),(191,'tipos_accion_botones','interna_escritorio','{$MULTILANG_FrmAccionRegresar}',6,NULL),(192,'tipos_accion_botones','interna_cargar','{$MULTILANG_FrmAccionCargar}',7,NULL),(193,'tipos_accion_botones','interna_limpiar','{$MULTILANG_FrmAccionLimpiar}',8,NULL),(194,'tipos_accion_botones','_OPTGROUP_','',9,NULL),(195,'tipos_accion_botones','_OPTGROUP_|{$MULTILANG_FrmAccionT2}','______',10,NULL),(196,'tipos_accion_botones','externa_formulario','{$MULTILANG_FrmAccionExterna}',11,NULL),(197,'tipos_accion_botones','externa_postcode','Ejecutar s&oacute;lo el c&oacute;digo POST del propio formulario',12,NULL),(198,'tipos_accion_botones','externa_javascript','{$MULTILANG_FrmAccionJS}',13,NULL),(199,'tipos_accion_botones','_OPTGROUP_','',14,NULL),(200,'tipos_barra_editores','_OPTGROUP_|{$MULTILANG_FrmBarraCKEditor}','',1,NULL),(201,'tipos_barra_editores','0','{$MULTILANG_FrmBarraTipo1}',2,NULL),(202,'tipos_barra_editores','1','{$MULTILANG_FrmBarraTipo2}',3,NULL),(203,'tipos_barra_editores','2','{$MULTILANG_FrmBarraTipo3}',4,NULL),(204,'tipos_barra_editores','3','{$MULTILANG_FrmBarraTipo4}',5,NULL),(205,'tipos_barra_editores','4','{$MULTILANG_FrmBarraTipo5}',6,NULL),(206,'tipos_barra_editores','_OPTGROUP_','',7,NULL),(207,'tipos_barra_editores','_OPTGROUP_|{$MULTILANG_FrmBarraSummer}','',8,NULL),(208,'tipos_barra_editores','5','{$MULTILANG_FrmBarraTipo1Summer}',9,NULL),(209,'tipos_barra_editores','6','{$MULTILANG_FrmBarraTipo2Summer}',10,NULL),(210,'tipos_barra_editores','7','{$MULTILANG_FrmBarraTipo3Summer}',11,NULL),(211,'tipos_barra_editores','8','{$MULTILANG_FrmBarraTipo4Summer}',12,NULL),(212,'tipos_barra_editores','9','{$MULTILANG_FrmBarraTipo5Summer}',13,NULL),(213,'tipos_barra_editores','_OPTGROUP_','',14,NULL),(214,'estilos_boton','','{$MULTILANG_Ninguno}',1,NULL),(215,'estilos_boton',' btn ','{$MULTILANG_BtnEstiloSimple}',2,NULL),(216,'estilos_boton',' btn btn-default ','{$MULTILANG_BtnEstiloPredeterminado}',3,NULL),(217,'estilos_boton',' btn btn-primary ','{$MULTILANG_BtnEstiloPrimario}',4,NULL),(218,'estilos_boton',' btn btn-success ','{$MULTILANG_BtnEstiloFinalizado}',5,NULL),(219,'estilos_boton',' btn btn-info ','{$MULTILANG_BtnEstiloInformacion}',6,NULL),(220,'estilos_boton',' btn btn-warning ','{$MULTILANG_BtnEstiloAdvertencia}',7,NULL),(221,'estilos_boton',' btn btn-danger ','{$MULTILANG_BtnEstiloPeligro}',8,NULL),(222,'tamanos_boton','','{$MULTILANG_Predeterminado}',1,NULL),(223,'tamanos_boton',' btn-xs ','{$MULTILANG_Pequeno}',1,NULL),(224,'tamanos_boton',' btn-sm ','{$MULTILANG_Mediano}',1,NULL),(225,'tamanos_boton',' btn-lg ','{$MULTILANG_Grande}',1,NULL),(226,'algoritmos_cifrado','plano','Texto plano/Plain text',1,NULL),(227,'algoritmos_cifrado','md5','MD5',2,NULL),(228,'algoritmos_cifrado','md4','MD4',3,NULL),(229,'algoritmos_cifrado','md2','MD2',4,NULL),(230,'algoritmos_cifrado','sha1','SHA 1',5,NULL),(231,'algoritmos_cifrado','sha256','SHA 256',6,NULL),(232,'algoritmos_cifrado','sha384','SHA 384',7,NULL),(233,'algoritmos_cifrado','sha512','SHA 512',8,NULL),(234,'algoritmos_cifrado','crc32','CRC 32',9,NULL),(235,'algoritmos_cifrado','crc32b','CRC 32B',10,NULL),(236,'algoritmos_cifrado','adler32','Adler 32',11,NULL),(237,'algoritmos_cifrado','gost','Gost',12,NULL),(238,'algoritmos_cifrado','whirlpool','Whirlpool',13,NULL),(239,'algoritmos_cifrado','snefru','Snefru',14,NULL),(240,'algoritmos_cifrado','ripemd128','Ripemd 128',15,NULL),(241,'algoritmos_cifrado','ripemd160','Ripemd 160',16,NULL),(242,'algoritmos_cifrado','ripemd256','Ripemd 256',17,NULL),(243,'algoritmos_cifrado','ripemd320','Ripemd 320',18,NULL),(244,'algoritmos_cifrado','tiger128,3','Tiger 128,3',19,NULL),(245,'algoritmos_cifrado','tiger128,4','Tiger 128,4',20,NULL),(246,'algoritmos_cifrado','tiger160,3','Tiger 160,3',21,NULL),(247,'algoritmos_cifrado','tiger160,4','Tiger 160,4',22,NULL),(248,'algoritmos_cifrado','tiger192,3','Tiger 192,3',23,NULL),(249,'algoritmos_cifrado','tiger192,4','Tiger 192,4',24,NULL),(250,'algoritmos_cifrado','haval128,3','Haval 128,3',25,NULL),(251,'algoritmos_cifrado','haval128,4','Haval 128,4',26,NULL),(252,'algoritmos_cifrado','haval128,5','Haval 128,5',27,NULL),(253,'algoritmos_cifrado','haval160,3','Haval 160,3',28,NULL),(254,'algoritmos_cifrado','haval160,4','Haval 160,4',29,NULL),(255,'algoritmos_cifrado','haval160,5','Haval 160,5',30,NULL),(256,'algoritmos_cifrado','haval192,3','Haval 192,3',31,NULL),(257,'algoritmos_cifrado','haval192,4','Haval 192,4',32,NULL),(258,'algoritmos_cifrado','haval192,5','Haval 192,5',33,NULL),(259,'algoritmos_cifrado','haval224,3','Haval 224,3',34,NULL),(260,'algoritmos_cifrado','haval224,4','Haval 224,4',35,NULL),(261,'algoritmos_cifrado','haval224,5','Haval 224,5',36,NULL),(262,'algoritmos_cifrado','haval256,3','Haval 256,3',37,NULL),(263,'algoritmos_cifrado','haval256,4','Haval 256,4',38,NULL),(264,'algoritmos_cifrado','haval256,5','Haval 256,5',39,NULL);

--
-- Table structure for table `core_parametros`
--

CREATE TABLE `core_parametros` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `nombre_empresa_largo` varchar(250) NOT NULL,
  `nombre_empresa_corto` varchar(50) NOT NULL,
  `nombre_aplicacion` varchar(100) NOT NULL,
  `version` varchar(20) DEFAULT '1.0',
  `fecha_lanzamiento` date DEFAULT NULL,
  `licencia` text DEFAULT NULL,
  `creditos` text DEFAULT NULL,
  `funciones_personalizadas` text DEFAULT NULL,
  `federado_servidor` varchar(255) DEFAULT '',
  `federado_usuario` varchar(255) DEFAULT '',
  `federado_clave` varchar(255) DEFAULT '',
  `federado_motor` varchar(255) DEFAULT '',
  `federado_basedatos` varchar(255) DEFAULT '',
  `federado_tabla` varchar(255) DEFAULT '',
  `federado_campousuario` varchar(255) DEFAULT '',
  `federado_campoclave` varchar(255) DEFAULT '',
  `federado_encripcion` varchar(255) DEFAULT '',
  `federado_puerto` varchar(255) DEFAULT '',
  `requiere_aceptar_licencia` int(1) DEFAULT 0,
  `api_openai` varchar(255) DEFAULT '',
  `url_openai` varchar(255) DEFAULT 'https://api.openai.com/v1',
  `usuarios_desarroladores` varchar(1024) DEFAULT 'admin',
  `usuarios_admin_kanban` varchar(1024) DEFAULT 'admin',
  `api_googleai` varchar(255) DEFAULT '',
  `url_googleai` varchar(255) DEFAULT 'https://',
  `facialrec_habilitar` char(1) DEFAULT 'N',
  `facialrec_nromuestras` int(10) DEFAULT 1,
  `facialrec_anchocam` int(10) DEFAULT 320,
  `facialrec_altocam` int(10) DEFAULT 240,
  `facialrec_tiempomuestreo` int(10) DEFAULT 3,
  `facialrec_precision` decimal(2,1) DEFAULT 0.5,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_parametros`
--

INSERT INTO `core_parametros` VALUES (1,'Autonorte','Autonorte','Orion','Orion 1.0','2024-03-13','Texto de su licencia','Texto asociado a los creditos de su aplicacion','VENTA_ingresarRealizarVenta, VENTA_agregarProducto, VENTA_agregarProductoCrearOC, VENTA_eliminarProducto, VENTA_imprimirFactura, VENTA_imprimirFactura, PRODUCTOS_getNombreProductoById, PRODUCTOS_getProductosByProveedor, COMPRAS_agregarProductoCompra, COMPRAS_eliminarProductoOC, COMPRAS_registrarEntrega, COMPRAS_getOCByEstado,EGRESO_eliminarEgreso,VENTA_consultarTotalVenta,VENTA_actualizarProductoVenta,PRODUCTOS_getProductById,VENTA_generarLiquidacionMecanicos,VENTAS_verLiquidacion,VENTAS_PreVisualizarLiquidacion, Ventas_eliminarProducto','','','','mysql','','','','','plano','',0,'','https://api.openai.com/v1','admin','admin','','https://','S',1,320,240,3,0.5);

--
-- Table structure for table `core_pcoder_bloqueos`
--

CREATE TABLE `core_pcoder_bloqueos` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `archivo` text DEFAULT NULL,
  `ultima_edicion` datetime DEFAULT NULL,
  `usuario` varchar(255) DEFAULT NULL,
  `abierto` int(1) DEFAULT NULL,
  `direccion_origen` varchar(255) DEFAULT NULL,
  `agente` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=508 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_pcoder_bloqueos`
--

INSERT INTO `core_pcoder_bloqueos` VALUES (502,'core_formulario[8].javascript','2025-02-15 17:17:00','rafael',1,'172.70.254.58','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36'),(500,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-14 16:44:00','rafael',1,'172.70.255.182','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36');

--
-- Table structure for table `core_pcoder_historial`
--

CREATE TABLE `core_pcoder_historial` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `archivo` text DEFAULT NULL,
  `fecha_edicion` datetime DEFAULT NULL,
  `usuario` varchar(255) DEFAULT NULL,
  `lineas` int(11) DEFAULT NULL,
  `caracteres` int(11) DEFAULT NULL,
  `contenido` mediumtext DEFAULT NULL,
  `tipo_origen` char(1) DEFAULT 'A',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1456 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Dumping data for table `core_pcoder_historial`
--

INSERT INTO `core_pcoder_historial` VALUES (1,'/var/www/html/company/Ventas/mod/app_productos/index.php','2022-04-25 17:00:00','rafael',6,71,'<?php\n\nif ($PCO_Accion == \"PRODUCTOS_getProductosByProveedor\")\n{\n    \n}','A'),(2,'/var/www/html/company/Ventas/mod/app_productos/index.php','2022-04-25 17:03:00','rafael',11,250,'<?php\n\nif ($PCO_Accion == \"PRODUCTOS_getProductosByProveedor\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion\n        FROM app_productos\n        WHERE id_proveedor = \'$idProveedor\'\n    \")->fetchColumn());\n    die();\n}','A'),(3,'/var/www/html/company/Ventas/mod/app_productos/index.php','2022-04-25 17:03:00','rafael',11,245,'<?php\n\nif ($PCO_Accion == \"PRODUCTOS_getProductosByProveedor\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion\n        FROM app_productos\n        WHERE id_proveedor = \'$idProveedor\'\n    \")->fetchAll());\n    die();\n}','A'),(4,'/var/www/html/company/Ventas/mod/app_productos/index.php','2022-04-25 17:15:00','rafael',11,262,'<?php\n\nif ($PCO_Accion == \"PRODUCTOS_getProductosByProveedor\")\n{\n    echo json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra\n        FROM app_productos\n        WHERE id_proveedor = \'$idProveedor\'\n    \")->fetchAll());\n    die();\n}','A'),(5,'/var/www/html/company/Ventas/mod/app_productos/index.php','2022-04-25 17:30:00','rafael',11,266,'<?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}','A'),(6,'/var/www/html/company/Ventas/mod/app_productos/index.php','2022-04-25 17:41:00','rafael',22,532,'<?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 == \"PRODUCTO_agregarProductoCompra\")\n{\n    json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch());\n    \n    echo PCO_CargarInforme(5);\n}','A'),(7,'/var/www/html/company/Ventas/mod/app_productos/index.php','2022-04-25 17:44:00','rafael',12,268,'<?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','A'),(8,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 17:46:00','rafael',16,487,'<?php\n\nif ($PCO_Accion == \"PRODUCTO_agregarProductoCompra\")\n{\n    json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch());\n    \n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_batallas_detalle (id_batalla, id_frente, id_gallo) VALUES (?,?,?)\",\n        \"$id_batalla$_SeparadorCampos_$frente1$_SeparadorCampos_\" . $batalla[\'id_gallo1\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(9,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 17:46:00','rafael',16,486,'<?php\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch());\n    \n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_batallas_detalle (id_batalla, id_frente, id_gallo) VALUES (?,?,?)\",\n        \"$id_batalla$_SeparadorCampos_$frente1$_SeparadorCampos_\" . $batalla[\'id_gallo1\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(10,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 17:47:00','rafael',16,486,'<?php\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    json_encode(PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch());\n    \n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_batallas_detalle (id_batalla, id_frente, id_gallo) VALUES (?,?,?)\",\n        \"$id_batalla$_SeparadorCampos_$frente1$_SeparadorCampos_\" . $batalla[\'id_gallo1\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(11,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 17:50:00','rafael',17,486,'<?php\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n    \n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_batallas_detalle (id_batalla, id_frente, id_gallo) VALUES (?,?,?)\",\n        \"$id_batalla$_SeparadorCampos_$frente1$_SeparadorCampos_\" . $batalla[\'id_gallo1\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(12,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 17:55:00','rafael',27,738,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    PCO_CargarFormulario(5, 1, $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n    \n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_batallas_detalle (id_batalla, id_frente, id_gallo) VALUES (?,?,?)\",\n        \"$id_batalla$_SeparadorCampos_$frente1$_SeparadorCampos_\" . $batalla[\'id_gallo1\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(13,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 17:59:00','rafael',28,757,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    echo $idCompra;\n    PCO_CargarFormulario(5, 1, $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n    \n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_batallas_detalle (id_batalla, id_frente, id_gallo) VALUES (?,?,?)\",\n        \"$id_batalla$_SeparadorCampos_$frente1$_SeparadorCampos_\" . $batalla[\'id_gallo1\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(14,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 18:00:00','rafael',27,738,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    PCO_CargarFormulario(5, 1, $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n    \n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_batallas_detalle (id_batalla, id_frente, id_gallo) VALUES (?,?,?)\",\n        \"$id_batalla$_SeparadorCampos_$frente1$_SeparadorCampos_\" . $batalla[\'id_gallo1\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(15,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 18:00:00','rafael',27,744,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    PCO_CargarFormulario(5, 1, \"id\", $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n    \n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_batallas_detalle (id_batalla, id_frente, id_gallo) VALUES (?,?,?)\",\n        \"$id_batalla$_SeparadorCampos_$frente1$_SeparadorCampos_\" . $batalla[\'id_gallo1\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(16,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:09:00','rafael',76,3337,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(\"-15\",0,\"\",\"\",1,0);\n?>','A'),(17,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:10:00','rafael',76,3337,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(\"-15\",0,\"\",\"\",1,1);\n?>','A'),(18,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:10:00','rafael',76,3337,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(\"-15\",0,\"\",\"\",1,1);\n?>','A'),(19,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:10:00','rafael',76,3337,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(\"-15\",1,\"\",\"\",1,1);\n?>','A'),(20,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:10:00','rafael',76,3335,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(\"5\",1,\"\",\"\",1,1);\n?>','A'),(21,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:11:00','rafael',76,3336,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(\"5\",1,\"id\",1,1,1);\n?>','A'),(22,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:12:00','rafael',76,3335,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(\"5\",1,\"id\",1,0,1);\n?>','A'),(23,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:15:00','rafael',76,3331,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(5,1,\"id\", 1);\n?>','A'),(24,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:16:00','rafael',76,3342,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(5,1,\"app_compras.id\", 1);\n?>','A'),(25,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:16:00','rafael',76,3343,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(5,1,\"app_compra.id\", 1);\n?>','A'),(26,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:17:00','rafael',76,3331,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(5,1,\"id\", 1);\n?>','A'),(27,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 18:57:00','rafael',76,3331,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\n?>','A'),(28,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 19:44:00','rafael',152,6716,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n$PCO_CampoBusquedaBD = \"id\";\n$PCO_ValorBusquedaBD = 1;\nPCO_CargarFormulario(5,1,\"id\", 1);\n?><?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(5,1,\"id\", 1);\n?>','A'),(29,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 19:45:00','rafael',152,6716,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n$PCO_CampoBusquedaBD = \"id\";\n$PCO_ValorBusquedaBD = 1;\n//PCO_CargarFormulario(5,1,\"id\", 1);\n?><?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\nPCO_CargarFormulario(5,1,\"id\", 1);\n?>','A'),(30,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 19:45:00','rafael',150,6680,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n$PCO_CampoBusquedaBD = \"id\";\n$PCO_ValorBusquedaBD = 1;\nPCO_CargarFormulario(5,1,\"id\", 1);\n?><?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n?>','A'),(31,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 19:51:00','rafael',152,6783,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\nglobal $PCO_PostAccionDirecta, $PCO_CampoBusquedaBD, $PCO_ValorBusquedaBD;\n$PCO_PostAccionDirecta = 1;\n$PCO_CampoBusquedaBD = \"id\";\n$PCO_ValorBusquedaBD = 1;\nPCO_CargarFormulario(5,1,\"id\", 1);\n?><?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n?>','A'),(32,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 19:51:00','rafael',79,3488,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\nglobal $PCO_PostAccionDirecta, $PCO_CampoBusquedaBD, $PCO_ValorBusquedaBD;\n$PCO_PostAccionDirecta = 1;\n$PCO_CampoBusquedaBD = \"id\";\n$PCO_ValorBusquedaBD = 1;\nPCO_CargarFormulario(5,1,\"id\", 1);\n?>','A'),(33,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 20:01:00','rafael',78,3380,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\n$PCO_PostAccionDirecta = 1;\n$PCO_PostAccion = 1;\nPCO_CargarFormulario(5,1,\"id\", 1);\n?>','A'),(34,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 20:01:00','rafael',78,3380,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\n$PCO_PostAccionDirecta = 1;\n$PCO_PostAccion = 1;\nPCO_CargarFormulario(5,1,\"id\", 1);\n?>','A'),(35,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 20:03:00','rafael',78,3385,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\n//$PCO_PostAccionDirecta = 1;\n//$PCO_PostAccion = 1;\n//PCO_CargarFormulario(5,1,\"id\", 1);\n?>','A'),(36,'/var/www/html/company/Ventas/mod/personalizadas_pos.php','2022-04-25 20:20:00','rafael',75,3296,'<?php\n	/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n	*/\n	\n			/*\n			Title: Funciones personalizadas\n			Ubicacion *[/personalizadas_pos.php]*.  Archivo que contiene la declaracion de variables y funciones por parte del usuario o administrador del sistema que deben ser cargadas justo antes de finalizar la aplicacion\n\n			Codigo de ejemplo:\n				(start code)\n					<?php if ($PCO_Accion==\"Mi_accion_XYZ\") \n						{\n							// Mis operaciones a realizar\n						}\n					?>\n				(end)\n\n			Comentario:\n			Agregue en este archivo las funciones o acciones que desee vincular a menues especificos o realizacion de operaciones internas.\n			Utilice el condicional para diferenciar la accion recibida y ser asi ejecutada. Puede vincularlos mediante forms.\n\n            Por favor considere la construccion de un nuevo modulo antes que implementar rutinas sobre este archivo\n            Please consider to build a new module before to deploy rutines in this file\n            \n            IMPORTANTE: Muchas de estas acciones podrían ser realizadas directamente sobre los scripts POST de formularios e informes\n                        ofreciendo un mayor encapsulamiento y portabilidad de las funcionalidades cuando se hagan despliegues a produccion.\n            */\n\nif ($PCO_Accion==\"Mi_AccionPoscarga_XYZ\") \n	{\n\n\n	}\n\n?>','A'),(37,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 23:41:00','rafael',26,798,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    PCO_CargarFormulario(5, 1, \"id\", $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    $producto = PCO_EjecutarSQL(\"\n        SELECT nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n    \n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_ordenes_compra_detalle (id_producto, cantidad, precio, iva) VALUES (?,?,?,?)\",\n        \"$idProducto$_SeparadorCampos_$cantidad$_SeparadorCampos_\" . $producto[\'precio_compra\'] . \"$_SeparadorCampos_\" . $producto[\'iva\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(38,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 23:43:00','rafael',26,841,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    PCO_CargarFormulario(5, 1, \"id\", $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    $producto = PCO_EjecutarSQL(\"\n        SELECT nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n    \n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_ordenes_compra_detalle (id_orden_compra,id_producto, cantidad, precio, iva) VALUES (?,?,?,?)\",\n        \"$idcompra$_SeparadorCampos_$idProducto$_SeparadorCampos_$cantidad$_SeparadorCampos_\" . $producto[\'precio_compra\'] . \"$_SeparadorCampos_\" . $producto[\'iva\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(39,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 23:44:00','rafael',26,837,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    PCO_CargarFormulario(5, 1, \"id\", $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    $producto = PCO_EjecutarSQL(\"\n        SELECT nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_ordenes_compra_detalle (id_orden_compra,id_producto, cantidad, precio, iva) VALUES (?,?,?,?)\",\n        \"$idcompra$_SeparadorCampos_$idProducto$_SeparadorCampos_$cantidad$_SeparadorCampos_\" . $producto[\'precio_compra\'] . \"$_SeparadorCampos_\" . $producto[\'iva\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(40,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 23:47:00','rafael',26,839,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    PCO_CargarFormulario(5, 1, \"id\", $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    $producto = PCO_EjecutarSQL(\"\n        SELECT nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_ordenes_compra_detalle (id_orden_compra,id_producto, cantidad, precio, iva) VALUES (?,?,?,?,?)\",\n        \"$idcompra$_SeparadorCampos_$idProducto$_SeparadorCampos_$cantidad$_SeparadorCampos_\" . $producto[\'precio_compra\'] . \"$_SeparadorCampos_\" . $producto[\'iva\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(41,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 23:47:00','rafael',26,839,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    PCO_CargarFormulario(5, 1, \"id\", $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    $producto = PCO_EjecutarSQL(\"\n        SELECT nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_ordenes_compra_detalle (id_orden_compra,id_producto, cantidad, precio, iva) VALUES (?,?,?,?,?)\",\n        \"$idcompra$_SeparadorCampos_$idProducto$_SeparadorCampos_$cantidad$_SeparadorCampos_\" . $producto[\'precio_compra\'] . \"$_SeparadorCampos_\" . $producto[\'iva\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(42,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 23:47:00','rafael',26,840,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    PCO_CargarFormulario(5, 1, \"id\", $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    $producto = PCO_EjecutarSQL(\"\n        SELECT nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_ordenes_compra_detalle (id_orden_compra, id_producto, cantidad, precio, iva) VALUES (?,?,?,?,?)\",\n        \"$idcompra$_SeparadorCampos_$idProducto$_SeparadorCampos_$cantidad$_SeparadorCampos_\" . $producto[\'precio_compra\'] . \"$_SeparadorCampos_\" . $producto[\'iva\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(43,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 23:48:00','rafael',26,851,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    PCO_CargarFormulario(5, 1, \"id\", $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    $producto = PCO_EjecutarSQL(\"\n        SELECT nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_ordenes_compra_detalle (id_orden_compra, id_producto, cantidad, precio, porcentaje_iva) VALUES (?,?,?,?,?)\",\n        \"$idcompra$_SeparadorCampos_$idProducto$_SeparadorCampos_$cantidad$_SeparadorCampos_\" . $producto[\'precio_compra\'] . \"$_SeparadorCampos_\" . $producto[\'iva\']\n    );\n    echo PCO_CargarInforme(5);\n}','A'),(44,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 23:50:00','rafael',27,863,'<?php\n\nif ($PCO_Accion == \"COMPRAS_CrearOC\")\n{\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_compra (id_proveedor) VALUES (?)\",\n        \"$id_proveedor\"\n    );\n    $idCompra = PCO_ObtenerUltimoIDInsertado();\n    PCO_CargarFormulario(5, 1, \"id\", $idCompra);\n}\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    $producto = PCO_EjecutarSQL(\"\n        SELECT nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_ordenes_compra_detalle (id_orden_compra, id_producto, cantidad, precio, porcentaje_iva) VALUES (?,?,?,?,?)\",\n        \"$id_orden_compra$_SeparadorCampos_$idProducto$_SeparadorCampos_$cantidad$_SeparadorCampos_\" . $producto[\'precio_compra\'] . \"$_SeparadorCampos_\" . $producto[\'iva\']\n    );\n    \n    echo PCO_CargarInforme(5);\n}','A'),(45,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 23:50:00','rafael',17,605,'<?php\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    $producto = PCO_EjecutarSQL(\"\n        SELECT nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_ordenes_compra_detalle (id_orden_compra, id_producto, cantidad, precio, porcentaje_iva) VALUES (?,?,?,?,?)\",\n        \"$id_orden_compra$_SeparadorCampos_$idProducto$_SeparadorCampos_$cantidad$_SeparadorCampos_\" . $producto[\'precio_compra\'] . \"$_SeparadorCampos_\" . $producto[\'iva\']\n    );\n    \n    echo PCO_CargarInforme(5);\n}','A'),(46,'/var/www/html/company/Ventas/mod/app_compra/index.php','2022-04-25 23:56:00','rafael',17,607,'<?php\n\nif ($PCO_Accion == \"COMPRAS_agregarProductoCompra\")\n{\n    $producto = PCO_EjecutarSQL(\"\n        SELECT nombre, descripcion, precio_compra, iva\n        FROM app_productos\n        WHERE id = \'$idProducto\'\n    \")->fetch();\n\n    PCO_EjecutarSQLUnaria(\n        \"INSERT INTO app_ordenes_compra_detalle (id_orden_compra, id_producto, cantidad, precio, porcentaje_iva) VALUES (?,?,?,?,?)\",\n        \"$id_orden_compra$_SeparadorCampos_$idProducto$_SeparadorCampos_$cantidad$_SeparadorCampos_\" . $producto[\'precio_compra\'] . \"$_SeparadorCampos_\" . $producto[\'iva\']\n    );\n    \n    echo PCO_CargarInforme(5, 0);\n}','A'),(47,'/var/www/html/company/Ventas/core/comunes.php','2022-04-25 23:56:00','rafael',9762,539265,'<?php\n/*\n	 _\n	|_) _ _  _ _|_. _ _					  	Copyright (C) 2012-2022\n	|  | (_|(_  | |(_(_) 				  	John F. Arroyave Gutiérrez\n	  www.practico.org					  	unix4you2@gmail.com\n                                            All rights reserved.\n    \n	 This program is free software: you can redistribute it and/or modify\n	 it under the terms of the GNU General Public License as published by\n	 the Free Software Foundation, either version 3 of the License, or\n	 (at your option) any later version.\n\n	 This program is distributed in the hope that it will be useful,\n	 but WITHOUT ANY WARRANTY; without even the implied warranty of\n	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n	 GNU General Public License for more details.\n\n	 You should have received a copy of the GNU General Public License\n	 along with this program.  If not, see <http://www.gnu.org/licenses/>\n	 \n	            --- TRADUCCION NO OFICIAL DE LA LICENCIA ---\n\n     Esta es una traducción no oficial de la Licencia Pública General de\n     GNU al español. No ha sido publicada por la Free Software Foundation\n     y no establece los términos jurídicos de distribución del software \n     publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés\n     lo hace. De todos modos, esperamos que esta traducción ayude a los\n     hispanohablantes a comprender mejor la GPL de GNU:\n	 \n     Este programa es software libre: puede redistribuirlo y/o modificarlo\n     bajo los términos de la Licencia General Pública de GNU publicada por\n     la Free Software Foundation, ya sea la versión 3 de la Licencia, o \n     (a su elección) cualquier versión posterior.\n\n     Este programa se distribuye con la esperanza de que sea útil pero SIN\n     NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD\n     o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General\n     Pública de GNU para más detalles.\n\n     Usted ha debido de recibir una copia de la Licencia General Pública de\n     GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>\n*/\n\n	/*\n		Title: Libreria base\n		Ubicacion *[/core/comunes.php]*.  Archivo que contiene las funciones de uso global.\n	*/\n	/*\n		Section: Funciones asociadas a las operaciones con bases de datos - Ejecucion de consultas\n	*/\n\n\n\n########################################################################\n########################################################################\n/*\n    Function: PCO_EjecutarCodigoPOST\n	Evalua directamente el codigo asociado a la seccion POST de un formulario.  Esto permite llamados especificos a funciones encapsuladas que pueda contener un formulario asociado a su logica de negocio\n\n	Variables de entrada:\n	\n		Formulario - Id unico del formulario del cual se desea evaluar el codigo POST\n		Llave - Llave de paso que deberia coincidir con la llave del sistema para poder realizar la operacion\n        ByPassDie - Determina si se debe o no evitar un llamado a la funcion die() de PHP.  Por defecto SIEMPRE se hace el llamado.  Asigne un valor diferente de cero (ej. 1) para evitarlo.\n		Otros - Variables que puedan indicar la accion a realizar, los parametros requeridos o cualquier otro control de seguridad o verificacion requerida por el usuario\n\n	Salida:\n		Evaluacion y ejecucion del codigo\n\n	Vea tambien:\n	    <PCO_EjecutarPostFormulario>\n*/\nfunction PCO_EjecutarCodigoPOST($Formulario,$Llave,$ByPassDie=0)\n    {\n        global $LlaveDePaso,$TablasCore;\n		if ($LlaveDePaso==$Llave && $Formulario!=\"\")\n		    {\n    			// Busca el registro del formulario\n    			$RegistroFormulario=PCO_EjecutarSQL(\"SELECT id,post_script,titulo FROM \".$TablasCore.\"formulario WHERE id=? \",\"$Formulario\")->fetch();\n    			//Si encuentra codigo lo ejecuta\n                if ($RegistroFormulario[\"id\"]!=\"\")\n                    {\n                        PCO_EvaluarCodigo($RegistroFormulario[\"post_script\"]);\n                        //Lleva auditoria de la ejecucion\n                        PCO_Auditar(\"Ejecucion post-accion formulario (Id={$Formulario}) \".PCO_ReemplazarVariablesPHPEnCadena($RegistroFormulario[\"titulo\"]),\"API.Practico\");\n                    }\n		    }\n		if ($ByPassDie==0)\n            die(); //Finaliza ejecucion despues de cualquier evaluacion\n    }\n\n\n########################################################################\n########################################################################\n/*\n    Function: PCO_Minimizador_ObtenerSiguientePosicionMinimizacion\n	Dado el arrglo de secuencias minimizadas, busca la siguiente posicion de secuencia que se debe revisar\n\n	Salida:\n		Posicion objetivo\n\n	Vea tambien:\n	    <PCO_Minimizador_OptimizarJS> <PCO_Minimizador_OptimizarCSS>\n*/\n$ArregloSecuenciasMinimizadas = array();\nfunction PCO_Minimizador_ObtenerSiguientePosicionMinimizacion()\n    {\n        global $ArregloSecuenciasMinimizadas;\n        return \'<-!!-\' . sizeof($ArregloSecuenciasMinimizadas) . \'-!!->\';\n    }\n\n\nabstract class PCO_Minimizador_BuscadorSecuenciasMinimizacion\n    {\n        public $IndiceInicial;\n        public $IndiceFinal;\n        public $Tipo;\n        abstract protected function ObtenerPrimerValor($Cadena);\n        \n        public function isValid()\n            {\n                return $this->IndiceInicial !== false;\n            }\n    }\n\n\nclass BuscadorSecuenciasCadenas extends PCO_Minimizador_BuscadorSecuenciasMinimizacion\n    {\n        protected $DelimitadorInicial;\n        protected $DelimitadorFinal;\n        \n        function __construct($DelimitadorInicial, $DelimitadorFinal)\n            {\n                $this->type = $DelimitadorInicial;\n                $this->start_delimiter = $DelimitadorInicial;\n                $this->end_delimiter = $DelimitadorFinal;\n            }\n            \n        public function ObtenerPrimerValor($Cadena)\n            {\n                $this->IndiceInicial = strpos($Cadena, $this->start_delimiter);\n                if ($this->isValid())\n                    {\n                        $this->IndiceFinal = strpos($Cadena, $this->end_delimiter, $this->IndiceInicial+1);\n                        // sanity check for non well formed lines\n                        $this->IndiceFinal = ($this->IndiceFinal === false ? strlen($Cadena) :\n                        $this->IndiceFinal + strlen($this->end_delimiter));\n                    }\n            }\n    }\n\n\nclass PCO_Minimizador_BuscadorSecuenciasCadenas extends PCO_Minimizador_BuscadorSecuenciasMinimizacion\n    {\n        function __construct($Tipo)\n            {\n                $this->type = $Tipo;\n            }\n            \n        public function ObtenerPrimerValor($Cadena)\n            {\n                $this->IndiceInicial = strpos($Cadena, $this->type);\n                if ($this->isValid())\n                    {\n                        // busque la primera comilla final que no haya escapado\n                        $this->IndiceFinal = $this->IndiceInicial+1;\n                        while ($this->IndiceFinal < strlen($Cadena))\n                            {\n                                // encontrar el número de escapes antes de la comilla final\n                                if (preg_match(\'/(\\\\\\\\*)(\' . preg_quote($this->type) . \')/\', $Cadena, $ArregloEncontrados, PREG_OFFSET_CAPTURE, $this->IndiceFinal))\n                                    {\n                                        $this->IndiceFinal = $ArregloEncontrados[2][1] + 1;\n                                        // si un número impar de escapes antes de comilla, la comilla se escapa. Sigue adelante\n                                        if (!isset($ArregloEncontrados[1][0]) || strlen($ArregloEncontrados[1][0]) % 2 == 0)\n                                            {\n                                                return;\n                                            }\n                                    }\n                                else\n                                    {\n                                        // no match, not well formed\n                                        $this->IndiceFinal = strlen($Cadena);\n                                        return;\n                                    }\n                            }\n                    }\n            }\n    }\n\n\nfunction PCO_Minimizador_ObtenerSiguienteSecuenciaEspecial($Cadena, $Secuencias)\n    {\n        // $ArregloIndices es una matriz del índice más cercano para todos los caracteres especiales\n        $ArregloIndices = array();\n        foreach ($Secuencias as $Buscador)\n            {\n                $Buscador->ObtenerPrimerValor($Cadena);\n                if ($Buscador->isValid())\n                    {\n                        $ArregloIndices[$Buscador->IndiceInicial] = $Buscador;\n                    }\n            }\n        // Si no encuentra ninguno retorna\n        if (count($ArregloIndices) == 0) {return false;}\n        // Otiene el primer item que coincida\n        asort($ArregloIndices);\n        return $ArregloIndices[min(array_keys($ArregloIndices))];\n    }\n\n\nclass PCO_Minimizador_BuscadorSecuenciasExpRegularesJS extends PCO_Minimizador_BuscadorSecuenciasMinimizacion\n    {\n        function __construct()\n            {\n                $this->type = \'regex\';\n            }\n        \n        // verifica que este no sea el comienzo de un comentario o una división\n        public function BuscarPosibleInicio($Cadena, $Indice = 0)\n            {\n                $IndiceInicial = strpos($Cadena, \'/\', $Indice);\n                if ($IndiceInicial === false)\n                    {\n                        return false;\n                    }\n                if (substr($Cadena, $IndiceInicial, 2) === \'//\' || substr($Cadena, $IndiceInicial, 2) === \'/*\')\n                    {\n                        // comentario encontrado, no patrón, no se moleste en continuar\n                        return false;\n                    }\n                $IndiceTemporal = $IndiceInicial - 1;\n                // obtener el primer carácter anterior no espacial\n                while ($IndiceTemporal > 0 && substr($Cadena, $IndiceTemporal, 1) == \' \') {$IndiceTemporal--;}\n                if ($IndiceTemporal > 0)\n                    {\n                        $Caracter = substr($Cadena, $IndiceTemporal, 1);\n                        // si el carácter o el número es una división, ve más lejos\n                        if (is_numeric($Caracter) || ctype_alpha($Caracter) || $Caracter == \')\' || $Caracter == \']\')\n                            {\n                                return $this->BuscarPosibleInicio($Cadena, $IndiceInicial + 1);\n                            }\n                    }\n                return $IndiceInicial;\n            }\n            \n        public function ObtenerPrimerValor($Cadena)\n            {\n                $this->IndiceInicial = $this->BuscarPosibleInicio($Cadena);\n                if ($this->IndiceInicial === false)\n                    {\n                        return;\n                    }\n                // position of first newline after pattern\n                $NuevaLinea = strpos($Cadena, \"\\n\", $this->IndiceInicial);\n                // look for first non escaped endquote\n                $IndiceFinal = $this->IndiceInicial+1;\n                while ($IndiceFinal < strlen($Cadena)\n                // if there\'s still room to explore in the string\n                && ($NuevaLinea === false || $IndiceFinal < $NuevaLinea)) // and we\'re not at a newline yet\n                    {\n                        // find number of escapes before endquote\n                        if (preg_match(\'/(\\\\\\\\*)(\\/)/\', $Cadena, $ArregloEncontrados, PREG_OFFSET_CAPTURE, $IndiceFinal))\n                                {\n                                    $IndiceFinal = $ArregloEncontrados[2][1] + 1;\n                                    // if odd number of escapes before endquote, endquote is escaped. Keep going\n                                    if (!isset($ArregloEncontrados[1][0]) || strlen($ArregloEncontrados[1][0]) % 2 == 0)\n                                        {\n                                            if ($NuevaLinea !== false && $IndiceFinal > $NuevaLinea) {return false;}\n                                            $this->IndiceFinal = $IndiceFinal;\n                                            return;\n                                        }\n                                    // no coincide o no esta bien formado el codigo\n                                }\n                            else\n                                {\n                                    $this->IndiceInicial = false;\n                                    return;\n                                }\n                    }\n            }\n    }\n\n\n########################################################################\n########################################################################\n/*\n    Function: PCO_Minimizador_OptimizarCSS\n	Toma un codigo CSS y lo miniminiza antes de ser publicado en produccion ayudando a disminuir tiempos de transferencia\n\n	Salida:\n		Codigo CSS equivalente pero minimizado\n\n	Vea tambien:\n		<PCO_CargarFormulario> <PCO_Minimizador_OptimizarJS>\n*/\n$BuscadorSecuenciasComillaSimple = new PCO_Minimizador_BuscadorSecuenciasCadenas(\'\\\'\');\n$BuscadorSecuenciasComillaDoble = new PCO_Minimizador_BuscadorSecuenciasCadenas(\'\"\');\n$BuscadorComentariosDeBloque = new BuscadorSecuenciasCadenas(\'/*\', \'*/\');\nfunction PCO_Minimizador_OptimizarCSS($CodigoCSS)\n    {\n        global $ArregloSecuenciasMinimizadas, $BuscadorSecuenciasComillaSimple, $BuscadorSecuenciasComillaDoble, $BuscadorComentariosDeBloque;\n        $CaracteresEspecialesCSS = array($BuscadorComentariosDeBloque, // Comentario CSS\n            $BuscadorSecuenciasComillaSimple, // Comilla simple de escape, ej :before{ content: \'-\';}\n            $BuscadorSecuenciasComillaDoble); // Comilla doble\n        // Elimina todo lo que haya que ser eliminado y conserva el resto\n        while ($Secuencia = PCO_Minimizador_ObtenerSiguienteSecuenciaEspecial($CodigoCSS, $CaracteresEspecialesCSS))\n            {\n                switch ($Secuencia->type)\n                    {\n                        case \'/*\': // Elimina comentarios\n                            $CodigoCSS = substr($CodigoCSS, 0, $Secuencia->IndiceInicial) . substr($CodigoCSS, $Secuencia->IndiceFinal);\n                            break;\n                        default: // Cadenas que deben ser conservadas\n                            $Posicion = PCO_Minimizador_ObtenerSiguientePosicionMinimizacion();\n                            $ArregloSecuenciasMinimizadas[$Posicion] = substr($CodigoCSS, $Secuencia->IndiceInicial, $Secuencia->IndiceFinal - $Secuencia->IndiceInicial);\n                            $CodigoCSS = substr($CodigoCSS, 0, $Secuencia->IndiceInicial) . $Posicion . substr($CodigoCSS, $Secuencia->IndiceFinal);\n                    }\n            }\n        // minimiza la cadena\n        $CodigoCSS = preg_replace(\'/\\s{2,}/s\', \' \', $CodigoCSS);\n        $CodigoCSS = preg_replace(\'/\\s*([:;{}])\\s*/\', \'$1\', $CodigoCSS);\n        $CodigoCSS = preg_replace(\'/;}/\', \'}\', $CodigoCSS);\n        // devuelve las cadenas que se deben conservar\n        foreach($ArregloSecuenciasMinimizadas as $Posicion => $Original)\n            {\n                $CodigoCSS = str_replace($Posicion, $Original, $CodigoCSS);\n            }\n        return trim($CodigoCSS);\n    }\n\n\n########################################################################\n########################################################################\n/*\n    Function: PCO_Minimizador_OptimizarJS\n	Toma un codigo JS y lo miniminiza antes de ser publicado en produccion ayudando a disminuir tiempos de transferencia y ocultando en parte alguna logica de negocio\n\n	Salida:\n		Codigo JS equivalente pero minimizado\n\n	Vea tambien:\n		<PCO_CargarFormulario> <PCO_Minimizador_OptimizarCSS>\n*/\n$BuscadorLineasComentarios = new BuscadorSecuenciasCadenas(\'//\', \"\\n\");\nfunction PCO_Minimizador_OptimizarJS($CodigoJS)\n    {\n        global $ArregloSecuenciasMinimizadas, $BuscadorSecuenciasComillaSimple, $BuscadorSecuenciasComillaDoble,\n        $BuscadorComentariosDeBloque, $BuscadorLineasComentarios;\n        $CaracteresEspecialesJava = array($BuscadorComentariosDeBloque, // Comentario de bloques JavaScript\n                $BuscadorLineasComentarios, // Comentario de lineas JavaScript\n                $BuscadorSecuenciasComillaSimple, // Comilla simple, ej :before{ content: \'-\';}\n                $BuscadorSecuenciasComillaDoble, // Comilla doble\n                new PCO_Minimizador_BuscadorSecuenciasExpRegularesJS() // Expresion regular JavaScript\n            );\n        // Elimina todo lo que haya que ser eliminado y conserva el resto\n        while ($Secuencia = PCO_Minimizador_ObtenerSiguienteSecuenciaEspecial($CodigoJS, $CaracteresEspecialesJava))\n            {\n                switch ($Secuencia->type)\n                    {\n                        case \'/*\':\n                        case \'//\':// Elimina comentarios\n                            $CodigoJS = substr($CodigoJS, 0, $Secuencia->IndiceInicial) . substr($CodigoJS, $Secuencia->IndiceFinal);\n                            break;\n                        default: // Cadenas con comillas o expresiones regulares que deben ser conservadas\n                            $IndiceInicial = $Secuencia->IndiceInicial;\n                            $IndiceFinal = $Secuencia->IndiceFinal;\n                            $Posicion = PCO_Minimizador_ObtenerSiguientePosicionMinimizacion();\n                            $ArregloSecuenciasMinimizadas[$Posicion] =substr($CodigoJS, $IndiceInicial, $IndiceFinal - $IndiceInicial);\n                            $CodigoJS = substr($CodigoJS, 0, $IndiceInicial) . $Posicion . substr($CodigoJS, $IndiceFinal);\n                    }\n            }\n        // Caso especial donde el + indica tratar la variable como numérica, p. ej. a = b + + c\n        $CodigoJS = preg_replace(\'/([-\\+])\\s+\\+([^\\s;]*)/\', \'$1 (+$2)\', $CodigoJS);\n        // Condensar (unir) espacios\n        $CodigoJS = preg_replace(\"/\\s*\\n\\s*/\", \"\\n\", $CodigoJS);\n        // Espacios alrededor de nuevas lineas\n        $CodigoJS = preg_replace(\"/\\h+/\", \" \", $CodigoJS); // \\h+ horizontal white space\n        // Remueve espacios horizontales innecesarios cerca a no variables (alfanumericos, underscore, signo pesos)\n        $CodigoJS = preg_replace(\"/\\h([^A-Za-z0-9\\_\\$])/\", \'$1\', $CodigoJS);\n        $CodigoJS = preg_replace(\"/([^A-Za-z0-9\\_\\$])\\h/\", \'$1\', $CodigoJS);\n        // Eliminar los espacios innecesarios entre corchetes y paréntesis\n        $CodigoJS = preg_replace(\"/\\s?([\\(\\[{])\\s?/\", \'$1\', $CodigoJS);\n        $CodigoJS = preg_replace(\"/\\s([\\)\\]}])/\", \'$1\', $CodigoJS);\n        // Eliminar espacios innecesarios alrededor de los operadores que no necesitan ningún espacio (específicamente nuevas líneas)\n        $CodigoJS = preg_replace(\"/\\s?([\\.=:\\-+,])\\s?/\", \'$1\', $CodigoJS);\n        // Caracteres innecesarios\n        $CodigoJS = preg_replace(\"/;\\n/\", \";\", $CodigoJS); // punto y coma antes de una nueva linea\n        $CodigoJS = preg_replace(\'/;}/\', \'}\', $CodigoJS); // punto y coma antes del corchete final\n        // Volver a poner las cadenas conservadas\n        foreach($ArregloSecuenciasMinimizadas as $Posicion => $Original)\n            {\n                $CodigoJS = str_replace($Posicion, $Original, $CodigoJS);\n            }\n        return trim($CodigoJS);\n    }\n\n\n/* ################################################################## */\n/* ################################################################## */\n/*\n	Function: PCO_SAML_CrearUsuario\n	Agrega usuarios de manera automatica cuando son autenticados por SAML\n*/\n	function PCO_SAML_CrearUsuario($login_chk=\'\',$nombre_chk=\'\',$correo_chk=\'\',$interno_chk=0,$plantilla_permisos_chk=\'\')\n		{\n			global $TablasCore,$LlaveDePaso,$PCO_FechaOperacion,$ListaCamposSinID_usuario;\n			// Inserta datos del usuario\n			$clavemd5=MD5(PCO_TextoAleatorio(20));\n			$pasomd5=MD5($LlaveDePaso);\n			$descripcion=\"Auth:SAML\";\n			//Agrega el registro de usuario si aun no existe\n			if (!PCO_ExisteValor($TablasCore.\"usuario\",\"login\",$login_chk))\n				{\n					@PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"usuario (login,clave,nombre,estado,correo,ultimo_acceso,llave_paso,usuario_interno,plantilla_permisos,descripcion) VALUES (\'$login_chk\',\'$clavemd5\',\'$nombre_chk\',1,\'$correo_chk\',\'$PCO_FechaOperacion\',\'$pasomd5\',\'$interno_chk\',\'$plantilla_permisos_chk\',\'$descripcion\')\");\n					PCO_Auditar(\"OAuth:Agregado usuario $login_chk para SAML\");\n				}\n		}\n\n\n/* ################################################################## */\n/* ################################################################## */\n/*\n	Function: PCO_SAML_EjecutarLogin\n	Recibe los parametros necesarios para hacer el registro de un usuario en la plataforma durante su ingreso cuando se usa oauth\n	\n	Variables de entrada:\n\n		accion - Accion a ser ejectudada, de la que se desea buscar permiso heredado por otra\n\n	Salida:\n		Variables de sesion registradas\n		Redireccion del usuario al menu\n*/\n	function PCO_SAML_EjecutarLogin($login_chk)\n		{\n			global $TablasCore,$uid,$ListaCamposSinID_usuario,$ListaCamposSinID_parametros,$ListaCamposSinID_parametros,$ListaCamposSinID_auditoria,$PCO_DireccionAuditoria,$PCO_HoraOperacion,$PCO_FechaOperacion,$ArchivoCORE;\n			$nombre_chk=$login_chk;\n			$correo_chk=\"\";\n            $plantilla_origen_permisos=PCO_EjecutarSQL(\"SELECT usuario_plantilla FROM core_samlconector WHERE activado=\'S\' ORDER BY nombre_conector LIMIT 0,1 \")->fetchColumn();\n\n			// Busca datos del usuario Practico, segun tipo de servicio OAuth para tener configuraciones de permisos y parametros propios de la herramienta\n			$consulta_busqueda_usuario_oauth=\"SELECT $ListaCamposSinID_usuario FROM \".$TablasCore.\"usuario WHERE login=\'$login_chk\' AND descripcion LIKE \'%Auth:$OAuth_servicio%\' \";\n			$registro=PCO_EjecutarSQL($consulta_busqueda_usuario_oauth)->fetch();\n\n			// Agrega el usuario cuando es primer login desde el servicio\n			if ($registro[\"login\"]==\"\")\n				{\n					PCO_SAML_CrearUsuario($login_chk,$nombre_chk,$correo_chk,1,$plantilla_origen_permisos);\n					// Actualiza el registro desde nueva consulta\n					$registro=PCO_EjecutarSQL($consulta_busqueda_usuario_oauth)->fetch();\n				}\n\n			//Copia permisos de la plantilla si aplica\n			if ($registro[\"plantilla_permisos\"]!=\"\")\n				{\n					PCO_Auditar(\"Carga permisos a su perfil desde plantilla \".$registro[\"plantilla_permisos\"],$login_chk);\n					PCO_CopiarPermisos($registro[\"plantilla_permisos\"],$login_chk);\n					PCO_CopiarInformes($registro[\"plantilla_permisos\"],$login_chk);\n				}\n\n			// Se buscan datos de la aplicacion\n			$consulta_parametros=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_parametros.\" FROM \".$TablasCore.\"parametros\");\n			$registro_parametros = $consulta_parametros->fetch();\n\n			// Actualiza las variables de sesion con el registro\n			$PCOSESS_SesionAbierta=1;\n			// Actualiza booleana de ingreso\n			$clave_correcta=1;\n			// Registro de variables en la sesion\n			@session_start();\n			if (!isset($_SESSION[\"PCOSESS_LoginUsuario\"])) $_SESSION[\"PCOSESS_LoginUsuario\"]=(string)$registro[\"login\"];\n			if (!isset($_SESSION[\"username\"])) $_SESSION[\"username\"]=(string)$registro[\"login\"]; //Usada para el modulo de chat\n			if (!isset($_SESSION[\"Nombre_usuario\"])) $_SESSION[\"Nombre_usuario\"]=(string)$registro[\"nombre\"];\n			if (!isset($_SESSION[\"Descripcion_usuario\"])) $_SESSION[\"Descripcion_usuario\"]=(string)$registro[\"descripcion\"];\n			if (!isset($_SESSION[\"Nivel_usuario\"])) $_SESSION[\"Nivel_usuario\"]=(string)$registro[\"nivel\"];\n			if (!isset($_SESSION[\"Correo_usuario\"])) $_SESSION[\"Correo_usuario\"]=(string)$registro[\"correo\"];\n			if (!isset($_SESSION[\"Clave_usuario\"])) $_SESSION[\"Clave_usuario\"]=$registro[\"clave\"];\n			if (!isset($_SESSION[\"LlaveDePasoUsuario\"])) $_SESSION[\"LlaveDePasoUsuario\"]=$registro[\"llave_paso\"];\n			if (!isset($_SESSION[\"PCOSESS_SesionAbierta\"])) $_SESSION[\"PCOSESS_SesionAbierta\"]=$PCOSESS_SesionAbierta;\n			if (!isset($_SESSION[\"clave_correcta\"])) $_SESSION[\"clave_correcta\"]=$clave_correcta;\n			if (!isset($_SESSION[\"Nombre_Empresa_Corto\"])) $_SESSION[\"Nombre_Empresa_Corto\"]=$registro_parametros[\"nombre_empresa_corto\"];\n			if (!isset($_SESSION[\"Nombre_Aplicacion\"])) $_SESSION[\"Nombre_Aplicacion\"]=$registro_parametros[\"nombre_aplicacion\"];\n			if (!isset($_SESSION[\"Version_Aplicacion\"])) $_SESSION[\"Version_Aplicacion\"]=$registro_parametros[\"version\"];\n\n			// Lleva a auditoria con query manual por la falta de $PCOSESS_LoginUsuario\n			PCO_Auditar(\"Ingresa al sistema desde $PCO_DireccionAuditoria\",$_SESSION[\"PCOSESS_LoginUsuario\"]);\n			// Actualiza fecha del ultimo ingreso para el usuario\n			PCO_EjecutarSQLUnaria(\"UPDATE \".$TablasCore.\"usuario SET ultimo_acceso=\'$PCO_FechaOperacion\' WHERE login=\'\".$registro[\"login\"].\"\'\");\n\n			// Redirecciona al menu\n			header(\"Location: ../../../index.php\");\n			exit();\n		}\n\n\n########################################################################\n########################################################################\n/*\n    Function: PCO_GenerarNombreAdjunto\n	Busca ocurrencias de las cadenas de formato de nombre de un archivo adjunto y las reemplaza por los valores correspondientes\n\n	Salida:\n\n		Nombre final del path del archivo adjunto\n\n	Vea tambien:\n\n		<PCO_GuardarDatosFormulario> | <PCO_ActualizarDatosFormulario>\n*/\nfunction PCO_GenerarNombreAdjunto($nombre_archivo,$campo_tabla,$extension_archivo,$path_final_archivo)\n{\n    global $PCO_FechaOperacion,$PCO_HoraOperacion,$PCOSESS_LoginUsuario;\n\n    $valores_buscar_rem_array = array\n        (\n              array(\"_ORIGINAL_\",$nombre_archivo),\n              array(\"_CAMPOTABLA_\",$campo_tabla),\n              array(\"_FECHA_\",$PCO_FechaOperacion),\n              array(\"_HORA_\",$PCO_HoraOperacion),\n              array(\"_HORAINTERNET_\",date(\'B\')),\n              array(\"_USUARIO_\",$PCOSESS_LoginUsuario),\n              array(\"_MICRO_\",date(\'u\')),\n              array(\"_EXTENSION_\",$extension_archivo)\n        );\n\n    foreach ($valores_buscar_rem_array as $valores_buscar_rem) {\n\n        if (strpos($path_final_archivo,$valores_buscar_rem[0])!==FALSE) $path_final_archivo=str_replace($valores_buscar_rem[0], $valores_buscar_rem[1], $path_final_archivo); // Booleana requiere === o !==\n    }\n\n	return $path_final_archivo;\n}\n\n\n\n########################################################################\n########################################################################\n/*\n    Function: PCO_AgregarFaroAnalytics\n    Agrega el codigo HTML y JS necesario para activar los faros de Google Analytics cuando asi se desea\n    \n	Salida:\n		Funciones requeridas para la adcion del faro al final de la pagina\n*/\nfunction PCO_AgregarFaroAnalytics()\n    {\n        global $PCO_Accion,$TablasCore,$CodigoGoogleAnalytics;\n        $PosfijoGA=$_SERVER[\'SERVER_NAME\'].\'/ACT/\'.$PCO_Accion.\'/SCR\'.$_SERVER[\'PHP_SELF\'];\n        $RegistroParam=PCO_EjecutarSQL(\"SELECT nombre_empresa_corto,nombre_aplicacion FROM {$TablasCore}parametros LIMIT 0,1\")->fetch();\n        $InfoAppGA=$RegistroParam[\"nombre_empresa_corto\"].\" - \".$RegistroParam[\"nombre_aplicacion\"];\n        // Este valor indica un ID generico de GA UA-847800-9 No edite esta linea sobre el codigo\n        // Para validar que su ID es diferente al generico de seguimiento.  En lugar de esto cambie\n        // su valor a traves del panel de configuracion de Practico con el entregado como ID de GoogleAnalytics\n        $TagsGA[]=base64_decode(\"VUEtODQ3ODAwLTk=\");\n        if ($CodigoGoogleAnalytics!=\"\" && $CodigoGoogleAnalytics!=\"UA-847800-9\") $TagsGA[]=$CodigoGoogleAnalytics;\n        //Global site tag (gtag.js) - Google Analytics\n        foreach ($TagsGA as $EtiquetaGA)\n            {\n                echo \"<script async src=\'https://www.googletagmanager.com/gtag/js?id={$EtiquetaGA}\'></script>\n                    <script>\n                      window.dataLayer = window.dataLayer || [];\n                      function gtag(){dataLayer.push(arguments);}\n                      gtag(\'js\', new Date());\n                      gtag(\'config\', \'{$EtiquetaGA}\',\n                            {\n                                \'transport_type\': \'beacon\',\n                                \'page_title\': \'{$InfoAppGA}\',\n                                \'page_path\': \'{$PosfijoGA}\',\n                            }\n                      );\n                    </script>\";                \n            }\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_EvaluarCodigo\n	Ejecuta codigo PHP recibido dentro de una cadena.  Reemplazo para la funcion eval que pasa a ser obsoleta por seguridad\n\n	Variables de entrada:\n\n		CadenaCodigoPHP - Cadena con todo el codigo a evaluar TIENE que comenzar con el tag <?php si se desea interpretar\n\n	Salida:\n		Evaluacion y ejecucion del codigo correspondiente mediante la inclusion de un archivo temporal con su contenido\n*/\nfunction PCO_EvaluarCodigo($CadenaCodigoPHP,$ByPassSintaxis=0,$DescComplemento=\"\",$EvitarInclusionSoloRevisar=0)\n{\n    global $PCO_ChequeoDinamicoSintaxis;\n\n    $ArchivoInclusionTemporal = tmpfile(); //Crea un archivo temporal\n    $MetadatosArchivoCreado = stream_get_meta_data ( $ArchivoInclusionTemporal );\n    $RutaArchivoTemporal = $MetadatosArchivoCreado [\'uri\'];\n    fwrite ( $ArchivoInclusionTemporal, $CadenaCodigoPHP );\n\n    //Busca si se tienen errores o no para saber si incluye el archivo \n    $ErroresSintaxis=0;\n    if ($PCO_ChequeoDinamicoSintaxis==1 || $ByPassSintaxis==1)\n        $ErroresSintaxis=PCO_BuscarErroresSintaxisPHP($RutaArchivoTemporal,1,$DescComplemento);\n    if ($ErroresSintaxis==0 && $EvitarInclusionSoloRevisar==0)\n        {\n            try\n                {\n                    $ResultadoInclusion = include ($RutaArchivoTemporal);\n                }\n            catch (Exception $e)\n                {\n                    echo \"Se ha detectado un error durante la inclusion del archivo {$RutaArchivoTemporal}: \",  $e->getMessage();\n                }\n        }\n\n    fclose ( $ArchivoInclusionTemporal );\n    return $ResultadoInclusion;\n}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ImprimirOpcionMenu\n	Imprime en pantalla una opcion de menu, de acuerdo a su configuracion recibida en el registro y la ubicacion definida.\n\n	Variables de entrada:\n\n		RegistroOpcion - Registro completo de la opcion de menu\n		Ubicacion - Ubicacion sobre la cual se desea ubicar la opcion y que obedece a las mismas disponibles cuando esta es creada. Posibilidades: [arriba,escritorio,centro,lateral,formulario]\n\n	Salida:\n		Impresion del codigo HTML correspondiente\n*/\nfunction PCO_ImprimirOpcionMenu($RegistroOpcion,$Ubicacion=\'\',$PreUbicacion=\'\')\n    {\n        global $ArchivoCORE,$PCOSESS_LoginUsuario,$TablasCore;\n\n        //Verifica si se trata de una opcion simple o de una agrupadora.  Si es agrupadora recorre sus opciones hijas\n        if ($RegistroOpcion[\'tipo_menu\']==\'grp\')\n			{\n    			// Si el usuario es diferente al administrador agrega condiciones al query\n    			if (!PCO_EsAdministrador(@$PCOSESS_LoginUsuario) && $Ubicacion!=\'formulario\')\n    				{\n    					$Complemento_tablas=\",\".$TablasCore.\"usuario_menu\";\n    					$Complemento_condicion=\" AND \".$TablasCore.\"usuario_menu.menu=\".$TablasCore.\"menu.hash_unico AND \".$TablasCore.\"usuario_menu.usuario=\'$PCOSESS_LoginUsuario\'\";  // AND nivel>0\n    				}\n\n    			if ($Ubicacion==\'formulario\')\n    				$Complemento_condicion=\" AND \".$TablasCore.\"menu.formulario_vinculado=\".$RegistroOpcion[\"formulario_vinculado\"].\"\";  // AND nivel>0\n\n    			if ($Ubicacion==\'lateral\')\n    				$Complemento_AnchoLateral=\' style=\"width: 100%; font-size:0.95em;\" \';  // Agrega porcentaje de 100% ancho a las opciones laterales\n\n    			$ResultadoOpcionesAnidadas=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"menu \".@$Complemento_tablas.\" WHERE padre=\'\".$RegistroOpcion[\'hash_unico\'].\"\' \".@$Complemento_condicion.\" ORDER BY peso\");\n    			$CadenaPreOpcion=\'\n                    <div class=\"btn-group\" \'.$Complemento_AnchoLateral.\'>\n                      <button type=\"button\" \'.$Complemento_AnchoLateral.\' class=\"btn dropdown-toggle \'.$RegistroOpcion[\"clase_contenedor\"].\' \" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                        <div align=left>\n                            <i class=\"\'.$RegistroOpcion[\"imagen\"].\' fa-fw\"></i> \'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"texto\"]).\' <span class=\"caret\"></span>\n                        </div>\n                      </button>\n                      <ul class=\"dropdown-menu\">\';\n                $CadenaPosOpcion=\'\n                      </ul>\n                    </div>\';\n\n    			//Si la posicion es un formulario cambia el estilo de presentacion del grupo\n    			if ($Ubicacion==\"formulario\")\n    			    {\n            			$CadenaPreOpcion=\'\n                            <div class=\"btn-group\">\n                              <li class=\"btn dropdown-toggle \'.$RegistroOpcion[\"clase_contenedor\"].\' \" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                <i class=\"\'.$RegistroOpcion[\"imagen\"].\' fa-fw\"></i> \'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"texto\"]).\' <span class=\"caret\"></span>\n                              </li>\n                              <ul class=\"dropdown-menu\">\';\n                        $CadenaPosOpcion=\'\n                              </ul>\n                            </div>\';\n    			    }\n\n    			//Crea el elemento para dropdown con las opciones\n                echo $CadenaPreOpcion;\n                        // Imprime las opciones con sus formularios\n                        while($RegistroOpcionAnidada = $ResultadoOpcionesAnidadas->fetch())\n                        	PCO_ImprimirOpcionMenu($RegistroOpcionAnidada,\'submenu\',$Ubicacion);\n                echo $CadenaPosOpcion;\n			}\n\n        //Genera el formulario que sera llamado en la opcion de menu\n		echo \'<form action=\"\'.$ArchivoCORE.\'\" method=\"post\" name=\"\'.$PreUbicacion.\'_\'.$Ubicacion.\'_\'.$RegistroOpcion[\"id\"].\'\" id=\"\'.$PreUbicacion.\'_\'.$Ubicacion.\'_\'.$RegistroOpcion[\"id\"].\'\" style=\"display:inline; height: 0px; border-width: 0px; width: 0px; padding: 0; margin: 0;\">\';\n		// Verifica si se trata de un comando interno o personal y crea formulario y enlace correspondiente (ambos funcionan igual)\n		if ($RegistroOpcion[\"tipo_comando\"]==\"Interno\" || $RegistroOpcion[\"tipo_comando\"]==\"Personal\")\n            echo \'<input type=\"hidden\" name=\"PCO_Accion\" value=\"\'.$RegistroOpcion[\"comando\"].\'\">\';\n		// Verifica si se trata de una opcion para cargar un objeto de practico\n		if ($RegistroOpcion[\"tipo_comando\"]==\"Objeto\")\n			echo\'<input type=\"hidden\" name=\"PCO_Accion\" value=\"PCO_CargarObjeto\"><input type=\"hidden\" name=\"PCO_Objeto\" value=\"\'.$RegistroOpcion[\"comando\"].\'\">\';\n		echo \'</form>\';\n\n        //Define la cadena a imprimir como accion para el menu\n        $CadenaPreOpcion=\'\';\n        $CadenaPosOpcion=\'</a>\';\n		//Si tiene una URL trata la opcion como enlace estandar, sino como opcion de menu especial\n		if ($RegistroOpcion[\"url\"]!=\"\")\n		    {\n		        if ($Ubicacion==\'submenu\' || $Ubicacion==\'usuario\')\n		        	$CadenaPreOpcion= \'<a href=\"\'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"url\"]).\'\" target=\"\'.$RegistroOpcion[\"destino\"].\'\"><i class=\"\'.$RegistroOpcion[\"imagen\"].\' fa-fw\"></i> \'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"texto\"]);\n		        else\n		        	$CadenaPreOpcion= \'<a title=\"\'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"texto\"]).\'\" href=\"\'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"url\"]).\'\" target=\"\'.$RegistroOpcion[\"destino\"].\'\">\';\n		    }\n		else\n			{\n			    if ($Ubicacion==\'arriba\' || $Ubicacion==\'lateral\')\n                    $CadenaPreOpcion= \'<a href=\"javascript:document.\'.$PreUbicacion.\'_\'.$Ubicacion.\'_\'.$RegistroOpcion[\"id\"].\'.submit();\">\';\n			    if ($Ubicacion==\'centro\' || $Ubicacion==\'escritorio\' || $Ubicacion==\'formulario\')\n			        $CadenaPreOpcion= \'<a title=\"\'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"texto\"]).\'\" href=\"javascript:document.\'.$PreUbicacion.\'_\'.$Ubicacion.\'_\'.$RegistroOpcion[\"id\"].\'.submit();\">\';\n			    if ($Ubicacion==\'submenu\' || $Ubicacion==\'usuario\')\n			        $CadenaPreOpcion= \'<a href=\"javascript:document.\'.$PreUbicacion.\'_\'.$Ubicacion.\'_\'.$RegistroOpcion[\"id\"].\'.submit();\"><i class=\"\'.$RegistroOpcion[\"imagen\"].\' fa-fw\"></i> \'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"texto\"]).\' \'.$TextoAccesoDirecto;\n			}\n\n        //Imprime opciones de submenus\n		if ($RegistroOpcion[\'tipo_menu\']==\'opc\' && $Ubicacion==\"submenu\")\n			{\n\n			    //Define el texto a ubicar al lado derecho de la opcion cuando se ha indicadu su valor de acceso directo\n			    $TextoAccesoDirecto=\'<span class=\"pull-right text-muted small\"><i>Ctrl+O</i></span>\';\n			    $TextoAccesoDirecto=\'\';\n\n			    //Si la imagen definida para el menu es la palabra clave _SEPARADOR_ entonces lo trata como tal, en caso contrario presenta la opcion\n			    if ($RegistroOpcion[\"imagen\"]==\"_SEPARADOR_\")\n			        echo \'<li role=\"separator\" class=\"divider\"></li>\';\n			    else\n			        {\n        			    //Imprime el item de menu\n        				echo \'<li class=\"\'.$RegistroOpcion[\"clase_contenedor\"].\'\">\';\n        				echo $CadenaPreOpcion;\n        				echo $CadenaInOpcion;\n        				echo $CadenaPosOpcion;\n                        echo \'</li>\';\n			        }\n			}\n\n        //Imprime opciones estandar de menu\n		if ($RegistroOpcion[\'tipo_menu\']==\'opc\' && $Ubicacion!=\"submenu\")\n			{\n        		//Determina si la opcion es una imagen o no\n        		$PCO_EsImagen=0;\n        		if (strpos($RegistroOpcion[\"imagen\"],\".png\") || strpos($RegistroOpcion[\"imagen\"],\".jpg\") || strpos($RegistroOpcion[\"imagen\"],\".gif\"))\n        			$PCO_EsImagen=1;\n\n        		//Si no detecta ninguna extension de archivo de imagen entonces agrega codigo en bootstrap para representarla\n        		$CadenaInOpcion=\'\';\n        		if (!$PCO_EsImagen)\n        			{\n        			    if ($Ubicacion==\'arriba\')\n                            $CadenaInOpcion= \'<button class=\"btn-circle btn-info btn-xs\"><i class=\"\'.$RegistroOpcion[\"imagen\"].\'\"></i></button> \'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"texto\"]);\n        			    if ($Ubicacion==\'centro\')\n                            $CadenaInOpcion= \'<button type=\"button\" class=\"btn btn-default btn-outline\"><i class=\"\'.$RegistroOpcion[\"imagen\"].\' fa-fw\"></i><span class=\"btn-xs\">\'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"texto\"]).\'</span></button>\';\n        			    if ($Ubicacion==\'formulario\')\n                            $CadenaInOpcion= \'<ul type=\"button\" class=\"btn \'.$RegistroOpcion[\"clase_contenedor\"].\'\"><i class=\"\'.$RegistroOpcion[\"imagen\"].\' fa-fw\"></i><span>\'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"texto\"]).\'</span></ul>\';\n        			    if ($Ubicacion==\'escritorio\')\n                            $CadenaInOpcion= \'<button class=\"btn btn-default\"><i class=\"\'.$RegistroOpcion[\"imagen\"].\' fa-3x fa-fw\"></i><br><span class=\"btn-xs\">\'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"texto\"]).\'</span></button>\';\n        			    if ($Ubicacion==\'lateral\')\n                            $CadenaInOpcion= \'<i class=\"\'.$RegistroOpcion[\"imagen\"].\'\"></i>\'.PCO_ReemplazarVariablesPHPEnCadena($RegistroOpcion[\"texto\"]);\n        			}\n        		else\n        			$CadenaInOpcion= \'<img src=\"\'.$RegistroOpcion[\"imagen\"].\'\" border=\"0\" />\';\n\n                //Imprime opciones ubicadas en la barra superior de la aplicacion\n                if ($Ubicacion==\'arriba\')\n                    {\n        				echo \'<li role=\"presentation\">\';\n        				echo $CadenaPreOpcion;\n        				echo $CadenaInOpcion;\n        				echo $CadenaPosOpcion;\n                        echo \'</li>\';\n                    }\n\n                //Imprime opciones ubicadas en ventanas o acordeones en el centro de la aplicacion\n                if ($Ubicacion==\'centro\')\n                    {\n                        echo $CadenaPreOpcion;\n                        echo $CadenaInOpcion;\n                        echo $CadenaPosOpcion.\'&nbsp;\';\n                    }\n\n                //Imprime opciones ubicadas en ventanas o acordeones en el centro de la aplicacion\n                if ($Ubicacion==\'formulario\')\n                    {\n                        echo $CadenaPreOpcion;\n                        echo $CadenaInOpcion;\n                        echo $CadenaPosOpcion.\'&nbsp;\';\n                    }\n\n                //Imprime opciones ubicadas en el escritorio de la aplicacion (iconos grandes sin categorizar)\n                if ($Ubicacion==\'escritorio\')\n                    {\n                        // Imprime la imagen\n                        echo $CadenaPreOpcion;\n                        echo $CadenaInOpcion;\n                        echo $CadenaPosOpcion;\n                    }\n\n                //Imprime opciones ubicadas en la barra lateral de navegacion (izquierda)\n                if ($Ubicacion==\'lateral\')\n                    {\n                        echo \'<li style=\"text-align: left; font-size:0.95em;\">\';\n                        echo $CadenaPreOpcion;\n                        echo $CadenaInOpcion;\n                        echo $CadenaPosOpcion;\n                        echo \'</li>\';\n                    }\n\n                //Imprime opciones ubicadas en la barra superior, menu de usuario\n                if ($Ubicacion==\'usuario\')\n                    {\n                        echo \'<li>\';\n                        echo $CadenaPreOpcion;\n                        echo $CadenaInOpcion;\n                        echo $CadenaPosOpcion;\n                        echo \'</li>\';\n                    }\n			}\n    }\n\n\n\n/*#################################################################################\n###################################################################################*/\nfunction PCO_CodificarCadena_UUEncode($Cadena)\n    {\n        // Sanity check\n        if (!is_scalar($Cadena)) {\n            user_error(\'convert_uuencode() expects parameter 1 to be\'\n                . \' string, \' . gettype($Cadena) . \' given\',\n                E_USER_WARNING);\n            return false;\n        }\n\n        $u = 0;\n        $encoded = \'\';\n\n        while ($c = count($bytes = unpack(\'c*\',\n            substr($Cadena, $u, 45)))) {\n            $u += 45;\n            $encoded .= pack(\'c\', $c + 0x20);\n\n            while ($c % 3) {\n                $bytes[++$c] = 0;\n            }\n\n            foreach (array_chunk($bytes, 3) as $b) {\n                $b0 = ($b[0] & 0xFC) >> 2;\n                $b1 = (($b[0] & 0x03) << 4) + (($b[1] & 0xF0) >> 4);\n                $b2 = (($b[1] & 0x0F) << 2) + (($b[2] & 0xC0) >> 6);\n                $b3 = $b[2] & 0x3F;\n\n                $b0 = $b0 ? $b0 + 0x20 : 0x60;\n                $b1 = $b1 ? $b1 + 0x20 : 0x60;\n                $b2 = $b2 ? $b2 + 0x20 : 0x60;\n                $b3 = $b3 ? $b3 + 0x20 : 0x60;\n\n                $encoded .= pack(\'c*\', $b0, $b1, $b2, $b3);\n            }\n\n            $encoded .= \"\\n\";\n        }\n\n        // Add termination characters\n        $encoded .= \"\\x60\\n\";\n        return $encoded;\n    }\n\n\n/*#################################################################################\n###################################################################################*/\nfunction PCO_DecodificarCadena_UUEncode($Cadena)\n    {\n        // Sanity check\n        if (!is_scalar($Cadena)) {\n            user_error(\'convert_uuencode() expects parameter 1 to be\'\n                . \' string, \' . gettype($Cadena) . \' given\',\n                E_USER_WARNING);\n            return false;\n        }\n\n        if (strlen($Cadena) < 8) {\n            user_error(\'convert_uuencode() The given parameter is not\'\n                . \' a valid uuencoded string\', E_USER_WARNING);\n            return false;\n        }\n\n        $decoded = \'\';\n        foreach (explode(\"\\n\", $Cadena) as $line) {\n\n            $c = count($bytes = unpack(\'c*\', substr(trim($line), 1)));\n\n            while ($c % 4) {\n                $bytes[++$c] = 0;\n            }\n\n            foreach (array_chunk($bytes, 4) as $b) {\n                $b0 = $b[0] == 0x60 ? 0 : $b[0] - 0x20;\n                $b1 = $b[1] == 0x60 ? 0 : $b[1] - 0x20;\n                $b2 = $b[2] == 0x60 ? 0 : $b[2] - 0x20;\n                $b3 = $b[3] == 0x60 ? 0 : $b[3] - 0x20;\n\n                $b0 <<= 2;\n                $b0 |= ($b1 >> 4) & 0x03;\n                $b1 <<= 4;\n                $b1 |= ($b2 >> 2) & 0x0F;\n                $b2 <<= 6;\n                $b2 |= $b3 & 0x3F;\n\n                $decoded .= pack(\'c*\', $b0, $b1, $b2);\n            }\n        }\n        return rtrim($decoded, \"\\0\");\n    }\n\n\n/*#################################################################################\n###################################################################################*/\nfunction PCO_CodificarCadena_Binario($input)\n    {\n        if (!is_string($input))\n            return false;\n        $input = unpack(\'H*\', $input);\n        $chunks = str_split($input[1], 2);\n        $ret = \'\';\n        foreach ($chunks as $chunk)\n            {\n                $temp = base_convert($chunk, 16, 2);\n                $ret .= str_repeat(\"0\", 8 - strlen($temp)) . $temp;\n            }\n\n        //RETORNO DE HEXADECIMAL TOMADO DEL BINARIO\n        {\n            //$ret = bin2hex ($ret);\n        }\n        //RETORNO DE DECIMAL TOMADO DEL BINARIO CON ADICION DE CEROS A LA IZQUIERDA\n        /*\n        {\n            //Busca primer uno\n            $PrimerUno=stripos ( $ret , \"1\");\n            $CadenaCeros=\"\";\n            for ($i=0;$i<$PrimerUno;$i++)\n                $CadenaCeros.=\"0\";\n            $ret = $CadenaCeros.\"_\".bindec($ret);   //Retorna por ejemplo  00_6552311\n        }\n        */\n        return $ret;\n    }\n\n\n/*#################################################################################\n###################################################################################*/\nfunction PCO_DecodificarCadena_Binario($input)\n    {\n        //RETOMA UN HEXADECIMAL Y DEVUELVE EL BINARIO A PROCESAR\n        {\n            //$ret = hex2bin ($ret);\n        }\n        //RETOMA UN DECIMAL Y DEVUELVE EL BINARIO A PROCESAR AGREGANDO LOS CEROS EXTRA\n        /*\n        {\n            $PartesNumero=explode(\"_\",$input);\n            $input = $PartesNumero[0].decbin($PartesNumero[1]);   //Analiza por ejemplo una entrada como 00_6552311  para devolver su parte decimal en binaria antecedida por los ceros dados\n        }\n        */\n\n        if (!is_string($input))\n            return false;\n        $chunks = str_split($input,8);\n        $ret = \'\';\n        foreach ($chunks as $chunk)\n        {\n            $temp = base_convert($chunk, 2, 16);\n            $ret .= pack(\'H*\',str_repeat(\"0\", 2 - strlen($temp)) . $temp);\n        }\n        return $ret;\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: ImprimirMarcoPanelAdmin\n	Imprime un marco generico con informacion para el panel del administrador\n\n	Variables de entrada:\n\n		ClaseColumnas - Clases para la definicion del tamano del control en formato de columnas bootstrap.  Ej:  col-lg-3 col-md-6\n		EstiloPanel - Define el color del control bootstrap.  [primary | green | red | default | yellow | info | success | danger]\n		ClaseIconoFA - Clase con el icono en notacion FontAwesome para ser agregado al cuadro. Acepta modificadores FA.  Ej.  fa-table fa-4x fa-spin\n		Titulo - Texto a imprimir en formato grande sobre el cuadro.  Se recomienda una sola palabra.\n		SubTitulo - Texto corto explicativo del cuadro a ser impreso debajo del titulo en letra pequena.\n		EnlaceTexto - Texto a presentar al usuario para hacer clic sobre el.\n		EnlaceURL - URL para agregar al elemento Anchor.  Soporta los modificadores estandar de HTML.\n		ClaseTextoTitulo - Clase CSS para ser aplicada al texto del titulo\n\n	Salida:\n		Impresion del codigo HTML correspondiente\n*/\nfunction PCO_ImprimirPanelSimpleDashboard($ClaseColumnas,$EstiloPanel,$ClaseIconoFA,$Titulo,$SubTitulo,$EnlaceTexto,$EnlaceURL,$ClaseTextoTitulo=\"huge\")\n    {\n        $SalidaFuncion=\"\n            <div class=\'$ClaseColumnas\'>\n                <div class=\'panel panel-$EstiloPanel\'>\n                    <div class=\'panel-heading\'>\n                        <div class=\'row\'>\n                            <div class=\'col-xs-3\'>\n                                <i class=\'fa $ClaseIconoFA\'></i>\n                            </div>\n                            <div class=\'col-xs-9 text-right\'>\n                                <div class=\'$ClaseTextoTitulo\'>\n                                    <b>$Titulo</b>\n                                </div>\n                                <div>$SubTitulo</div>\n                            </div>\n                        </div>\n                    </div>\n                    <a href=\'$EnlaceURL\'>\n                        <div class=\'panel-footer\'>\n                            <span class=\'pull-left\'>$EnlaceTexto</span>\n                            <span class=\'pull-right\'><i class=\'fa fa-arrow-circle-right\'></i></span>\n                            <div class=\'clearfix\'></div>\n                        </div>\n                    </a>\n                </div>\n            </div>\";\n        return $SalidaFuncion;\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCOFUNC_EliminarInforme\n	Elimina un informe definido para la aplicacion incluyendo todos los objetos definidos en su interior\n\n	Variables de entrada:\n\n		informe - ID unico de identificacion del formulario a eliminar\n\n	(start code)\n		DELETE FROM \".$TablasCore.\"formulario WHERE id=\'$formulario\'\n		DELETE FROM \".$TablasCore.\"formulario_objeto WHERE formulario=\'$formulario\'\n		DELETE FROM \".$TablasCore.\"formulario_boton WHERE formulario=? \",\"$formulario\n	(end)\n\n	Salida:\n		Registro eliminado\n\n	Ver tambien:\n		<PCO_AdministrarFormularios>\n*/\nfunction PCOFUNC_EliminarInforme($informe=\"\")\n	{\n		global $TablasCore;\n		if ($informe!=\"\")\n			{\n				PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"informe WHERE id=? \",\"$informe\");\n				PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"informe_campos WHERE informe=? \",\"$informe\");\n				PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"informe_tablas WHERE informe=? \",\"$informe\");\n				PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"informe_condiciones WHERE informe=? \",\"$informe\");\n				PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"informe_boton WHERE informe=? \",\"$informe\");\n				PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"usuario_informe WHERE informe=? \",\"$informe\");\n				PCO_Auditar(\"Elimina informe $informe\");\n			}\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_EliminarFormulario\n	Elimina un formulario definido para la aplicacion incluyendo todos los objetos definidos en su interior\n\n	Variables de entrada:\n\n		formulario - ID unico de identificacion del formulario a eliminar\n\n	(start code)\n		DELETE FROM \".$TablasCore.\"formulario WHERE id=\'$formulario\'\n		DELETE FROM \".$TablasCore.\"formulario_objeto WHERE formulario=\'$formulario\'\n		DELETE FROM \".$TablasCore.\"formulario_boton WHERE formulario=? \",\"$formulario\n	(end)\n\n	Salida:\n		Registro eliminado\n\n	Ver tambien:\n		<PCO_AdministrarFormularios>\n*/\nfunction PCO_EliminarFormulario($formulario=\"\")\n	{\n		global $TablasCore;\n		if ($formulario!=\"\")\n			{\n			    //Elimina los eventos relacionados con sus objetos\n				$EventosFormulario=PCO_EjecutarSQL(\"SELECT \".$TablasCore.\"evento_objeto.id FROM \".$TablasCore.\"evento_objeto,\".$TablasCore.\"formulario_objeto WHERE \".$TablasCore.\"formulario_objeto.formulario=$formulario AND \".$TablasCore.\"formulario_objeto.id=\".$TablasCore.\"evento_objeto.objeto \",\"\");\n	            while($RegistroEventosFormulario=$EventosFormulario->fetch())\n		            PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"evento_objeto WHERE id=? \",$RegistroEventosFormulario[\"id\"]);\n\n				PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"formulario WHERE id=? \",\"$formulario\");\n\n				PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"formulario_objeto WHERE formulario=? \",\"$formulario\");\n				PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"formulario_boton WHERE formulario=? \",\"$formulario\");\n				PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"menu WHERE formulario_vinculado=? \",\"$formulario\");\n				PCO_Auditar(\"Elimina formulario $formulario\");\n			}\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ImportarDefinicionesXML\n	Busca definiciones de elementos XML almacenadas sobre xml/ y ejecuta el proceso de importacion de cada uno automaticamente durante cada cargue de pagina por algun usuario disenador de aplicacion.\n\n	Salida:\n\n		Ejecucion automatica de los scripts residentes para la generacion de los elementos internos correspondientes\n*/\nfunction PCO_ImportarDefinicionesXML()\n    {\n		//Se desactiva el limite de tiempo para ejecucion del script\n		set_time_limit (0) ;\n		\n        $ArregloElementos = array();\n        //Obtiene lista de archivos en xml/ para ser ejecutados\n        $DirectorioXML = dir(\"xml/\");\n        while (false !== ($ArchivoXML = $DirectorioXML->read()))\n            if(strtolower(substr($ArchivoXML, -4))==\".xml\") //Considera solo los XML\n                $ArregloElementos[]=$ArchivoXML;\n        $DirectorioXML->close();\n\n        //Por cada archivo ejecuta el proceso de importacion correspondiente\n        foreach ($ArregloElementos as $ArchivoXML)\n            {\n                //Identifica el tipo de elemento contenido en el archivo para saber como procesarlo\n                $cadena_xml_importado = file_get_contents(\"xml/\".$ArchivoXML);\n				$xml_importado = @simplexml_load_string($cadena_xml_importado); // Usa SimpleXML Directamente para interpretar cadena\n                //Procesa el archivo segun su tipo\n                if ($xml_importado->descripcion[0]->tipo_objeto==\"Informe\")\n                    $ResultadoImportacion=PCO_ImportarXMLInforme($cadena_xml_importado);\n                if ($xml_importado->descripcion[0]->tipo_objeto==\"Formulario\")\n                    $ResultadoImportacion=PCO_ImportarXMLFormulario($cadena_xml_importado);\n                //Una vez procesado el archivo lo elimina\n                unlink(\"xml/\".$ArchivoXML);\n            }\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ImportarScriptsPHP\n	Busca definiciones de scripts PHP almacenadas sobre xml/ (carpeta del sistema para importar elementos y ejecuta cada uno automaticamente durante cada cargue de pagina por algun usuario disenador de aplicacion.\n\n	Salida:\n\n		Ejecucion automatica de los scripts residentes y renombrado de los mismos para evitar su posterior ejecucion\n*/\nfunction PCO_ImportarScriptsPHP()\n    {\n        global $PCO_FechaOperacion,$PCO_HoraOperacion;\n        $ArregloElementos = array();\n        //Obtiene lista de archivos en xml/ para ser ejecutados\n        $DirectorioScripts = dir(\"xml/\");\n        while (false !== ($ArchivoPHP = $DirectorioScripts->read()))\n            if(strtolower(substr($ArchivoPHP, -4))==\".php\") //Considera solo los PHP\n                $ArregloElementos[]=$ArchivoPHP;\n        $DirectorioScripts->close();\n\n        //Por cada archivo ejecuta el proceso de ejecucion correspondiente\n        foreach ($ArregloElementos as $ArchivoPHP)\n            {\n                //Incluye el codigo\n                include_once(\"xml/\".$ArchivoPHP);\n                //Una vez procesado el archivo lo renombra para no ser ejecutado mas\n                rename(\"xml/\".$ArchivoPHP, \"xml/\".$ArchivoPHP.\".Run_\".$PCO_FechaOperacion.\"-\".$PCO_HoraOperacion);\n            }\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ExportarDefinicionesXML\n	Exporta masivamente a XML las definiciones de elementos de un tipo dado\n\n	Variables de entrada:\n\n		TipoElementos - Indica el tipo de elementos que deben ser exportados:  Inf o Frm\n		ListaElementos - Una lista de los elementos de ese tipo que deben ser exportados en un formato similar a la impresion  EJ: 1,2,5-6,8,12-30\n		tipo_copia_objeto - Indica si los objetos seran generados con ID estatico o dinamico: XML_IdEstatico | XML_IdDinamico\n\n	Salida:\n\n		Archivos generados para los elementos seleccionados\n\n	Ver tambien:\n		<PCO_ExportarXMLInforme> | <PCO_ImportarXMLInforme> | <PCO_ExportarXMLFormulario> | <PCO_ImportarXMLFormulario>\n*/\nfunction PCO_ExportarDefinicionesXML($TipoElementos,$ListaElementos,$tipo_copia_objeto)\n    {\n        global $ModoDesarrolladorPractico,$PCO_FechaOperacion,$PCO_HoraOperacion,$TablasCore;\n        $ArregloElementosExportacion=PCO_ParsearListasElementos($ListaElementos);\n        foreach ($ArregloElementosExportacion as $ElementoExportar)\n            {\n                //Valida que sea un elemento exportable (de usuario o interno pero en modo desarrollador)\n                if ($ElementoExportar>=$ModoDesarrolladorPractico)\n                    {\n                        //Establece el prefijo del path final del archivo exportado segun el valor de ID asi como si llevara fecha y hora o no\n                        $PrefijoPath=\"tmp/\";\n                        $InfijoPath=\"_\".$PCO_FechaOperacion.\"_\".$PCO_HoraOperacion;\n                        if ($ElementoExportar<0)\n                            {\n                                $PrefijoPath=\"xml/\";\n                                $InfijoPath=\"\"; //Elimina fecha y hora dejando siempre un nombre de archivo fijo\n                            }\n                        //Exporta elementos tipo informe\n                        if ($TipoElementos==\"Inf\")\n                            {\n                                //Verifica primero que si exista el ID de informe asociado antes de proceder\n                                $RegistroElemento=@PCO_EjecutarSQL(\"SELECT id FROM \".$TablasCore.\"informe WHERE id = \'$ElementoExportar\' \")->fetch();\n                                if ($RegistroElemento[\"id\"]!=\"\")\n                                    {\n                                        $PCO_NombreArchivoXML=$PrefijoPath.\"RepID_\".$ElementoExportar.$InfijoPath.\".xml\";\n                                        PCO_ExportarXMLInforme($ElementoExportar,$tipo_copia_objeto,$PCO_NombreArchivoXML);\n                                    }\n                            }\n                        //Exporta elementos tipo formulario\n                        if ($TipoElementos==\"Frm\")\n                            {\n                                //Verifica primero que si exista el ID de informe asociado antes de proceder\n                                $RegistroElemento=@PCO_EjecutarSQL(\"SELECT id FROM \".$TablasCore.\"formulario WHERE id = \'$ElementoExportar\' \")->fetch();\n                                if ($RegistroElemento[\"id\"]!=\"\")\n                                    {\n                                        $PCO_NombreArchivoXML=$PrefijoPath.\"FormID_\".$ElementoExportar.$InfijoPath.\".xml\";\n                                        PCO_ExportarXMLFormulario($ElementoExportar,$tipo_copia_objeto,$PCO_NombreArchivoXML);\n                                    }\n                            }\n                    }\n            }\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ParsearListasElementos\n	Toma una cadena con la lista de elementos separados por comas y rangos por guiones y los genera uno a uno sobre un arreglo que se retorna luego para realizar operaciones individuales sobre ellos.  Ignora rangos invertidos o donde no sean numericos.\n\n	Variables de entrada:\n\n		ListaElementos - Lista de elementos a parsear en formato similar al de impresion. EJ: 1,2,5-6,8,12-30\n\n	Salida:\n\n		Arreglo con todos los elementos parseados para ser procesado posteriormente por quien llame la funcion\n*/\nfunction PCO_ParsearListasElementos($ListaElementos)\n    {\n        $ArregloElementos = array();\n        $ArregloParcial=explode(\",\",$ListaElementos);\n        //Recorre toda la lista de elementos\n        foreach ($ArregloParcial as $Rango)\n            {\n                $Rango=trim($Rango);\n                //Por cada elemento analiza si se trata de un rango y lo genera, sino simplemente lo agrega\n                if (substr_count ( $Rango , \"-\" ) > 0)\n                    {\n                        $RangoValido=false;\n                        //Separa nuevamente por el guion y hace el ciclo de inclusion.  Solo analiza los dos primeros valores y descarta posibles rangos como 3-8-10\n                        $RangoCompuesto=explode(\"-\",$Rango);\n\n                        //CASO 1: Analiza rangos normales con numeros enteros Ej. 4-8\n                        if (!$RangoValido)\n                            {\n                                $InicioRango=trim($RangoCompuesto[0]);\n                                $FinRango=trim($RangoCompuesto[1]);\n                                //Evalua si la operacion obtuvo un rango valido\n                                if (is_numeric($InicioRango) && is_numeric($FinRango)) $RangoValido=true;\n                            }\n                        //CASO 2: Analiza rangos donde el primero es negativo y el segundo positivo. Ej: -100-0 o -80-5\n                        if (!$RangoValido)\n                            {\n                                $InicioRango=\"-\".trim($RangoCompuesto[1]);\n                                $FinRango=trim($RangoCompuesto[2]);\n                                //Evalua si la operacion obtuvo un rango valido\n                                if (is_numeric($InicioRango) && is_numeric($FinRango)) $RangoValido=true;\n                            }\n                        //CASO 3: Analiza rangos donde el primero es negativo y el segundo tambien. Ej: -80--5\n                        if (!$RangoValido)\n                            {\n                                $InicioRango=\"-\".trim($RangoCompuesto[1]);\n                                $FinRango   =\"-\".trim($RangoCompuesto[3]);\n                                //Evalua si la operacion obtuvo un rango valido\n                                if (is_numeric($InicioRango) && is_numeric($FinRango)) $RangoValido=true;\n                            }\n                        //CASO 4: Analiza Elementos unicos que a pesar de comenzar con guion se trata de un unico elemento. Ej: -5\n                        if (!$RangoValido)\n                            {\n                                $InicioRango=\"-\".trim($RangoCompuesto[1]);\n                                //Evalua si la operacion obtuvo un rango valido\n                                if (is_numeric($InicioRango))\n                                    {\n                                        $ArregloElementos[]=$Rango;\n                                        $RangoValido=false;\n                                    }\n                            }\n                        //Revisa que el rango si sea valido (ambos numericos) antes de seguir\n                        if ($RangoValido)\n                            {\n                                //Revisa que el rango no sea inverso, sino lo ignora\n                                if ($InicioRango<=$FinRango)\n                                    {\n                                        //Genera los elementos asociados al rango dentro del arreglo a retornar\n                                        for ($i=$InicioRango;$i<=$FinRango;$i++)\n                                            $ArregloElementos[]=$i;\n                                    }\n                            }\n                    }\n                else\n                    {\n                        //Revisa que el rango si sea un numero antero antes de seguir\n                        if (is_numeric($Rango))\n                            $ArregloElementos[]=$Rango;\n                    }\n            }\n        return $ArregloElementos;\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ImportarXMLFormulario\n	Importa una cadena XML con la especificacion de un formulario al sistema\n\n	Variables de entrada:\n\n		xml_importado - Cadena en notacion XML con todos los componentes necesarios del formulario\n\n	Salida:\n\n		Objetos generados a partir de la definicion de la cadena\n*/\nfunction PCO_ImportarXMLFormulario($xml_importado)\n    {\n        global $ListaCamposSinID_menu,$ListaCamposSinID_evento_objeto,$_SeparadorCampos_,$TablasCore,$ListaCamposSinID_formulario,$ConexionPDO,$ListaCamposSinID_formulario_objeto,$ListaCamposSinID_formulario_boton;\n        $xml_importado = @simplexml_load_string($xml_importado); // Usa SimpleXML Directamente para interpretar cadena\n\n				//Si es tipo estatico elimina el formulario existente con el mismo ID\n				$ListaCamposParaID=\"\";\n				$InterroganteParaID=\"\";\n				$ValorInsercionParaID=\"\";\n				if ($xml_importado->descripcion[0]->tipo_exportacion==\"XML_IdEstatico\")\n					{\n						$ListaCamposParaID=\"id,\";\n						$InterroganteParaID=\"?,\";\n						$ValorInsercionParaID=base64_decode($xml_importado->core_formulario[0]->id).$_SeparadorCampos_;\n						PCO_EliminarFormulario(base64_decode($xml_importado->core_formulario[0]->id));\n					}\n\n				// Establece valores para cada campo a insertar en el nuevo form\n				/* ##########################################################################################################*/\n				/* ####### IMPORTANTE: Ajustes sobre esta funcion se deberian replicar en funcion de copia asociadas ########*/\n				/* ##########################################################################################################*/\n				$titulo=base64_decode($xml_importado->core_formulario[0]->titulo);\n				$ayuda_titulo=base64_decode($xml_importado->core_formulario[0]->ayuda_titulo);\n				$ayuda_texto=base64_decode($xml_importado->core_formulario[0]->ayuda_texto);\n				$tabla_datos=base64_decode($xml_importado->core_formulario[0]->tabla_datos);\n				$columnas=base64_decode($xml_importado->core_formulario[0]->columnas);\n				$javascript=base64_decode($xml_importado->core_formulario[0]->javascript);\n				$borde_visible=base64_decode($xml_importado->core_formulario[0]->borde_visible);\n				$estilo_pestanas=base64_decode($xml_importado->core_formulario[0]->estilo_pestanas);\n				$id_html=base64_decode($xml_importado->core_formulario[0]->id_html);\n				$tipo_maquetacion=base64_decode($xml_importado->core_formulario[0]->tipo_maquetacion);\n				$css_columnas=base64_decode($xml_importado->core_formulario[0]->css_columnas);\n				$estilo_ventana=base64_decode($xml_importado->core_formulario[0]->estilo_ventana);\n				$pre_script=base64_decode($xml_importado->core_formulario[0]->pre_script);\n				$post_script=base64_decode($xml_importado->core_formulario[0]->post_script);\n				$modulo=base64_decode($xml_importado->core_formulario[0]->modulo);\n				// Inserta el nuevo objeto al form\n				PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"formulario (\".$ListaCamposParaID.$ListaCamposSinID_formulario.\") VALUES (\".$InterroganteParaID.\"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) \",\"$ValorInsercionParaID$titulo$_SeparadorCampos_$ayuda_titulo$_SeparadorCampos_$ayuda_texto$_SeparadorCampos_$tabla_datos$_SeparadorCampos_$columnas$_SeparadorCampos_$javascript$_SeparadorCampos_$borde_visible$_SeparadorCampos_$estilo_pestanas$_SeparadorCampos_$id_html$_SeparadorCampos_$tipo_maquetacion$_SeparadorCampos_$css_columnas$_SeparadorCampos_$estilo_ventana$_SeparadorCampos_$pre_script$_SeparadorCampos_$post_script$_SeparadorCampos_$modulo\");\n\n				//Determina el ID del registro\n				if ($xml_importado->descripcion[0]->tipo_exportacion==\"XML_IdEstatico\")\n					$idObjetoInsertado=base64_decode($xml_importado->core_formulario[0]->id);\n				else\n					$idObjetoInsertado=PCO_ObtenerUltimoIDInsertado($ConexionPDO);\n\n				// Busca los elementos que componen el formulario para hacerles la copia\n				//Determina cuantos campos tiene la tabla\n				$ArregloCampos=explode(\',\',$ListaCamposSinID_formulario_objeto);\n				$TotalCampos=count($ArregloCampos);\n				// Registros de formulario_objeto\n				for ($PCO_i=0;$PCO_i<$xml_importado->total_core_formulario_objeto[0]->cantidad_objetos;$PCO_i++)\n					{\n						//Genera cadena de interrogantes y valores segun cantidad de campos\n						$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n						$CadenaValores=base64_decode($xml_importado->core_formulario_objeto[$PCO_i]->tipo);\n\n						for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n							{\n								//Cadena de interrogantes\n								$CadenaInterrogantes.=\',?\';\n								//Cadena de valores (el campo No 5 corresponde al ID de formulario nuevo)\n								if ($PCOCampo!=5)\n									$CadenaValores.=$_SeparadorCampos_.base64_decode($xml_importado->core_formulario_objeto[$PCO_i]->{$ArregloCampos[$PCOCampo]});\n								else\n									$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n							}\n						//Inserta el nuevo objeto al form\n						PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"formulario_objeto ($ListaCamposSinID_formulario_objeto) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n\n                        //Determina cual fue el ID para el ultimo elemento insertado\n						$idObjetoInsertadoParaEvento=PCO_ObtenerUltimoIDInsertado($ConexionPDO);\n                        //Averigua el ID ORIGINAL del objeto recien insertado\n                        $IDOriginalObjeto=base64_decode($xml_importado->core_formulario_objeto[$PCO_i]->id);\n                        //Recorre la lista de todos los eventos en el XML\n        				for ($PCO_iEvento=0;$PCO_iEvento<$xml_importado->total_core_evento_objeto[0]->cantidad_objetos;$PCO_iEvento++)\n        					{\n        					    $RegistroEvento_id=base64_decode($xml_importado->core_evento_objeto[$PCO_iEvento]->id);\n        					    $RegistroEvento_objeto=base64_decode($xml_importado->core_evento_objeto[$PCO_iEvento]->objeto);\n        					    $RegistroEvento_evento=base64_decode($xml_importado->core_evento_objeto[$PCO_iEvento]->evento);\n        					    $RegistroEvento_javascript=base64_decode($xml_importado->core_evento_objeto[$PCO_iEvento]->javascript);\n                                //Si el objeto del evento original es igual al id original del evento recien insertado crea el nuevo registro de evento\n                                if ($RegistroEvento_objeto==$IDOriginalObjeto)\n                                    {\n    									$CadenaValoresEventos=\"{$idObjetoInsertadoParaEvento}{$_SeparadorCampos_}{$RegistroEvento_evento}{$_SeparadorCampos_}{$RegistroEvento_javascript}\";\n    									PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"evento_objeto ($ListaCamposSinID_evento_objeto) VALUES (?,?,?) \",\"$CadenaValoresEventos\");\n                                    }\n        					}\n					}\n\n				//Determina cuantos campos tiene la tabla\n				$ArregloCampos=explode(\',\',$ListaCamposSinID_formulario_boton);\n				$TotalCampos=count($ArregloCampos);\n				// Registros de formulario_boton\n				for ($PCO_i=0;$PCO_i<$xml_importado->total_core_formulario_boton[0]->cantidad_objetos;$PCO_i++)\n					{\n						//Genera cadena de interrogantes y valores segun cantidad de campos\n						$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n						$CadenaValores=base64_decode($xml_importado->core_formulario_boton[$PCO_i]->titulo);\n\n						for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n							{\n								//Cadena de interrogantes\n								$CadenaInterrogantes.=\',?\';\n								//Cadena de valores (el campo No 2 corresponde al ID de formulario nuevo)\n								if ($PCOCampo!=2)\n									$CadenaValores.=$_SeparadorCampos_.base64_decode($xml_importado->core_formulario_boton[$PCO_i]->{$ArregloCampos[$PCOCampo]});\n								else\n									$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n							}\n						//Inserta el nuevo objeto al form\n						PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"formulario_boton ($ListaCamposSinID_formulario_boton) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n					}\n\n				//Determina cuantos campos tiene la tabla\n				$ArregloCampos=explode(\',\',$ListaCamposSinID_menu);\n				$TotalCampos=count($ArregloCampos);\n				// Registros de formulario_boton\n				for ($PCO_i=0;$PCO_i<$xml_importado->total_core_menu[0]->cantidad_objetos;$PCO_i++)\n					{\n						//Genera cadena de interrogantes y valores segun cantidad de campos\n						$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n						$CadenaValores=base64_decode($xml_importado->core_menu[$PCO_i]->texto);\n\n						for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n							{\n								//Cadena de interrogantes\n								$CadenaInterrogantes.=\',?\';\n								//Cadena de valores (el campo No 2 corresponde al ID de formulario nuevo)\n								if ($PCOCampo!=16)\n									$CadenaValores.=$_SeparadorCampos_.base64_decode($xml_importado->core_menu[$PCO_i]->{$ArregloCampos[$PCOCampo]});\n								else\n									$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n							}\n						//Inserta el nuevo objeto al form\n						PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"menu ($ListaCamposSinID_menu) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n					}\n\n        return $idObjetoInsertado;\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ExportarXMLFormulario\n	Exporta las especificaciones de un formulario a una cadena XML valida dentro de un archivo especificado\n\n	Variables de entrada:\n\n		formulario - Identificador unico del formulario que se desea exportar\n		tipo_copia_objeto - Indica el tipo de copia que se hara del formulario: EnLinea|XML_IdEstatico|XML_IdDinamico\n\n	Salida:\n\n		Archivo con el elemento exportado\n\n	Ver tambien:\n		<PCO_AdministrarFormularios>\n*/\nfunction PCO_ExportarXMLFormulario($formulario,$tipo_copia_objeto,$PCO_NombreArchivoXML=\"\")\n    {\n        global $ArchivoCORE,$ListaCamposSinID_evento_objeto,$_SeparadorCampos_,$TablasCore,$ListaCamposSinID_menu,$ListaCamposSinID_formulario,$ConexionPDO,$ListaCamposSinID_formulario_objeto,$ListaCamposSinID_formulario_boton;\n        global $MULTILANG_ErrorDatos,$MULTILANG_ErrorTiempoEjecucion,$MULTILANG_FrmMsjCopia,$MULTILANG_FrmTipoCopiaExporta,$MULTILANG_FrmCopiaFinalizada,$MULTILANG_IrEscritorio,$MULTILANG_Descargar;\n        global $PCO_VersionActual,$Nombre_Aplicacion,$Version_Aplicacion,$PCOSESS_LoginUsuario,$PCO_FechaOperacionGuiones,$PCO_HoraOperacionPuntos,$PCO_FechaOperacion,$PCO_HoraOperacion;\n        global $MULTILANG_Editar,$MULTILANG_Objeto;\n\n			$mensaje_error=\"\";\n			if ($formulario==\"\")\n				$mensaje_error=$MULTILANG_ErrorTiempoEjecucion.\".  No ingreso ID de Formulario / Form ID not entered\";\n			if ($tipo_copia_objeto==\"\")\n				$mensaje_error=$MULTILANG_ErrorTiempoEjecucion.\".  No indicado modo de copia / Copy mode not entered\";\n\n			$Contenido_XML=\"\";\n\n			if ($mensaje_error==\"\")\n				{\n					//Hace la copia del objeto segun el tipo solicitado\n					if ($tipo_copia_objeto==\"EnLinea\")\n						{\n							// Busca datos y Crea copia del formulario\n							$consulta=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_formulario.\" FROM \".$TablasCore.\"formulario WHERE id=?\",\"$formulario\");\n							$registro = $consulta->fetch();\n							// Establece valores para cada campo a insertar en el nuevo form\n							/* ##########################################################################################################*/\n							/* ####### IMPORTANTE:  Ajustes sobre esta funcionde copia se deberian replicar en importaciones XML ########*/\n							/* ##########################################################################################################*/\n							$titulo=\'[COPIA] \'.$registro[\"titulo\"];\n							$ayuda_titulo=$registro[\"ayuda_titulo\"];\n							$ayuda_texto=$registro[\"ayuda_texto\"];\n							$tabla_datos=$registro[\"tabla_datos\"];\n							$columnas=$registro[\"columnas\"];\n							$javascript=$registro[\"javascript\"];\n							$borde_visible=$registro[\"borde_visible\"];\n							$estilo_pestanas=$registro[\"estilo_pestanas\"];\n							$id_html=$registro[\"id_html\"];\n							$tipo_maquetacion=$registro[\"tipo_maquetacion\"];\n							$css_columnas=$registro[\"css_columnas\"];\n							$estilo_ventana=$registro[\"estilo_ventana\"];\n							$pre_script=$registro[\"pre_script\"];\n							$post_script=$registro[\"post_script\"];\n							$modulo=$registro[\"modulo\"];\n							// Inserta el nuevo objeto al form\n							PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"formulario (\".$ListaCamposSinID_formulario.\") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) \",\"$titulo$_SeparadorCampos_$ayuda_titulo$_SeparadorCampos_$ayuda_texto$_SeparadorCampos_$tabla_datos$_SeparadorCampos_$columnas$_SeparadorCampos_$javascript$_SeparadorCampos_$borde_visible$_SeparadorCampos_$estilo_pestanas$_SeparadorCampos_$id_html$_SeparadorCampos_$tipo_maquetacion$_SeparadorCampos_$css_columnas$_SeparadorCampos_$estilo_ventana$_SeparadorCampos_$pre_script$_SeparadorCampos_$post_script$_SeparadorCampos_$modulo\");\n							$idObjetoInsertado=PCO_ObtenerUltimoIDInsertado($ConexionPDO);\n\n							// Busca los elementos que componen el formulario para hacerles la copia\n							//Determina cuantos campos tiene la tabla\n							$ArregloCampos=explode(\',\',$ListaCamposSinID_formulario_objeto);\n							$TotalCampos=count($ArregloCampos);\n							// Registros de formulario_objeto\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"formulario_objeto WHERE formulario=? ORDER by peso,id\",\"$formulario\");\n							while($registro = $consulta->fetch())\n								{\n									//Genera cadena de interrogantes y valores segun cantidad de campos\n									$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n									$CadenaValores=$registro[1];\n									for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n										{\n											//Cadena de interrogantes\n											$CadenaInterrogantes.=\',?\';\n											//Cadena de valores (el campo No 5 corresponde al ID de formulario nuevo)\n											if ($PCOCampo!=5)\n												$CadenaValores.=$_SeparadorCampos_.$registro[$PCOCampo+1];\n											else\n												$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n										}\n									//Inserta el nuevo objeto al form\n									PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"formulario_objeto ($ListaCamposSinID_formulario_objeto) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n\n									//Por cada elemento busca si tiene eventos y los copia tambien\n									$idObjetoInsertadoParaEvento=PCO_ObtenerUltimoIDInsertado($ConexionPDO);\n									$ArregloCamposEvento=explode(\',\',$ListaCamposSinID_evento_objeto);\n							        $TotalCamposEvento=count($ArregloCamposEvento);\n        							$consulta_eventos=PCO_EjecutarSQL(\"SELECT \".$TablasCore.\"evento_objeto.* FROM \".$TablasCore.\"evento_objeto WHERE \".$TablasCore.\"evento_objeto.objeto=? \",$registro[\"id\"]);\n        							while($registro_eventos = $consulta_eventos->fetch())\n        								{\n        									//Genera cadena de interrogantes y valores segun cantidad de campos\n        									$CadenaInterrogantesEventos=\'?\'; //Agrega el primer interrogante\n        									$CadenaValoresEventos=$idObjetoInsertadoParaEvento;\n        									for ($PCOCampoEvento=1;$PCOCampoEvento<$TotalCamposEvento;$PCOCampoEvento++)\n        										{\n        											//Cadena de interrogantes\n        											$CadenaInterrogantesEventos.=\',?\';\n        											//Cadena de valores (el campo No 1 corresponde al ID de objeto nuevo)\n        											$CadenaValoresEventos.=$_SeparadorCampos_.$registro_eventos[$PCOCampoEvento+1];\n        										}\n        									//Inserta el nuevo objeto al form\n        									PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"evento_objeto ($ListaCamposSinID_evento_objeto) VALUES ($CadenaInterrogantesEventos) \",\"$CadenaValoresEventos\");\n        								}\n								}\n\n							//Determina cuantos campos tiene la tabla\n							$ArregloCampos=explode(\',\',$ListaCamposSinID_formulario_boton);\n							$TotalCampos=count($ArregloCampos);\n							// Registros de formulario_boton\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"formulario_boton WHERE formulario=? ORDER BY peso,id\",\"$formulario\");\n							while($registro = $consulta->fetch())\n								{\n									//Genera cadena de interrogantes y valores segun cantidad de campos\n									$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n									$CadenaValores=$registro[1];\n									for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n										{\n											//Cadena de interrogantes\n											$CadenaInterrogantes.=\',?\';\n											//Cadena de valores (el campo No 2 corresponde al ID de formulario nuevo)\n											if ($PCOCampo!=2)\n												$CadenaValores.=$_SeparadorCampos_.$registro[$PCOCampo+1];\n											else\n												$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n										}\n									//Inserta el nuevo objeto al form\n									PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"formulario_boton ($ListaCamposSinID_formulario_boton) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n								}\n\n\n							//Determina cuantos campos tiene la tabla\n							$ArregloCampos=explode(\',\',$ListaCamposSinID_menu);\n							$TotalCampos=count($ArregloCampos);\n							// Registros de formulario_boton\n							//$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"menu WHERE formulario_vinculado=? AND padre=0 ORDER BY peso,id\",\"$formulario\");\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"menu WHERE formulario_vinculado=? ORDER BY peso,id\",\"$formulario\");\n							while($registro = $consulta->fetch())\n								{\n									//Genera cadena de interrogantes y valores segun cantidad de campos\n									$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n									$CadenaValores=$registro[1];\n									for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n										{\n											//Cadena de interrogantes\n											$CadenaInterrogantes.=\',?\';\n											//Cadena de valores (el campo No 16 corresponde al ID de formulario nuevo)\n											if ($PCOCampo!=16)\n												$CadenaValores.=$_SeparadorCampos_.$registro[$PCOCampo+1];\n											else\n												$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n										}\n									//Inserta los menues correspondientes al form\n									PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"menu ($ListaCamposSinID_menu) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n								}\n\n\n							PCO_Auditar(\"Crea copia $tipo_copia_objeto de formulario $formulario\");\n\n							//Presenta la ventana con informacion y enlace de descarga\n							?>\n								<form action=\"<?php echo $ArchivoCORE; ?>\" method=\"POST\" name=\"det<?php echo $idObjetoInsertado; ?>\" id=\"det<?php echo $idObjetoInsertado; ?>\">\n										<input type=\"hidden\" name=\"PCO_Accion\" value=\"PCO_EditarFormulario\">\n										<input type=\"Hidden\" name=\"popup_activo\" value=\"\">\n										<input type=\"hidden\" name=\"formulario\" value=\"<?php echo $idObjetoInsertado; ?>\">\n										<input type=\"hidden\" name=\"nombre_tabla\" value=\"<?php echo $tabla_datos; ?>\">\n								        <a class=\"btn btn-success btn-block\" href=\"javascript:document.det<?php echo $idObjetoInsertado; ?>.submit();\"><i class=\"fa fa-pencil\"></i> <?php echo $MULTILANG_Editar.\" <b>\".$titulo.\"</b>\"; ?></a>\n								</form>\n							<?php\n						}\n\n					//Hace la copia del objeto segun el tipo solicitado\n					if ($tipo_copia_objeto==\"XML_IdEstatico\" || $tipo_copia_objeto==\"XML_IdDinamico\")\n						{\n							// Inicia el archivo XML\n							$Contenido_XML.=\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\" ?>\n<objetos_practicos>\n	<descripcion>\n		<tipo_objeto>Formulario</tipo_objeto>\n		<version_practico>$PCO_VersionActual</version_practico>\n		<tipo_exportacion>$tipo_copia_objeto</tipo_exportacion>\n		<sistema_origen>$Nombre_Aplicacion</sistema_origen>\n		<version>$Version_Aplicacion</version>\n		<usuario_generador>$PCOSESS_LoginUsuario</usuario_generador>\n		<fecha_exportacion>$PCO_FechaOperacionGuiones</fecha_exportacion>\n		<hora_exportacion>$PCO_HoraOperacionPuntos</hora_exportacion>\n	</descripcion>\";\n							// Exporta tabla core_formulario\n							$Contenido_XML .= \"\n	<core_formulario>\";\n							// Busca datos y genera XML de cada registro\n							$consulta=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_formulario.\" FROM \".$TablasCore.\"formulario WHERE id=?\",\"$formulario\");\n							$registro = $consulta->fetch();\n							$Contenido_XML .=PCO_ConvertirRegistroXML($registro,\"id,\".$ListaCamposSinID_formulario);\n							$Contenido_XML .= \"\n	</core_formulario>\";\n							// Registros de formulario_objeto\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"formulario_objeto WHERE formulario=? ORDER BY peso,id\",\"$formulario\");\n							$conteo_elementos_xml=0;\n							while($registro = $consulta->fetch())\n								{\n									//Exporta la tabla de core_formulario_objeto\n									$Contenido_XML .= \"\n	<core_formulario_objeto>\";\n									$Contenido_XML .=PCO_ConvertirRegistroXML($registro,\"id,\".$ListaCamposSinID_formulario_objeto);\n							$Contenido_XML .= \"\n	</core_formulario_objeto>\";\n									$conteo_elementos_xml++;\n								}\n							//Agrega el total de elementos y resetea contador para el siguiente\n									$Contenido_XML .= \"\n	<total_core_formulario_objeto><cantidad_objetos>$conteo_elementos_xml</cantidad_objetos></total_core_formulario_objeto>\";\n							$conteo_elementos_xml=0;\n\n							// Registros de eventos por formulario_objeto\n							$consulta=PCO_EjecutarSQL(\"SELECT \".$TablasCore.\"evento_objeto.* FROM \".$TablasCore.\"evento_objeto,\".$TablasCore.\"formulario_objeto WHERE \".$TablasCore.\"formulario_objeto.id=\".$TablasCore.\"evento_objeto.objeto  AND \".$TablasCore.\"formulario_objeto.formulario=?\",\"$formulario\");\n							$conteo_elementos_xml=0;\n							while($registro = $consulta->fetch())\n								{\n									//Exporta la tabla de core_formulario_objeto\n									$Contenido_XML .= \"\n	<core_evento_objeto>\";\n									$Contenido_XML .=PCO_ConvertirRegistroXML($registro,\"id,\".$ListaCamposSinID_evento_objeto);\n							$Contenido_XML .= \"\n	</core_evento_objeto>\";\n									$conteo_elementos_xml++;\n								}\n							//Agrega el total de elementos y resetea contador para el siguiente\n									$Contenido_XML .= \"\n	<total_core_evento_objeto><cantidad_objetos>$conteo_elementos_xml</cantidad_objetos></total_core_evento_objeto>\";\n							$conteo_elementos_xml=0;\n\n							// Registros de formulario_boton\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"formulario_boton WHERE formulario=? ORDER BY peso,id\",\"$formulario\");\n							while($registro = $consulta->fetch())\n								{\n									//Exporta la tabla de core_formulario_objeto\n									$Contenido_XML .= \"\n	<core_formulario_boton>\";\n									$Contenido_XML .=PCO_ConvertirRegistroXML($registro,\"id,\".$ListaCamposSinID_formulario_boton);\n							$Contenido_XML .= \"\n	</core_formulario_boton>\";\n									$conteo_elementos_xml++;\n								}\n							//Agrega el total de elementos y resetea contador para el siguiente\n									$Contenido_XML .= \"\n	<total_core_formulario_boton><cantidad_objetos>$conteo_elementos_xml</cantidad_objetos></total_core_formulario_boton>\";\n							$conteo_elementos_xml=0;\n\n							// Registros de menu\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"menu WHERE formulario_vinculado=? ORDER BY peso,id\",\"$formulario\");\n							while($registro = $consulta->fetch())\n								{\n									//Exporta la tabla de core_menu\n									$Contenido_XML .= \"\n	<core_menu>\";\n									$Contenido_XML .=PCO_ConvertirRegistroXML($registro,\"id,\".$ListaCamposSinID_menu);\n							$Contenido_XML .= \"\n	</core_menu>\";\n									$conteo_elementos_xml++;\n								}\n							//Agrega el total de elementos y resetea contador para el siguiente\n									$Contenido_XML .= \"\n	<total_core_menu><cantidad_objetos>$conteo_elementos_xml</cantidad_objetos></total_core_menu>\";\n							$conteo_elementos_xml=0;\n\n							// Finaliza el archivo XML\n							$Contenido_XML .= \"\n</objetos_practicos>\";\n\n							PCO_Auditar(\"Crea copia $tipo_copia_objeto de formulario $formulario\");\n\n							//Guarda la cadena generada en el archivo XML\n							if ($PCO_NombreArchivoXML==\"\")\n        						$PCO_NombreArchivoXML=\"tmp/FormID_\".$formulario.\"_\".$PCO_FechaOperacion.\"_\".$PCO_HoraOperacion.\".xml\";\n							$PCO_PunteroArchivo = fopen($PCO_NombreArchivoXML, \"w\");\n							if($PCO_PunteroArchivo==false)\n								die(\"No se puede abrir el archivo de exportacion\");\n							fputs ($PCO_PunteroArchivo, $Contenido_XML);\n							fclose ($PCO_PunteroArchivo);\n\n							//Presenta la ventana con informacion y enlace de descarga\n							?>\n								<a class=\"btn btn-success btn-block\" href=\"<?php echo $PCO_NombreArchivoXML; ?>\" target=\"_BLANK\" download><i class=\"fa fa-floppy-o\"></i> <?php echo $MULTILANG_Descargar.\" \".$PCO_NombreArchivoXML; ?></a>\n							<?php\n						}\n				}\n			else\n				{\n					echo \'<form name=\"cancelar\" action=\"\'.$ArchivoCORE.\'\" method=\"POST\">\n						<input type=\"Hidden\" name=\"PCO_Accion\" value=\"PCO_AdministrarFormularios\">\n						<input type=\"Hidden\" name=\"PCO_ErrorTitulo\" value=\"\'.$MULTILANG_ErrorDatos.\'\">\n						<input type=\"Hidden\" name=\"PCO_ErrorDescripcion\" value=\"\'.$mensaje_error.\'\">\n						</form>\n						<script type=\"\" language=\"JavaScript\"> document.cancelar.submit();  </script>\';\n				}\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ImportarXMLInforme\n	Importa una cadena XML con la especificacion de un informe al sistema\n\n	Variables de entrada:\n\n		xml_importado - Cadena en notacion XML con todos los componentes necesarios del informe Formato: SimpleXMLElement\n\n	Salida:\n\n		Objetos generados a partir de la definicion de la cadena\n*/\nfunction PCO_ImportarXMLInforme($xml_importado)\n    {\n        global $_SeparadorCampos_,$TablasCore,$ListaCamposSinID_informe,$ConexionPDO,$ListaCamposSinID_informe_condiciones,$ListaCamposSinID_informe_tablas,$ListaCamposSinID_informe_campos,$ListaCamposSinID_informe_boton;\n        $xml_importado = @simplexml_load_string($xml_importado); // Usa SimpleXML Directamente para interpretar cadena\n				//Si es tipo estatico elimina el informe existente con el mismo ID\n				$ListaCamposParaID=\"\";\n				$InterroganteParaID=\"\";\n				$ValorInsercionParaID=\"\";\n				if ($xml_importado->descripcion[0]->tipo_exportacion==\"XML_IdEstatico\")\n					{\n						$ListaCamposParaID=\"id,\";\n						$InterroganteParaID=\"?,\";\n						$ValorInsercionParaID=base64_decode($xml_importado->core_informe[0]->id).$_SeparadorCampos_;\n						PCOFUNC_EliminarInforme(base64_decode($xml_importado->core_informe[0]->id));\n					}\n\n				// Establece valores para cada campo a insertar en el nuevo informe\n				/* ##########################################################################################################*/\n				/* ####### IMPORTANTE: Ajustes sobre esta funcion se deberian replicar en funcion de copia asociadas ########*/\n				/* ##########################################################################################################*/\n				$titulo=base64_decode($xml_importado->core_informe[0]->titulo);\n				$descripcion=base64_decode($xml_importado->core_informe[0]->descripcion);\n				$categoria=base64_decode($xml_importado->core_informe[0]->categoria);\n				$agrupamiento=base64_decode($xml_importado->core_informe[0]->agrupamiento);\n				$ordenamiento=base64_decode($xml_importado->core_informe[0]->ordenamiento);\n				$ancho=base64_decode($xml_importado->core_informe[0]->ancho);\n				$alto=base64_decode($xml_importado->core_informe[0]->alto);\n				$formato_final=base64_decode($xml_importado->core_informe[0]->formato_final);\n				$formato_grafico=base64_decode($xml_importado->core_informe[0]->formato_grafico);\n				$genera_pdf=base64_decode($xml_importado->core_informe[0]->genera_pdf);\n				$variables_filtro=base64_decode($xml_importado->core_informe[0]->variables_filtro);\n				$soporte_datatable=base64_decode($xml_importado->core_informe[0]->soporte_datatable);\n				$formulario_filtrado=base64_decode($xml_importado->core_informe[0]->formulario_filtrado);\n				$tamano_paginacion=base64_decode($xml_importado->core_informe[0]->tamano_paginacion);\n				$subtotales_columna=base64_decode($xml_importado->core_informe[0]->subtotales_columna);\n				$subtotales_formato=base64_decode($xml_importado->core_informe[0]->subtotales_formato);\n				$conexion_origen_datos=base64_decode($xml_importado->core_informe[0]->conexion_origen_datos);\n				$consulta_sql=base64_decode($xml_importado->core_informe[0]->consulta_sql);\n				$tooltip_titulo=base64_decode($xml_importado->core_informe[0]->tooltip_titulo);\n				$exportar_dtclp=base64_decode($xml_importado->core_informe[0]->exportar_dtclp);\n				$exportar_dtcsv=base64_decode($xml_importado->core_informe[0]->exportar_dtcsv);\n				$exportar_dtxls=base64_decode($xml_importado->core_informe[0]->exportar_dtxls);\n				$exportar_dtpdf=base64_decode($xml_importado->core_informe[0]->exportar_dtpdf);\n				$ocultar_encabezado=base64_decode($xml_importado->core_informe[0]->ocultar_encabezado);\n				$ocultar_piepagina=base64_decode($xml_importado->core_informe[0]->ocultar_piepagina);\n				$anular_acciones=base64_decode($xml_importado->core_informe[0]->anular_acciones);\n				$encabezado_html=base64_decode($xml_importado->core_informe[0]->encabezado_html);\n				$tabla_responsive=base64_decode($xml_importado->core_informe[0]->tabla_responsive);\n				$permitido_home=base64_decode($xml_importado->core_informe[0]->permitido_home);\n				$javascript=base64_decode($xml_importado->core_informe[0]->javascript);\n				$pre_script=base64_decode($xml_importado->core_informe[0]->pre_script);\n				$post_script=base64_decode($xml_importado->core_informe[0]->post_script);\n				$usar_ajax=base64_decode($xml_importado->core_informe[0]->usar_ajax);\n				$definir_cols=base64_decode($xml_importado->core_informe[0]->definir_cols);\n				$pane_activado=base64_decode($xml_importado->core_informe[0]->pane_activado);\n				$pane_cascada=base64_decode($xml_importado->core_informe[0]->pane_cascada);\n				$pane_colapsado=base64_decode($xml_importado->core_informe[0]->pane_colapsado);\n				$pane_columnas=base64_decode($xml_importado->core_informe[0]->pane_columnas);\n				$pane_subtotalesrelativos=base64_decode($xml_importado->core_informe[0]->pane_subtotalesrelativos);\n				$pane_conteos=base64_decode($xml_importado->core_informe[0]->pane_conteos);\n				$pane_controles=base64_decode($xml_importado->core_informe[0]->pane_controles);\n				$pane_control_colapsar=base64_decode($xml_importado->core_informe[0]->pane_control_colapsar);\n				$pane_control_ordenar=base64_decode($xml_importado->core_informe[0]->pane_control_ordenar);\n				$modulo=base64_decode($xml_importado->core_informe[0]->modulo);\n\n				// Inserta el nuevo informe\n				PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"informe (\".$ListaCamposParaID.$ListaCamposSinID_informe.\") VALUES (\".$InterroganteParaID.\"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) \",\"$ValorInsercionParaID$titulo$_SeparadorCampos_$descripcion$_SeparadorCampos_$categoria$_SeparadorCampos_$agrupamiento$_SeparadorCampos_$ordenamiento$_SeparadorCampos_$ancho$_SeparadorCampos_$alto$_SeparadorCampos_$formato_final$_SeparadorCampos_$formato_grafico$_SeparadorCampos_$genera_pdf$_SeparadorCampos_$variables_filtro$_SeparadorCampos_$soporte_datatable$_SeparadorCampos_$formulario_filtrado$_SeparadorCampos_$tamano_paginacion$_SeparadorCampos_$subtotales_columna$_SeparadorCampos_$subtotales_formato$_SeparadorCampos_$conexion_origen_datos$_SeparadorCampos_$consulta_sql$_SeparadorCampos_$tooltip_titulo$_SeparadorCampos_$exportar_dtclp$_SeparadorCampos_$exportar_dtcsv$_SeparadorCampos_$exportar_dtxls$_SeparadorCampos_$exportar_dtpdf$_SeparadorCampos_$ocultar_encabezado$_SeparadorCampos_$ocultar_piepagina$_SeparadorCampos_$anular_acciones$_SeparadorCampos_$encabezado_html$_SeparadorCampos_$tabla_responsive$_SeparadorCampos_$permitido_home$_SeparadorCampos_$javascript$_SeparadorCampos_$pre_script$_SeparadorCampos_$post_script$_SeparadorCampos_$usar_ajax$_SeparadorCampos_$definir_cols$_SeparadorCampos_$pane_activado$_SeparadorCampos_$pane_cascada$_SeparadorCampos_$pane_colapsado$_SeparadorCampos_$pane_columnas$_SeparadorCampos_$pane_subtotalesrelativos$_SeparadorCampos_$pane_conteos$_SeparadorCampos_$pane_controles$_SeparadorCampos_$pane_control_colapsar$_SeparadorCampos_$pane_control_ordenar$_SeparadorCampos_$modulo\");\n\n				//Determina el ID del registro\n				if ($xml_importado->descripcion[0]->tipo_exportacion==\"XML_IdEstatico\")\n					$idObjetoInsertado=base64_decode($xml_importado->core_informe[0]->id);\n				else\n					$idObjetoInsertado=PCO_ObtenerUltimoIDInsertado($ConexionPDO);\n\n				// Busca los elementos que componen el informe para hacerles la copia\n				//Determina cuantos campos tiene la tabla\n				$ArregloCampos=explode(\',\',$ListaCamposSinID_informe_condiciones);\n				$TotalCampos=count($ArregloCampos);\n				// Registros de informe_condiciones\n				for ($PCO_i=0;$PCO_i<$xml_importado->total_core_informe_condiciones[0]->cantidad_objetos;$PCO_i++)\n					{\n						//Genera cadena de interrogantes y valores segun cantidad de campos\n						$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n						$CadenaValores=$idObjetoInsertado;\n\n						for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n							{\n								//Cadena de interrogantes\n								$CadenaInterrogantes.=\',?\';\n								//Cadena de valores (el campo No 0 corresponde al ID de informe nuevo)\n								if ($PCOCampo!=0)\n									$CadenaValores.=$_SeparadorCampos_.base64_decode($xml_importado->core_informe_condiciones[$PCO_i]->{$ArregloCampos[$PCOCampo]});\n								else\n									$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n							}\n						//Inserta el nuevo objeto al informe\n						PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"informe_condiciones ($ListaCamposSinID_informe_condiciones) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n					}\n\n				//Determina cuantos campos tiene la tabla\n				$ArregloCampos=explode(\',\',$ListaCamposSinID_informe_tablas);\n				$TotalCampos=count($ArregloCampos);\n				// Registros de informe_tablas\n				for ($PCO_i=0;$PCO_i<$xml_importado->total_core_informe_tablas[0]->cantidad_objetos;$PCO_i++)\n					{\n						//Genera cadena de interrogantes y valores segun cantidad de campos\n						$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n						$CadenaValores=$idObjetoInsertado;\n\n						for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n							{\n								//Cadena de interrogantes\n								$CadenaInterrogantes.=\',?\';\n								//Cadena de valores (el campo No 0 corresponde al ID de informe nuevo)\n								if ($PCOCampo!=0)\n									$CadenaValores.=$_SeparadorCampos_.base64_decode($xml_importado->core_informe_tablas[$PCO_i]->{$ArregloCampos[$PCOCampo]});\n								else\n									$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n							}\n						//Inserta el nuevo objeto al informe\n						PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"informe_tablas ($ListaCamposSinID_informe_tablas) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n					}\n\n				//Determina cuantos campos tiene la tabla\n				$ArregloCampos=explode(\',\',$ListaCamposSinID_informe_campos);\n				$TotalCampos=count($ArregloCampos);\n				// Registros de informe_campos\n				for ($PCO_i=0;$PCO_i<$xml_importado->total_core_informe_campos[0]->cantidad_objetos;$PCO_i++)\n					{\n						//Genera cadena de interrogantes y valores segun cantidad de campos\n						$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n						$CadenaValores=$idObjetoInsertado;\n\n						for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n							{\n								//Cadena de interrogantes\n								$CadenaInterrogantes.=\',?\';\n								//Cadena de valores (el campo No 0 corresponde al ID de informe nuevo)\n								if ($PCOCampo!=0)\n									$CadenaValores.=$_SeparadorCampos_.base64_decode($xml_importado->core_informe_campos[$PCO_i]->{$ArregloCampos[$PCOCampo]});\n								else\n									$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n							}\n						//Inserta el nuevo objeto al informe\n						PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"informe_campos ($ListaCamposSinID_informe_campos) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n					}\n\n				//Determina cuantos campos tiene la tabla\n				$ArregloCampos=explode(\',\',$ListaCamposSinID_informe_boton);\n				$TotalCampos=count($ArregloCampos);\n				// Registros de informe_boton\n				for ($PCO_i=0;$PCO_i<$xml_importado->total_core_informe_boton[0]->cantidad_objetos;$PCO_i++)\n					{\n						//Genera cadena de interrogantes y valores segun cantidad de campos\n						$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n						$CadenaValores=base64_decode($xml_importado->core_informe_boton[$PCO_i]->titulo);\n\n						for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n							{\n								//Cadena de interrogantes\n								$CadenaInterrogantes.=\',?\';\n								//Cadena de valores (el campo No 0 corresponde al ID de informe nuevo)\n								if ($PCOCampo!=2)\n									$CadenaValores.=$_SeparadorCampos_.base64_decode($xml_importado->core_informe_boton[$PCO_i]->{$ArregloCampos[$PCOCampo]});\n								else\n									$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n							}\n						//Inserta el nuevo objeto al informe\n						PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"informe_boton ($ListaCamposSinID_informe_boton) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n					}\n        return $idObjetoInsertado;\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ExportarXMLInforme\n	Exporta las especificaciones de un informe a una cadena XML valida dentro de un archivo especificado\n\n	Variables de entrada:\n\n		informe - Identificador unico del informe que se desea exportar\n		tipo_copia_objeto - Indica el tipo de copia que se hara del informe: EnLinea|XML_IdEstatico|XML_IdDinamico\n\n	Salida:\n\n		Archivo con el elemento exportado\n\n	Ver tambien:\n		<PCO_AdministrarFormularios>\n*/\nfunction PCO_ExportarXMLInforme($informe,$tipo_copia_objeto,$PCO_NombreArchivoXML=\"\")\n    {\n        global $ArchivoCORE,$ListaCamposSinID_evento_objeto,$_SeparadorCampos_,$TablasCore,$ListaCamposSinID_formulario,$ConexionPDO,$ListaCamposSinID_formulario_objeto,$ListaCamposSinID_formulario_boton;\n        global $MULTILANG_ErrorDatos,$MULTILANG_ErrorTiempoEjecucion,$MULTILANG_FrmMsjCopia,$MULTILANG_FrmTipoCopiaExporta,$MULTILANG_FrmCopiaFinalizada,$MULTILANG_IrEscritorio,$MULTILANG_Descargar;\n        global $PCO_VersionActual,$Nombre_Aplicacion,$Version_Aplicacion,$PCOSESS_LoginUsuario,$PCO_FechaOperacionGuiones,$PCO_HoraOperacionPuntos,$PCO_FechaOperacion,$PCO_HoraOperacion;\n        global $ListaCamposSinID_informe,$ListaCamposSinID_informe_condiciones,$ListaCamposSinID_informe_tablas,$ListaCamposSinID_informe_campos,$ListaCamposSinID_informe_boton;\n\n\n			$mensaje_error=\"\";\n			if ($informe==\"\")\n				$mensaje_error=$MULTILANG_ErrorTiempoEjecucion.\".  No ingreso ID de Informe - Report ID not entered\";\n			if ($tipo_copia_objeto==\"\")\n				$mensaje_error=$MULTILANG_ErrorTiempoEjecucion.\".  No indicado modo de copia - Copy mode not entered\";\n\n			$Contenido_XML=\"\";\n\n			if ($mensaje_error==\"\")\n				{\n					//Hace la copia del objeto segun el tipo solicitado\n					if ($tipo_copia_objeto==\"EnLinea\")\n						{\n							// Busca datos y Crea copia del informe\n							$consulta=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe.\" FROM \".$TablasCore.\"informe WHERE id=?\",\"$informe\");\n							$registro = $consulta->fetch();\n							// Establece valores para cada campo a insertar en el nuevo informe\n							/* ##########################################################################################################*/\n							/* ####### IMPORTANTE:  Ajustes sobre esta funcionde copia se deberian replicar en importaciones XML ########*/\n							/* ##########################################################################################################*/\n							$titulo=\'[COPIA] \'.$registro[\"titulo\"];\n							$descripcion=$registro[\"descripcion\"];\n							$categoria=$registro[\"categoria\"];\n							$agrupamiento=$registro[\"agrupamiento\"];\n							$ordenamiento=$registro[\"ordenamiento\"];\n							$ancho=$registro[\"ancho\"];\n							$alto=$registro[\"alto\"];\n							$formato_final=$registro[\"formato_final\"];\n							$formato_grafico=$registro[\"formato_grafico\"];\n							$genera_pdf=$registro[\"genera_pdf\"];\n							$variables_filtro=$registro[\"variables_filtro\"];\n							$soporte_datatable=$registro[\"soporte_datatable\"];\n							$formulario_filtrado=$registro[\"formulario_filtrado\"];\n							$tamano_paginacion=$registro[\"tamano_paginacion\"];\n							$subtotales_columna=$registro[\"subtotales_columna\"];\n							$subtotales_formato=$registro[\"subtotales_formato\"];\n							$conexion_origen_datos=$registro[\"conexion_origen_datos\"];\n							$consulta_sql=$registro[\"consulta_sql\"];\n							$tooltip_titulo=$registro[\"tooltip_titulo\"];\n							$exportar_dtclp=$registro[\"exportar_dtclp\"];\n							$exportar_dtcsv=$registro[\"exportar_dtcsv\"];\n							$exportar_dtxls=$registro[\"exportar_dtxls\"];\n							$exportar_dtpdf=$registro[\"exportar_dtpdf\"];\n							$ocultar_encabezado=$registro[\"ocultar_encabezado\"];\n							$ocultar_piepagina=$registro[\"ocultar_piepagina\"];\n							$anular_acciones=$registro[\"anular_acciones\"];\n							$encabezado_html=$registro[\"encabezado_html\"];\n							$tabla_responsive=$registro[\"tabla_responsive\"];\n							$permitido_home=$registro[\"permitido_home\"];\n							$javascript=$registro[\"javascript\"];\n							$pre_script=$registro[\"pre_script\"];\n							$post_script=$registro[\"post_script\"];\n							$usar_ajax=$registro[\"usar_ajax\"];\n							$definir_cols=$registro[\"definir_cols\"];\n							$pane_activado=$registro[\"pane_activado\"];\n							$pane_cascada=$registro[\"pane_cascada\"];\n							$pane_colapsado=$registro[\"pane_colapsado\"];\n							$pane_columnas=$registro[\"pane_columnas\"];\n							$pane_subtotalesrelativos=$registro[\"pane_subtotalesrelativos\"];\n							$pane_conteos=$registro[\"pane_conteos\"];\n							$pane_controles=$registro[\"pane_controles\"];\n							$pane_control_colapsar=$registro[\"pane_control_colapsar\"];\n							$pane_control_ordenar=$registro[\"pane_control_ordenar\"];\n							$modulo=$registro[\"modulo\"];\n\n							// Inserta el nuevo informe\n							PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"informe (\".$ListaCamposSinID_informe.\") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) \",\"$titulo$_SeparadorCampos_$descripcion$_SeparadorCampos_$categoria$_SeparadorCampos_$agrupamiento$_SeparadorCampos_$ordenamiento$_SeparadorCampos_$ancho$_SeparadorCampos_$alto$_SeparadorCampos_$formato_final$_SeparadorCampos_$formato_grafico$_SeparadorCampos_$genera_pdf$_SeparadorCampos_$variables_filtro$_SeparadorCampos_$soporte_datatable$_SeparadorCampos_$formulario_filtrado$_SeparadorCampos_$tamano_paginacion$_SeparadorCampos_$subtotales_columna$_SeparadorCampos_$subtotales_formato$_SeparadorCampos_$conexion_origen_datos$_SeparadorCampos_$consulta_sql$_SeparadorCampos_$tooltip_titulo$_SeparadorCampos_$exportar_dtclp$_SeparadorCampos_$exportar_dtcsv$_SeparadorCampos_$exportar_dtxls$_SeparadorCampos_$exportar_dtpdf$_SeparadorCampos_$ocultar_encabezado$_SeparadorCampos_$ocultar_piepagina$_SeparadorCampos_$anular_acciones$_SeparadorCampos_$encabezado_html$_SeparadorCampos_$tabla_responsive$_SeparadorCampos_$permitido_home$_SeparadorCampos_$javascript$_SeparadorCampos_$pre_script$_SeparadorCampos_$post_script$_SeparadorCampos_$usar_ajax$_SeparadorCampos_$definir_cols$_SeparadorCampos_$pane_activado$_SeparadorCampos_$pane_cascada$_SeparadorCampos_$pane_colapsado$_SeparadorCampos_$pane_columnas$_SeparadorCampos_$pane_subtotalesrelativos$_SeparadorCampos_$pane_conteos$_SeparadorCampos_$pane_controles$_SeparadorCampos_$pane_control_colapsar$_SeparadorCampos_$pane_control_ordenar$_SeparadorCampos_$modulo\");\n\n							$idObjetoInsertado=PCO_ObtenerUltimoIDInsertado($ConexionPDO);\n\n							// Busca los elementos que componen el informe para hacerles la copia\n							//Determina cuantos condiciones tiene la tabla\n							$ArregloCampos=explode(\',\',$ListaCamposSinID_informe_condiciones);\n							$TotalCampos=count($ArregloCampos);\n							// Registros de informe_condiciones\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"informe_condiciones WHERE informe=? ORDER BY peso,id\",\"$informe\");\n							while($registro = $consulta->fetch())\n								{\n									//Genera cadena de interrogantes y valores segun cantidad de campos\n									$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n									$CadenaValores=$idObjetoInsertado;\n									for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n										{\n											//Cadena de interrogantes\n											$CadenaInterrogantes.=\',?\';\n											//Cadena de valores (el campo No 0 corresponde al ID de informe nuevo)\n											if ($PCOCampo!=0)\n												$CadenaValores.=$_SeparadorCampos_.$registro[$PCOCampo+1];\n											else\n												$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n										}\n									//Inserta el nuevo objeto al informe\n									PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"informe_condiciones ($ListaCamposSinID_informe_condiciones) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n								}\n\n							//Determina cuantos tablas tiene la tabla\n							$ArregloCampos=explode(\',\',$ListaCamposSinID_informe_tablas);\n							$TotalCampos=count($ArregloCampos);\n							// Registros de informe_tablas\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"informe_tablas WHERE informe=? \",\"$informe\");\n							while($registro = $consulta->fetch())\n								{\n									//Genera cadena de interrogantes y valores segun cantidad de campos\n									$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n									$CadenaValores=$idObjetoInsertado;\n									for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n										{\n											//Cadena de interrogantes\n											$CadenaInterrogantes.=\',?\';\n											//Cadena de valores (el campo No 0 corresponde al ID de informe nuevo)\n											if ($PCOCampo!=0)\n												$CadenaValores.=$_SeparadorCampos_.$registro[$PCOCampo+1];\n											else\n												$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n										}\n									//Inserta el nuevo objeto al informe\n									PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"informe_tablas ($ListaCamposSinID_informe_tablas) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n								}\n\n\n							//Determina cuantos campos tiene la tabla\n							$ArregloCampos=explode(\',\',$ListaCamposSinID_informe_campos);\n							$TotalCampos=count($ArregloCampos);\n							// Registros de informe_campos\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"informe_campos WHERE informe=? ORDER BY peso,id\",\"$informe\");\n							while($registro = $consulta->fetch())\n								{\n									//Genera cadena de interrogantes y valores segun cantidad de campos\n									$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n									$CadenaValores=$idObjetoInsertado;\n									for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n										{\n											//Cadena de interrogantes\n											$CadenaInterrogantes.=\',?\';\n											//Cadena de valores (el campo No 0 corresponde al ID de informe nuevo)\n											if ($PCOCampo!=0)\n												$CadenaValores.=$_SeparadorCampos_.$registro[$PCOCampo+1];\n											else\n												$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n										}\n									//Inserta el nuevo objeto al informe\n									PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"informe_campos ($ListaCamposSinID_informe_campos) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n								}\n\n							//Determina cuantos botones tiene la tabla\n							$ArregloCampos=explode(\',\',$ListaCamposSinID_informe_boton);\n							$TotalCampos=count($ArregloCampos);\n							// Registros de informe_boton\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"informe_boton WHERE informe=? ORDER BY peso,id\",\"$informe\");\n							while($registro = $consulta->fetch())\n								{\n									//Genera cadena de interrogantes y valores segun cantidad de campos\n									$CadenaInterrogantes=\'?\'; //Agrega el primer interrogante\n									$CadenaValores=$registro[1];\n									for ($PCOCampo=1;$PCOCampo<$TotalCampos;$PCOCampo++)\n										{\n											//Cadena de interrogantes\n											$CadenaInterrogantes.=\',?\';\n											//Cadena de valores (el campo No 0 corresponde al ID de informe nuevo)\n											if ($PCOCampo!=2)\n												$CadenaValores.=$_SeparadorCampos_.$registro[$PCOCampo+1];\n											else\n												$CadenaValores.=$_SeparadorCampos_.$idObjetoInsertado;\n										}\n									//Inserta el nuevo objeto al informe\n									PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"informe_boton ($ListaCamposSinID_informe_boton) VALUES ($CadenaInterrogantes) \",\"$CadenaValores\");\n								}\n\n							PCO_Auditar(\"Crea copia de informe $informe\");\n\n							//Presenta la ventana con informacion y enlace de descarga\n							?>\n								<form action=\"<?php echo $ArchivoCORE; ?>\" method=\"POST\" name=\"det<?php echo $idObjetoInsertado; ?>\" id=\"det<?php echo $idObjetoInsertado; ?>\">\n										<input type=\"hidden\" name=\"PCO_Accion\" value=\"PCO_EditarInforme\">\n										<input type=\"hidden\" name=\"informe\" value=\"<?php echo $idObjetoInsertado; ?>\">\n										<input type=\"hidden\" name=\"PCO_Valor\" value=\"<?php echo $idObjetoInsertado; ?>\">\n								        <a class=\"btn btn-success btn-block\" href=\"javascript:document.det<?php echo $idObjetoInsertado; ?>.submit();\"><i class=\"fa fa-pencil\"></i> <?php echo $MULTILANG_Editar.\" <b>\".$titulo.\"</b>\"; ?></a>\n								</form>\n							<?php\n						}\n\n\n					//Hace la copia del objeto segun el tipo solicitado\n					if ($tipo_copia_objeto==\"XML_IdEstatico\" || $tipo_copia_objeto==\"XML_IdDinamico\")\n						{\n							// Inicia el archivo XML\n							$Contenido_XML.=\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\" ?>\n<objetos_practicos>\n	<descripcion>\n		<tipo_objeto>Informe</tipo_objeto>\n		<version_practico>$PCO_VersionActual</version_practico>\n		<tipo_exportacion>$tipo_copia_objeto</tipo_exportacion>\n		<sistema_origen>$Nombre_Aplicacion</sistema_origen>\n		<version>$Version_Aplicacion</version>\n		<usuario_generador>$PCOSESS_LoginUsuario</usuario_generador>\n		<fecha_exportacion>$PCO_FechaOperacionGuiones</fecha_exportacion>\n		<hora_exportacion>$PCO_HoraOperacionPuntos</hora_exportacion>\n	</descripcion>\";\n							// Exporta tabla core_informe\n							$Contenido_XML .= \"\n	<core_informe>\";\n							// Busca datos y genera XML de cada registro\n							$consulta=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe.\" FROM \".$TablasCore.\"informe WHERE id=?\",\"$informe\");\n							$registro = $consulta->fetch();\n							$Contenido_XML .=PCO_ConvertirRegistroXML($registro,\"id,\".$ListaCamposSinID_informe);\n							$Contenido_XML .= \"\n	</core_informe>\";\n							// Registros de informe_boton\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"informe_boton WHERE informe=? ORDER BY peso,id\",\"$informe\");\n							$conteo_elementos_xml=0;\n							while($registro = $consulta->fetch())\n								{\n									//Exporta la tabla de core_informe_boton\n									$Contenido_XML .= \"\n	<core_informe_boton>\";\n									$Contenido_XML .=PCO_ConvertirRegistroXML($registro,\"id,\".$ListaCamposSinID_informe_boton);\n							$Contenido_XML .= \"\n	</core_informe_boton>\";\n									$conteo_elementos_xml++;\n								}\n							//Agrega el total de elementos y resetea contador para el siguiente\n									$Contenido_XML .= \"\n	<total_core_informe_boton><cantidad_objetos>$conteo_elementos_xml</cantidad_objetos></total_core_informe_boton>\";\n							$conteo_elementos_xml=0;\n\n							// Registros de informe_campos\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"informe_campos WHERE informe=? ORDER BY peso,id\",\"$informe\");\n							while($registro = $consulta->fetch())\n								{\n									//Exporta la tabla de core_informe_campos\n									$Contenido_XML .= \"\n	<core_informe_campos>\";\n									$Contenido_XML .=PCO_ConvertirRegistroXML($registro,\"id,\".$ListaCamposSinID_informe_campos);\n							$Contenido_XML .= \"\n	</core_informe_campos>\";\n									$conteo_elementos_xml++;\n								}\n							//Agrega el total de elementos y resetea contador para el siguiente\n									$Contenido_XML .= \"\n	<total_core_informe_campos><cantidad_objetos>$conteo_elementos_xml</cantidad_objetos></total_core_informe_campos>\";\n							$conteo_elementos_xml=0;\n\n							// Registros de informe_condiciones\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"informe_condiciones WHERE informe=? ORDER BY peso,id\",\"$informe\");\n							while($registro = $consulta->fetch())\n								{\n									//Exporta la tabla de core_informe_condiciones\n									$Contenido_XML .= \"\n	<core_informe_condiciones>\";\n									$Contenido_XML .=PCO_ConvertirRegistroXML($registro,\"id,\".$ListaCamposSinID_informe_condiciones);\n							$Contenido_XML .= \"\n	</core_informe_condiciones>\";\n									$conteo_elementos_xml++;\n								}\n							//Agrega el total de elementos y resetea contador para el siguiente\n									$Contenido_XML .= \"\n	<total_core_informe_condiciones><cantidad_objetos>$conteo_elementos_xml</cantidad_objetos></total_core_informe_condiciones>\";\n							$conteo_elementos_xml=0;\n\n							// Registros de informe_tablas\n							$consulta=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"informe_tablas WHERE informe=?\",\"$informe\");\n							while($registro = $consulta->fetch())\n								{\n									//Exporta la tabla de core_informe_tablas\n									$Contenido_XML .= \"\n	<core_informe_tablas>\";\n									$Contenido_XML .=PCO_ConvertirRegistroXML($registro,\"id,\".$ListaCamposSinID_informe_tablas);\n							$Contenido_XML .= \"\n	</core_informe_tablas>\";\n									$conteo_elementos_xml++;\n								}\n							//Agrega el total de elementos y resetea contador para el siguiente\n									$Contenido_XML .= \"\n	<total_core_informe_tablas><cantidad_objetos>$conteo_elementos_xml</cantidad_objetos></total_core_informe_tablas>\";\n							$conteo_elementos_xml=0;\n\n							// Finaliza el archivo XML\n							$Contenido_XML .= \"\n</objetos_practicos>\";\n\n							PCO_Auditar(\"Crea copia $tipo_copia_objeto de informe $informe\");\n\n							//Guarda la cadena generada en el archivo XML\n							if ($PCO_NombreArchivoXML==\"\")\n        						$PCO_NombreArchivoXML=\"tmp/RepID_\".$informe.\"_\".$PCO_FechaOperacion.\"_\".$PCO_HoraOperacion.\".xml\";\n							$PCO_PunteroArchivo = fopen($PCO_NombreArchivoXML, \"w\");\n							if($PCO_PunteroArchivo==false)\n								die(\"No se puede abrir el archivo de exportacion\");\n							fputs ($PCO_PunteroArchivo, $Contenido_XML);\n							fclose ($PCO_PunteroArchivo);\n\n							//Presenta la ventana con informacion y enlace de descarga\n							?>\n								<a class=\"btn btn-success btn-block\" href=\"<?php echo $PCO_NombreArchivoXML; ?>\" target=\"_BLANK\" download><i class=\"fa fa-floppy-o\"></i> <?php echo $MULTILANG_Descargar.\" \".$PCO_NombreArchivoXML; ?></a>\n							<?php\n						}\n\n				}\n			else\n				{\n					echo \'<form name=\"cancelar\" action=\"\'.$ArchivoCORE.\'\" method=\"POST\">\n						<input type=\"Hidden\" name=\"PCO_Accion\" value=\"PCO_AdministrarInformes\">\n						<input type=\"Hidden\" name=\"PCO_ErrorTitulo\" value=\"\'.$MULTILANG_ErrorDatos.\'\">\n						<input type=\"Hidden\" name=\"PCO_ErrorDescripcion\" value=\"\'.$mensaje_error.\'\">\n						</form>\n						<script type=\"\" language=\"JavaScript\"> document.cancelar.submit();  </script>\';\n				}\n    }\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_ManejadorExcepciones\n	Captura las excepciones generados por PHP durante la ejecucion y las presenta al usuario\n\n	Salida:\n		Mensajes de alerta en pantalla con los detalles entregados por PHP\n*/\nfunction PCO_ManejadorExcepciones($DetalleExcepcion)\n    {\n        global $ModoDepuracion,$MULTILANG_Atencion,$MULTILANG_Archivo;\n        if ($ModoDepuracion)\n            {\n                $Detalles=error_get_last();\n                $Tipo=$Detalles[\"type\"];\n                $Mensaje=$Detalles[\"message\"];\n                $Archivo=$Detalles[\"file\"];\n                $Linea=$Detalles[\"line\"];\n                if ($Archivo!=\"\" && $Mensaje!=\"\")\n                    PCO_Mensaje($MULTILANG_Atencion.\" (PHP Exception cod $Tipo)\",\"$Archivo (linea $Linea)<br>$Mensaje\", \'\', \'fa fa-exclamation-triangle texto-rojo texto-blink\', \'alert alert-warning\');\n            }\n    }\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_ManejadorErrores\n	Captura los errores generados por PHP durante la ejecucion y los presenta al usuario\n\n	Salida:\n		Mensajes de alerta en pantalla con los detalles entregados por PHP\n*/\nfunction PCO_ManejadorErrores($DetalleExcepcion)\n    {\n        global $ModoDepuracion,$MULTILANG_Atencion,$MULTILANG_Archivo;\n        if ($ModoDepuracion)\n            {\n                $Detalles=error_get_last();\n                $Tipo=$Detalles[\"type\"];\n                $Mensaje=$Detalles[\"message\"];\n                $Archivo=$Detalles[\"file\"];\n                $Linea=$Detalles[\"line\"];\n                if ($Archivo!=\"\" && $Mensaje!=\"\")\n                    PCO_Mensaje($MULTILANG_Atencion.\" (PHP Error cod $Tipo)\",\"$Archivo (linea $Linea)<br>$Mensaje\", \'\', \'fa fa-exclamation-triangle texto-rojo texto-blink\', \'alert alert-danger\');\n            }\n    }\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_BuscarErroresSintaxisPHP\n	Verifica la sintaxis de un archivo PHP.  Utilizada normalmente antes de cualquier inclusion para evitar que se incluyan archivos con errores del lado del usuario.\n\n	Variables de entrada:\n\n		ArchivoFuente - Archivo que se desea verificar sintaxis\n		Funcion exec - Activada en PHP\n\n	Salida:\n		0 si no hay errores de sintaxis\n		1 si hay errores ademas de los mensajes en la salida estandar\n*/\nfunction PCO_BuscarErroresSintaxisPHP($ArchivoFuente,$ByPassSintaxis=0,$DescComplemento=\"\")\n    {\n		//Hace el proceso de verificacion solamente en plataformas diferentes a Windows.  Windows no lo permite a menos que se especifique el path completo de PHP\n		if (strtoupper(substr(PHP_OS, 0, 3)) === \'WIN\' || strtoupper(PHP_OS) === \'FREEBSD\' || strtoupper(PHP_OS) === \'OPENBSD\')\n			{\n				//Se omite verificacion de sintaxis\n				/*Otros posibles hosts\n				CYGWIN_NT-5.1\n                Darwin\n                FreeBSD\n                HP-UX\n                IRIX64\n                Linux\n                NetBSD\n                OpenBSD\n                SunOS\n                Unix\n				*/\n\n				return 0;\n			}\n		else\n			{\n				global $MULTILANG_ErrorTiempoEjecucion,$MULTILANG_Detalles,$PCO_ChequeoDinamicoSintaxis;\n				$SalidaFuncion=0;\n				if ($PCO_ChequeoDinamicoSintaxis==\"1\" || $ByPassSintaxis==\"1\")\n				    {\n        				if (@exec(\'php -l \'.escapeshellarg($ArchivoFuente), $Salida, $Codigo)===false)\n                            throw new \\RuntimeException(\'Detectado error de sintaxis en\'.escapeshellarg($ArchivoFuente));\n\n        				if ($Codigo)  //Si se tiene un valor diferente de cero retornado por el comando\n        					{\n        						PCO_Mensaje($MULTILANG_ErrorTiempoEjecucion,\"PHP retorna: <i>\".$Salida[0].$Salida[1].$Salida[2].\"<i>.  <b>Valide su sintaxis para ser incluido sin problemas</b>.  {$DescComplemento}\", \'\', \'fa fa-exclamation-triangle fa-3x texto-rojo texto-blink\', \'alert alert-danger alert-dismissible\');\n        						$SalidaFuncion=1;\n        					}\n				    }\n				return $SalidaFuncion;\n			}\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ReemplazarVariablesPHPEnCadena\n	Devuelve una cadena evaluada donde se reemplazan las expresiones de variables PHP con el formato {$variable} por su valor definido\n\n	Variables de entrada:\n\n		cadena_original - Cadena con las variables expresadas\n\n	Salida:\n\n		Cadena con las variables reemplazadas\n\n	Ver tambien:\n		<PCO_ConstruirConsultaInforme>\n*/\nfunction PCO_ReemplazarVariablesPHPEnCadena($cadena_original,$PCO_RegistroDatosFormulario=\"\")\n	{\n	    //Reemplaza todas las ocurrencias de variables por el valor de la misma en su variable global\n        $cadena_final = preg_replace_callback(\'~\\{\\$(.*?)\\}~si\',    //Aqui sigue la funcion de CallBack (ANTES de vers. 19.9 era funcion independiente sin recepcion de parametros)\n                                                                    function  ($ocurrencia) use ($PCO_RegistroDatosFormulario)\n                                                                    	{\n                                                                            //Declara la variable como global, pues no se sabe qué variable y en qué ambito se encuentra\n                                                                            //Busca si tiene corchetes (porque puede ser un arreglo)\n                                                                            if (strpos ($ocurrencia[1] , \"[\") !== false && strpos ($ocurrencia[1] , \"]\") !== false)\n                                                                                {\n                                                                                    $VariableRealArreglo=strstr ( $ocurrencia[1]  , \"[\", TRUE );\n                                                                                    $PosicionArreglo=str_replace ( $VariableRealArreglo.\"[\" , \"\" , $ocurrencia[1] );\n                                                                                    $PosicionArreglo=strstr ( $PosicionArreglo  , \"]\", TRUE );\n                                                                                    //Si la variable es la de contenido de registros de practico\n                                                                                    if ($VariableRealArreglo==\"PCO_RegistroDatosActivo\")\n                                                                                        return $PCO_RegistroDatosFormulario[$PosicionArreglo];\n                                                                                    else\n                                                                                        return;\n                                                                                }\n                                                                            else\n                                                                                {\n                                                                                    global ${$ocurrencia[1]};\n                                                                                    //Obtiene el valor de la variable\n                                                                                    //return eval(\'return $\' . $ocurrencia[1] . \';\');  //Funcion eval reemplazada por seguridad\n                                                                                    return ${$ocurrencia[1]};                \n                                                                                }\n                                                                    	}  \n                                                                    ,$cadena_original);\n		return $cadena_final;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_DistanciaDosCoordenadas\n	Retorna el nombre legible de una direccion (en lenguaje natural) indicados por latitud y longitud\n\n	Variables de entrada:\n\n		Latitud - Asociada al punto deseado			Ejemplos Furatena: 6.249326, -75.565550    Castropol:  6.217010, -75.566734\n		Longitud - Asociada al punto deseado\n		APIKey_GoogleMaps - Utilizada para hacer el llamado a la API\n\n	Salida:\n		Arreglo con todos los resultados\n*/\nfunction PCO_DireccionPorCoordenas($Latitud, $Longitud, $APIKey_GoogleMaps)\n	{\n		$URLMaps = \"https://maps.googleapis.com/maps/api/geocode/json?latlng=\".$Latitud.\",\".$Longitud.\"&key=\".$APIKey_GoogleMaps.\"&language=es\";\n		$DatosRecibidos = @PCO_CargarURL($URLMaps);\n		return json_decode($DatosRecibidos, true);\n	}\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_DireccionPorIDSitio\n	Retorna el nombre legible de una direccion (en lenguaje natural) indicados por el PlaceID usado por Google\n\n	Variables de entrada:\n\n		PlaceID - Asociada al punto deseado			Ejemplo Castropol:  EkNDbC4gMTcgIzM3YS05NiBhIDM3YS0xNzIsIE1lZGVsbMOtbiwgTWVkZWxsw61uLCBBbnRpb3F1aWEsIENvbG9tYmlh\n		APIKey_GoogleMaps - Utilizada para hacer el llamado a la API\n\n	Salida:\n		Arreglo con todos los resultados\n*/\nfunction PCO_DireccionPorIDSitio($PlaceID, $APIKey_GoogleMaps)\n	{\n		$URLMaps = \"https://maps.googleapis.com/maps/api/geocode/json?place_id=\".$PlaceID.\"&key=\".$APIKey_GoogleMaps.\"&language=es\";\n		$DatosRecibidos = @PCO_CargarURL($URLMaps);\n		return json_decode($DatosRecibidos, true);\n	}\n\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_DistanciaDosCoordenadas\n	Retorna la distancia entre dos puntos indicados por latitud y longitud\n\n	Variables de entrada:\n\n		Punto1 - Determinado por latitud1 y longitud1\n		Punto1 - Determinado por latitud2 y longitud2\n		UnidadMedida - Determinado por latitud y longitud   m=metros|km=kilometros|mi=millas\n\n	Salida:\n		Valor de la distancia expresado en la unidad solicitada\n\n	Adicionales:\n		* http://stackoverflow.com/questions/29003118/get-driving-distance-between-two-points-using-google-maps-api\n		* http://stackoverflow.com/questions/14041227/distance-from-point-a-to-b-using-google-maps-php-and-mysql  ver working example\n		* http://jafrancov.com/2011/06/geocode-gmaps-api-v3/\n*/\nfunction PCO_DistanciaCoordenadasSimple($Latitud1, $Longitud1, $Latitud2, $Longitud2, $UnidadMedida=\"m\")\n	{\n		$theta = $Longitud1 - $Longitud2;\n		$Millas = (sin(deg2rad($Latitud1)) * sin(deg2rad($Latitud2))) + (cos(deg2rad($Latitud1)) * cos(deg2rad($Latitud2)) * cos(deg2rad($theta)));\n		$Millas = acos($Millas);\n		$Millas = rad2deg($Millas);\n		$Millas = $Millas * 60 * 1.1515;\n		if ($UnidadMedida==\"mi\")\n			return $Millas;\n		$Kilometros = $Millas * 1.609344;\n		if ($UnidadMedida==\"km\")\n			return $Kilometros;\n		return $Kilometros/1000;//retorna metros\n	}\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_EsDispositivoMovil\n	Determina si la aplicacion esta corriendo en un dispositivo movil o PC de escritorio segun el agente reportado\n\n	Variables de entrada:\n\n		HTTP_USER_AGENT - Tomada desde el entorno\n\n	Salida:\n		Verdadero o falso segun el navegador del usuario\n\n*/\nfunction PCO_EsDispositivoMovil()\n	{\n		$aMobileUA = array(\n			\'/iphone/i\' => \'iPhone\',\n			\'/ipod/i\' => \'iPod\',\n			\'/ipad/i\' => \'iPad\',\n			\'/android/i\' => \'Android\',\n			\'/blackberry/i\' => \'BlackBerry\',\n			\'/webos/i\' => \'Mobile\'\n			);\n\n		//Retorna verdadero si es detectado un agente de usuario movil\n		foreach($aMobileUA as $sMobileKey => $sMobileOS)\n			{\n				if(preg_match($sMobileKey, $_SERVER[\'HTTP_USER_AGENT\']))\n					{\n						return true;\n					}\n			}\n		//En otro caso retorna falso\n		return false;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_EsUsuarioInterno\n	Determina si un login de usuario es corresponde a un usuario interno o no\n\n	Variables de entrada:\n\n		Usuario - Login de usuario a verificar\n\n	Salida:\n		Cero (0) o uno (1) segun la pertenencia o no del usuario\n*/\nfunction PCO_EsUsuarioInterno($Usuario)\n	{\n	    global $ListaCamposSinID_usuario,$TablasCore;\n	    $RegistroUsuario=PCO_EjecutarSQL(\"SELECT $ListaCamposSinID_usuario FROM \".$TablasCore.\"usuario WHERE login=\'$Usuario\' \")->fetch();\n	    return $RegistroUsuario[\"usuario_interno\"];\n	}\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_EsAdministrador\n	Determina si un login de usuario es administrador de plataforma o no (si es super usuario)\n\n	Variables de entrada:\n\n		Usuario - Login de usuario a verificar\n\n	Salida:\n		Cero (0) o uno (1) segun la pertenencia o no del usuario al grupo de admins\n*/\nfunction PCO_EsAdministrador($Usuario)\n	{\n		global $PCOVAR_Administradores;\n		$ArregloAdmins=explode(\",\",$PCOVAR_Administradores);\n\n		//Recorre el arreglo de super-usuarios\n		$Resultado = 0;\n		if ($Usuario!=\"\")\n			foreach ($ArregloAdmins as $UsuarioAdmin)\n				{\n					if (trim($UsuarioAdmin)==$Usuario)\n						$Resultado = 1;\n				}\n		return $Resultado;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_BackupObtenerDatosTabla\n	Recupera los datos en formato Insert asociados a una tabla\n\n	Variables de entrada:\n\n		PCO_NombreTabla - Nombre de la tabla de la que se desea obtener los datos\n\n	Salida:\n		Sentencias necesarias para insertar los datos en las tablas\n*/\nfunction PCO_BackupObtenerDatosTabla($PCO_NombreTabla=\"\",$codificacion_actual,$codificacion_destino,$transliterar_conversion)\n	{\n		$RegistrosEncontrados = PCO_EjecutarSQL(\'SELECT * FROM \'.$PCO_NombreTabla)->fetchAll(PDO::FETCH_NUM);\n		$Datos = \'\';\n		foreach ($RegistrosEncontrados as $Registro)\n			{\n				foreach($Registro as &$Valor)\n					{\n						//Determina si se quiere un cambio de codificacion de caracteres y lo ejecuta\n						if ($codificacion_destino!=\"\")\n							{\n								//Determina si se tiene o no transliteracion\n								$ComplementoTransliteracion=\"\";\n								if($transliterar_conversion==1)\n									$ComplementoTransliteracion=\"//TRANSLIT\";\n								if($transliterar_conversion==2)\n									$ComplementoTransliteracion=\"//IGNORE\";\n								if($transliterar_conversion==3)\n									$ComplementoTransliteracion=\"//IGNORE//TRANSLIT\";\n								//Hace la conversion de la cadena\n								$Valor = iconv($codificacion_actual,$codificacion_destino.$ComplementoTransliteracion,$Valor);\n							}\n						$Valor = htmlentities(addslashes($Valor));\n					}\n				$Datos .= \'INSERT INTO \'. $PCO_NombreTabla .\' VALUES (\\\'\' . implode(\'\\\',\\\'\', $Registro) . \'\\\');\'.\"\\n\";\n			}\n		return $Datos;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_BackupObtenerColumnasTabla\n	Recupera los campos asociados a una tabla de datos\n\n	Variables de entrada:\n\n		PCO_NombreTabla - Nombre de la tabla de la que se desea obtener la estructura\n\n	Salida:\n		Sentencia de creacion de la tabla\n*/\nfunction PCO_BackupObtenerColumnasTabla($PCO_NombreTabla=\"\")\n	{\n		$ConsultaCreate = PCO_EjecutarSQL(\'SHOW CREATE TABLE \'.$PCO_NombreTabla)->fetchAll();\n		$ConsultaCreate[0][1] = preg_replace(\"/AUTO_INCREMENT=[\\w]*./\", \'\', $ConsultaCreate[0][1]);\n		return $ConsultaCreate[0][1].\";\".\"\\n\";\n	}\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_BackupObtenerTablasBD\n	Recupera las tablas desde la base de datos\n\n	Variables de entrada:\n\n		PCO_ListaTablas - Lista de tablas separadas por coma o simbolo * para todas las tablas\n\n	Salida:\n		Retorna un arreglo con todas las tablas y su backup dividido en tres campos logicos de Nombre, SentenciaCreate y SentenciaInsert\n		Retorna 0 cuando se obtiene algun error\n*/\nfunction PCO_BackupObtenerTablasBD($PCO_ListaTablas=\"\",$TipoDeCopia=\"Estructura\",$codificacion_actual,$codificacion_destino,$transliterar_conversion)\n	{\n		$TablasExistentes = PCO_EjecutarSQL(\'SHOW TABLES\')->fetchAll();\n		$TablasSolicitadasBackup=explode(\",\",$PCO_ListaTablas);\n		$i=0;\n		foreach($TablasExistentes as $Tabla)\n			{\n				//Determina si la tabla esta dentro de las deseadas para backup\n				if (in_array($Tabla[0],$TablasSolicitadasBackup) || $PCO_ListaTablas==\"*\")\n					{\n						$ArregloFinalTablas[$i][\'Nombre\']=$Tabla[0];\n						if ($TipoDeCopia==\"Estructura\" || $TipoDeCopia==\"Estructura+Datos\")\n							$ArregloFinalTablas[$i][\'SentenciaCreate\']=PCO_BackupObtenerColumnasTabla($Tabla[0]);\n						if ($TipoDeCopia==\"Datos\" || $TipoDeCopia==\"Estructura+Datos\")\n							$ArregloFinalTablas[$i][\'SentenciaInsert\']=PCO_BackupObtenerDatosTabla($Tabla[0],$codificacion_actual,$codificacion_destino,$transliterar_conversion);\n						$i++;\n					}\n			}\n		return $ArregloFinalTablas;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_Backup\n	Ejecuta un respaldo parcial o total de la base de datos sobre un archivo determinado\n\n	Variables de entrada:\n\n		PCO_ListaTablas - Lista de tablas separadas por coma o simbolo * para todas las tablas\n		TipoDeCopia - Lista de tablas separadas por coma  Estructura|Datos|Estructura+Datos\n		ArchivoDestino - Ruta completa al archivo de destino del backup\n\n	Salida:\n		Retorna 1 ante un proceso exitoso\n		Retorna 0 cuando se obtiene algun error\n*/\nfunction PCO_Backup($PCO_ListaTablas,$ArchivoDestino=\"\",$TipoDeCopia=\"Estructura\",$codificacion_actual=\"UTF-8\",$codificacion_destino=\"UTF-8\",$transliterar_conversion=0)\n	{\n		$EstadoOperacion=1;  //Asume que no hay errores\n		$ContenidoBackup=\"\";\n		if ($ArchivoDestino==\"\") $EstadoOperacion=0;\n\n		//Si no hay errores continua con el proceso\n		if ($EstadoOperacion==1)\n			{\n				//Lanza el proceso de copia\n				$ArregloContenidos=PCO_BackupObtenerTablasBD($PCO_ListaTablas,$TipoDeCopia,$codificacion_actual,$codificacion_destino,$transliterar_conversion);\n				//Recorre las tablas agregando todo al Backup\n				for($i=0;$i<count($ArregloContenidos);$i++)\n					{\n						if ($TipoDeCopia==\"Estructura\" || $TipoDeCopia==\"Estructura+Datos\")\n							$ContenidoBackup.=$ArregloContenidos[$i][\'SentenciaCreate\'];\n						if ($TipoDeCopia==\"Datos\" || $TipoDeCopia==\"Estructura+Datos\")\n							$ContenidoBackup.=$ArregloContenidos[$i][\'SentenciaInsert\'];\n					}\n\n				// Comprime el archivo resultante y lo guarda\n				$resultado_backup_comprimido = gzencode($ContenidoBackup, 9);\n				$puntero_archivo_destino_backup_bdd = fopen($ArchivoDestino, \"w\");\n				fwrite($puntero_archivo_destino_backup_bdd, $resultado_backup_comprimido);\n				fclose($puntero_archivo_destino_backup_bdd);\n			}\n		//Retorna el resultado general de la operacion de copia\n		return $EstadoOperacion;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	// Function: PCO_SegmentarSQL\n	Divide una cadena completa en sentencias SQL independientes para ser ejecutadas una a una\n\n	Variables de entrada:\n\n		sql - Cadena completa de sentencias\n\n	Salida:\n		Cadena SQL dividida\n*/\n//Divide los queries de un cadena\nfunction PCO_SegmentarSQL($sql)\n	{\n		$sql = trim($sql);\n		$sql = preg_replace(\"/\\n#[^\\n]*\\n/\", \"\\n\", $sql);\n\n		$buffer = array();\n		$ret = array();\n		$in_string = false;\n\n		for($i=0; $i<strlen($sql)-1; $i++) {\n			if($sql[$i] == \";\" && !$in_string) {\n				$ret[] = substr($sql, 0, $i);\n				$sql = substr($sql, $i + 1);\n				$i = 0;\n			}\n\n			if($in_string && ($sql[$i] == $in_string) && $buffer[1] != \"\\\\\") {\n				$in_string = false;\n			}\n			elseif(!$in_string && ($sql[$i] == \'\"\' || $sql[$i] == \"\'\") && (!isset($buffer[0]) || $buffer[0] != \"\\\\\")) {\n				$in_string = $sql[$i];\n			}\n			if(isset($buffer[1])) {\n				$buffer[0] = $buffer[1];\n			}\n			$buffer[1] = $sql[$i];\n		}\n\n		if(!empty($sql)) {\n			$ret[] = $sql;\n		}\n		return($ret);\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_CopiarPermisos\n	Copia los permisos definidos para un usuario origen en otro especificado por destino\n\n	Variables de entrada:\n\n		usuariod - Usuario destino (al que seran copiados los permisos)\n		usuarioo - Usuario oorigen (del que se toman los permisos como base para ser copiados)\n\n	Salida:\n		Registros de permisos actualizados en BD\n*/\nfunction PCO_CopiarPermisos($usuario_origen=\"\",$usuario_destino=\"\")\n    {\n		global $TablasCore,$ListaCamposSinID_usuario_menu,$_SeparadorCampos_;\n		// Elimina opciones existentes\n		PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"usuario_menu WHERE usuario=? \",\"$usuario_destino\");\n		// Copia permisos si el usuario origen es diferente de vacio, sino lo deja sin nada\n        if ($usuario_origen!=\"\")\n            {\n                $resultado=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_usuario_menu.\" FROM \".$TablasCore.\"usuario_menu WHERE usuario=\'$usuario_origen\' \");\n                while($registro = $resultado->fetch())\n                    {\n                        $menuinsertar=$registro[\"menu\"];\n                        PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"usuario_menu (\".$ListaCamposSinID_usuario_menu.\") VALUES (?,?)\",\"$usuario_destino$_SeparadorCampos_$menuinsertar\");\n                    }\n            }\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_CopiarInformes\n	Copia los informes definidos para un usuario origen en otro especificado por destino\n\n	Variables de entrada:\n\n		usuariod - Usuario destino (al que seran copiados los permisos)\n		usuarioo - Usuario oorigen (del que se toman los permisos como base para ser copiados)\n\n	Salida:\n		Registros de permisos actualizados en BD\n*/\nfunction PCO_CopiarInformes($usuario_origen=\"\",$usuario_destino=\"\")\n    {\n		global $TablasCore,$ListaCamposSinID_usuario_informe,$_SeparadorCampos_;\n		// Elimina opciones existentes\n		PCO_EjecutarSQLUnaria(\"DELETE FROM \".$TablasCore.\"usuario_informe WHERE usuario=? \",\"$usuario_destino\");\n		// Copia permisos si el usuario origen es diferente de vacio, sino lo deja sin nada\n        if ($usuario_origen!=\"\")\n            {\n                $resultado=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_usuario_informe.\" FROM \".$TablasCore.\"usuario_informe WHERE usuario=\'$usuario_origen\' \");\n                while($registro = $resultado->fetch())\n                    {\n                        $menuinsertar=$registro[\"informe\"];\n                        PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"usuario_informe (\".$ListaCamposSinID_usuario_informe.\") VALUES (?,?)\",\"$usuario_destino$_SeparadorCampos_$menuinsertar\");\n                    }\n            }\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ListadoExploracionArchivos\n	Construye una lista de los archivos contenidos en una carpeta y que coinciden con un flitro determinado\n\n	Variables de entrada:\n\n		RutaExploracion - El Path donde se desean buscar los archivos, preferible terminando en /\n		Filtro_contenido - Un texto que debe ser contenido en el nombre de archivo para poder ser presentado.  Vacio indica cualquier archivo\n\n	Salida:\n		Arreglo de elementos asociados a cada archivo encontrado\n*/\nfunction PCO_ListadoExploracionArchivos($RutaExploracion=\"\",$Filtro_contenido=\"\")\n    {\n        $PCO_ListadoArchivos=array();\n        //Si la ruta de exploracion es diferente de vacio hace el proceso de busqueda de archivos\n        if ($RutaExploracion!=\"\")\n            {\n                $ContenidoDirectorio = opendir($RutaExploracion);\n                while (($Elemento = readdir($ContenidoDirectorio)) !== false)\n                    {\n                        if (($Elemento != \".\") && ($Elemento != \"..\") && (stristr($Elemento,$Filtro_contenido) || $Filtro_contenido==\"\")  )\n                            {\n                                $TamanoElemento=round(filesize($RutaExploracion.$Elemento)/1024);\n                                $TipoElemento=filetype($RutaExploracion.$Elemento);\n                                $FechaElemento=date(\"d F Y H:i:s\", filemtime($RutaExploracion.$Elemento));\n                                $EnlaceElemento=$RutaExploracion.$Elemento;\n                                $PCO_ListadoArchivos[]=array(Ruta => $RutaExploracion, Nombre=>$Elemento, Enlace => $EnlaceElemento,Fecha => $FechaElemento, Tipo => $TipoElemento, Tamano => $TamanoElemento);\n                            }\n                    }\n            }\n\n		//Retorna la lista de archivos construida\n		return $PCO_ListadoArchivos;\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ListadoExploracionArchivosVisual\n	Presenta una lista de los archivos contenidos en una carpeta con modificadores para las opciones\n*/\nfunction PCO_ListadoExploracionArchivosVisual($RutaExploracion=\"\",$Filtro_contenido=\"\",$TituloExploracion=\"\",$PermitirDescarga=1)\n    {\n        global $MULTILANG_TotalRegistros,$MULTILANG_Explorar,$MULTILANG_Filtro,$MULTILANG_Descargar,$MULTILANG_Tipo,$MULTILANG_Fecha,$MULTILANG_Peso;\n        //Si la ruta de exploracion es diferente de vacio hace el proceso de busqueda de archivos\n        if ($RutaExploracion!=\"\")\n            {\n                //Inicia Marco de presentacion de archivos\n                echo \'\n                    <div class=\"panel panel-default\"> <!-- Clase chat-panel para altura -->\n                        <div class=\"well well-sm\">\n                        <span class=\"label label-primary\">\'.$TituloExploracion.\'</span> \'.$MULTILANG_Explorar.\' <b>\'.$RutaExploracion.\'</b> \'.$MULTILANG_Filtro.\' \'.$Filtro_contenido.\':\n                        </div>\n                        <div class=\"panel-body\">\n                            <ul class=\"chat\">\';\n\n                $ConteoElementos=0;\n                $TotalTamanoElementos=0;\n\n                //Obtiene la lista de archivos\n                $ListadoArchivos=PCO_ListadoExploracionArchivos($RutaExploracion,$Filtro_contenido);\n\n                //Recorre el arreglo de archivos encontrados para presentarlo\n                $ContenidoDirectorio = opendir($RutaExploracion);\n                foreach ($ListadoArchivos as $Archivo)\n                    {\n						echo \'\n						<li class=\"left clearfix\">\n							<span class=\"chat-img pull-left\">\n								<i class=\"fa fa-file-archive-o fa-2x fa-fw icon-gray\"></i>\n							</span>\n							<div class=\"chat-body clearfix\">\n								<div class=\"header\">\n									<strong class=\"primary-font\">\'.$Archivo[\"Nombre\"].\'</strong>\n									<small class=\"pull-right text-muted\">\';\n										//Si se debe presentar el boton de descarga lo agrega (por defecto), sino no lo muestra\n										if($PermitirDescarga==1)\n											echo \'\n												<a  href=\"\'.$Archivo[\"Enlace\"].\'\" class=\"btn btn-xs btn-default\"><i class=\"fa fa-download fa-fw\"></i> \'.$MULTILANG_Descargar.\'</a>\n												<br>\';\n\n										echo \'\'.$MULTILANG_Peso.\' <span class=\"badge\">\'.$Archivo[\"Tamano\"].\' Kb</span>\n									</small>\n								</div>\n								<p>\n									<i class=\"icon-gray\">&nbsp;&nbsp;&nbsp;\n									\'.$MULTILANG_Fecha.\': \'.$Archivo[\"Fecha\"].\'\n									(\'.$MULTILANG_Tipo.\' \'.$Archivo[\"Tipo\"].\')\n									</i>\n								</p>\n							</div>\n						</li>\';\n						$ConteoElementos++;\n						$TotalTamanoElementos+=$Archivo[\"Tamano\"];\n                    }\n\n                //Cierra Marco de presentacion de archivos\n                echo \'\n                            </ul>\n                        </div> <!-- /.panel-body -->\n                    <div class=\"well well-sm\">\'.$MULTILANG_TotalRegistros.\': <b>\'.$ConteoElementos.\'</b> \'.$MULTILANG_Peso.\': <b>\'.$TotalTamanoElementos.\' Kb</b></div>\n                    </div> <!-- /.panel .chat-panel -->\';\n            }\n    }\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_OpcionesComboDesdeCSV\n	Genera una lista de seleccion con la variable recibida y los items separados por un caracter especifico\n*/\nfunction PCO_OpcionesComboDesdeCSV($lista_opciones,$caracter_separador,$valor_comparacion=\"\",$usar_indice=0)\n	{\n		$SalidaFormateada=\"\";\n		$campos = explode($caracter_separador, $lista_opciones);\n		for ($i=0;$i<count($campos);$i++)\n			{\n				$cadena_seleccion=\"\";\n				if ($campos[$i]==$valor_comparacion)\n				$cadena_seleccion=\" selected \";\n\n				$cadena_valor=$campos[$i];\n				//Si se indica que se debe utilizar el indice se retorna el numero de item, en lugar de su valor\n				if ($usar_indice==1)\n					$cadena_valor=$i;\n				$SalidaFormateada.= \'<option value=\"\'.$cadena_valor.\'\" \'.$cadena_seleccion.\'>\'.$campos[$i].\'</option>\';\n			}\n		return $SalidaFormateada;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_AparearCamposTabla_vs_HojaCalculo\n	Abre un archivo de hoja de cálculo y lo compara frente a los campos de una tabla de datos para ver si existen, tipos de dato, etc.\n\n	Variables de entrada:\n\n		PathArchivo - Ruta completa al archivo que se desea cargar\n		NombreTabla - Nombre de la tabla a revisar campos\n*/\nfunction PCO_AparearCamposTabla_vs_HojaCalculo($NombreTabla,$PathArchivo)\n	{\n		global $MULTILANG_Campo,$MULTILANG_Columna,$MULTILANG_Tablas,$MULTILANG_Archivo,$_SeparadorCampos_,$MULTILANG_Campo,$MULTILANG_Deshabilitado,$MULTILANG_FrmPredeterminado;\n		//Obtiene posibles variables de filtro globales\n		global $PCO_lista_campos_ignorados,$PCO_lista_campos_fijos,$PCO_lista_valores_fijos;\n		$ArregloCamposIgnorados=explode($_SeparadorCampos_,$PCO_lista_campos_ignorados);\n		$ArregloCamposFijos=explode($_SeparadorCampos_,$PCO_lista_campos_fijos);\n		$ArregloValoresFijos=explode($_SeparadorCampos_,$PCO_lista_valores_fijos);\n\n		$SalidaFormateada.=\'<table class=\"table table-condensed btn-xs table-hover table-striped table-unbordered table-responsive\" id=\"TablaArchivoCSV_Apareado\"><thead><tr>\n			<th>\'.$MULTILANG_Campo.\' (\'.$MULTILANG_Tablas.\')</th>\n			<th></th>\n			<th>\'.$MULTILANG_Columna.\' (\'.$MULTILANG_Archivo.\')</th>\n			</tr></thead><tbody>\';\n\n		//Busca las columnas definidas en el archivo\n		$ColumnasArchivo = PCO_ColumnasDesdeHojaCalculo($PathArchivo);\n		//Genera la lista en minuscula para ser pasada a los combos\n		$ListaColumnas=\"\";\n		foreach ($ColumnasArchivo as $ColumnaLista)\n			$ListaColumnas.=\"|\".strtolower($ColumnaLista);\n\n		//Busca las columnas definidas en la tabla\n		$CamposTabla=PCO_ConsultarColumnas($NombreTabla);\n\n		//Busca por cada campo de tabla algun equivalente en las columnas\n		for($i=0;$i<count($CamposTabla);$i++)\n			{\n				$SalidaFormateada.= \'<tr>\';\n					$SalidaFormateada.= \'<td>\'.$CamposTabla[$i][\"nombre\"].\'</td>\';\n					$SalidaFormateada.= \'<td><i class=\"fa fa-exchange\"></i></td>\';\n					//Genera combo de columnas de archivo preseleccionando uno si aplica\n					$OpcionesCombo=PCO_OpcionesComboDesdeCSV($ListaColumnas,\"|\",strtolower($CamposTabla[$i][\"nombre\"]),1); //Solicita el indice en lugar del valor\n\n					//Si el campo es un campo ignorado deja un combo vacio\n					if (  in_array($CamposTabla[$i][\"nombre\"],$ArregloCamposIgnorados)  )\n						$OpcionesCombo=\'<option value=\"\">\'.$MULTILANG_Campo.\' \'.strtoupper($CamposTabla[$i][\"nombre\"]).\' \'.$MULTILANG_Deshabilitado.\'</option>\';\n\n					//Si el campo es un campo de valor fijo lo indica en el combo pero como valor queda ignorado\n					if (  in_array($CamposTabla[$i][\"nombre\"],$ArregloCamposFijos)  )\n						$OpcionesCombo=\'<option value=\"\">\'.$MULTILANG_Campo.\' \'.strtoupper($CamposTabla[$i][\"nombre\"]).\' \'.$MULTILANG_FrmPredeterminado.\'=\'.$ArregloValoresFijos[array_search($CamposTabla[$i][\"nombre\"], $ArregloCamposFijos)].\'</option>\';\n\n					//Presenta combo\n					$SalidaFormateada.= \'<td><select id=\"PCO_campoimportado_\'.strtolower($CamposTabla[$i][\"nombre\"]).\'\" name=\"PCO_campoimportado_\'.strtolower($CamposTabla[$i][\"nombre\"]).\'\" class=\"btn btn-xs btn-default\">\'.$OpcionesCombo.\'</select></td>\';\n				$SalidaFormateada.= \'</tr>\';\n				//.$objPHPExcel->getActiveSheet()->getCellByColumnAndRow($Columna, $Fila)->getFormattedValue().\'</td>\';	// METODO1: getCell(\'A1\')->getFormattedValue(); METODO2: getCellByColumnAndRow(1, 2)->getFormattedValue();\n			}\n		$SalidaFormateada.= \'</tbody></table>\';\n		return $SalidaFormateada;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ColumnasDesdeHojaCalculo\n	Abre un archivo de hoja de cálculo y busca las columnas definidas en la primera fila de la primera hoja\n\n	Variables de entrada:\n\n		PathArchivo - Ruta completa al archivo que se desea analizar\n\n	Variables de salida:\n\n		ArregloColumnas - Variable con la lista de columas encontradas\n*/\nfunction PCO_ColumnasDesdeHojaCalculo($PathArchivo)\n	{\n		$ArregloColumnas=array();\n\n		//Crea el objeto para lectura del archivo\n		$XLFileType = PHPExcel_IOFactory::identify($PathArchivo);\n		$objReader = PHPExcel_IOFactory::createReader($XLFileType);\n		$objReader->setLoadSheetsOnly(0);	//Asume que la primera hoja tiene los datos.  ALTERNATIVA INDICANDO EL NOMBRE DE HOJA : $objReader->setLoadSheetsOnly(\'Hoja1\');\n		$objPHPExcel = $objReader->load($PathArchivo);\n\n		$Fila=1;\n		$MaximaColumna=0;\n\n		//Determina el numero de columna maxima y genera la primera fila como encabezados\n		while ($objPHPExcel->getActiveSheet()->getCellByColumnAndRow($MaximaColumna, $Fila)->getFormattedValue()!=\"\")\n			{\n				$ArregloColumnas[]=$objPHPExcel->getActiveSheet()->getCellByColumnAndRow($MaximaColumna, $Fila)->getFormattedValue();\n				$MaximaColumna++;\n			}\n\n		return $ArregloColumnas;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_DatatableDesdeHojaCalculo\n	Abre un archivo de hoja de cálculo y lo presenta en formato DataTable\n\n	Variables de entrada:\n\n		PathArchivo - Ruta completa al archivo que se desea cargar\n		NroLineas - Cantidad de lineas para ser agregadas al DataTable.  Cero para ilimitado\n*/\nfunction PCO_DatatableDesdeHojaCalculo($PathArchivo,$NroLineas)\n	{\n		global $PCO_InformesDataTable,$PCO_InformesDataTablePaginaciones,$PCO_InformesDataTableTotales,$PCO_InformesDataTableFormatoTotales,$PCO_InformesDataTableExrpotaCLP,$PCO_InformesDataTableExrpotaCSV,$PCO_InformesDataTableExrpotaXLS,$PCO_InformesDataTableExrpotaPDF,$PCO_InformesDataTableDefineCOLS,$PCO_InformesDataTable_pane_activado,$PCO_InformesDataTable_pane_cascada,$PCO_InformesDataTable_pane_colapsado,$PCO_InformesDataTable_pane_columnas,$PCO_InformesDataTable_pane_subtotalesrelativos,$PCO_InformesDataTable_pane_conteos,$PCO_InformesDataTable_pane_controles,$PCO_InformesDataTable_pane_control_colapsar,$PCO_InformesDataTable_pane_control_ordenar;\n\n		@$PCO_InformesDataTable.=\"TablaArchivoCSV_Importado|\"; //Agrega la tabla a la lista de DataTables para ser convertida\n        @$PCO_InformesDataTablePaginaciones.=\"10|\";\n        @$PCO_InformesDataTableTotales.=\"|\";\n        @$PCO_InformesDataTableFormatoTotales.=\"|\";\n		$SalidaFormateada.=\'<table class=\"table table-condensed btn-xs table-hover table-striped table-unbordered table-responsive\" id=\"TablaArchivoCSV_Importado\"><thead><tr>\';\n\n		//Crea el objeto para lectura del archivo\n		$XLFileType = PHPExcel_IOFactory::identify($PathArchivo);\n		$objReader = PHPExcel_IOFactory::createReader($XLFileType);\n		$objReader->setLoadSheetsOnly(0);	//Asume que la primera hoja tiene los datos.  ALTERNATIVA INDICANDO EL NOMBRE DE HOJA : $objReader->setLoadSheetsOnly(\'Hoja1\');\n		$objPHPExcel = $objReader->load($PathArchivo);\n\n		$Fila=1;\n		$Columna=0;\n		$MaximaFila=$NroLineas;\n		$MaximaColumna=0;\n\n		//Determina el numero de columna maxima y genera la primera fila como encabezados\n		$ColumnasEncabezado=PCO_ColumnasDesdeHojaCalculo($PathArchivo);\n		foreach ($ColumnasEncabezado as $TituloColuma)\n			{\n				//$SalidaFormateada.= \'<th>COL_\'.($MaximaColumna+1).\'<br>\'.$TituloColuma.\'</th>\';\n				$SalidaFormateada.= \'<th>\'.$TituloColuma.\'</th>\';\n				$MaximaColumna++;\n			}\n\n		$SalidaFormateada.= \'</tr></thead><tbody>\';\n\n		$Fila++; //Obvia la primera fila pues ya fue usada como encabezados\n		//Recorre la hoja segun las columnas encontradas y las filas solicitadas\n		while ($Fila<=$MaximaFila)\n			{\n				//Asume que la primera columna siempre tiene dato (llave o algo minimo) para agregarla a la tabla, sino no es agregada\n				if ($objPHPExcel->getActiveSheet()->getCellByColumnAndRow($Columna, $Fila)->getFormattedValue()!=\"\")\n					{\n						$SalidaFormateada.= \'</tr>\';\n						while ($Columna<$MaximaColumna)\n							{\n								$SalidaFormateada.= \'<td>\'.$objPHPExcel->getActiveSheet()->getCellByColumnAndRow($Columna, $Fila)->getFormattedValue().\'</td>\';	// METODO1: getCell(\'A1\')->getFormattedValue(); METODO2: getCellByColumnAndRow(1, 2)->getFormattedValue();\n								$Columna++;\n							}\n						$SalidaFormateada.= \'</tr>\';\n						$Columna=0;\n					}\n				$Fila++;\n			}\n		$SalidaFormateada.= \'</tbody></table>\';\n		return $SalidaFormateada;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_PermisoHeredadoAccion\n	Busca dentro de los permisos del usuario la accion a ejecutar cuando no se encuentra directamente como una opcion del usuario sino como una subrutina de otra de la que si tiene agregada de manera que valida si puede ingresar o no a ella.\n\n	Variables de entrada:\n\n		accion - Accion a ser ejectudada, de la que se desea buscar permiso heredado por otra\n\n	Salida:\n		Retorna 1 en caso de encontrar el permiso\n		Retorna 0 cuando no se encuentra un permiso\n*/\nfunction PCO_PermisoHeredadoAccion($PCO_Accion)\n	{\n		global $PCOSESS_LoginUsuario,$TablasCore;\n		// Variable que determina el estado de aceptacion o rechazo del permiso 0=no permiso 1=ok permiso\n		$retorno=0;\n\n		// Verifica mapeo de permisos para acciones que llaman a otras, heredadas.  Valores en = 1  son funciones publicas:\n		// FUNCION_solicitada_por_el_usuario				FUNCION_madre_de_entrada_a_funcion_solicitada\n		if ($PCO_Accion== \"PCO_MisInformes\")					$retorno = 1;\n		if ($PCO_Accion== \"PCO_GuardarInforme\")					$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_EditarInforme\")					$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_ClonarDisenoInforme\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_DefinirCopiaInformes\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_EliminarInforme\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_EliminarInformeTabla\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_GuardarInformeTabla\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_EliminarInformeCampo\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_GuardarInformeCampo\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_GuardarInformeCondicion\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_EliminarInformeCondicion\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_ActualizarGraficoInforme\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_ActualizarAgrupamientoInforme\")	$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_GuardarAccionInforme\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_EliminarRegistroInforme\")		$retorno = 1;\n		if ($PCO_Accion== \"PCO_EliminarAccionInforme\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_ExportarInforme\")				$retorno = 1;\n		if ($PCO_Accion== \"PCO_ImportarInforme\")				$retorno = 1;\n		if ($PCO_Accion== \"PCO_AnalizarImportacionInforme\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n		if ($PCO_Accion== \"PCO_ConfirmarImportacionInforme\")	$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarInformes\");\n\n		// Funciones en core/usuarios.php\n		if ($PCO_Accion== \"PCO_CambiarContrasena\")				$retorno = 1;\n        if ($PCO_Accion== \"PCO_ActualizarPerfilUsuario\")		$retorno = 1;\n        if ($PCO_Accion== \"PCO_GuardarPerfilUsuario\")			$retorno = 1;\n		if ($PCO_Accion== \"PCO_ActualizarContrasena\")			$retorno = PCO_PermisoHeredadoAccion(\"PCO_CambiarContrasena\");\n/*\n		if ($PCO_Accion== \"PCO_ResetearContrasena\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n		if ($PCO_Accion== \"PCO_AgregarUsuario\")					$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n		if ($PCO_Accion== \"PCO_GuardarUsuario\")					$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n		if ($PCO_Accion== \"PCO_EliminarUsuario\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n		if ($PCO_Accion== \"PCO_CambiarEstadoUsuario\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n		if ($PCO_Accion== \"PCO_PermisosUsuario\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n		if ($PCO_Accion== \"PCO_AgregarPermiso\")					$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n		if ($PCO_Accion== \"PCO_EliminarPermiso\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n		if ($PCO_Accion== \"PCO_InformesUsuario\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n		if ($PCO_Accion== \"PCO_AgregarInformeUsuario\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n		if ($PCO_Accion== \"PCO_EliminarInformeUsuario\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n        if ($PCO_Accion== \"PCO_CopiarPermisos\")					$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n        if ($PCO_Accion== \"PCO_CopiarInformes\")					$retorno = PCO_PermisoAgregadoAccion(\"PCO_ListarUsuarios\");\n*/\n        if ($PCO_Accion== \"PCO_AgregarUsuarioAutoregistro\")		$retorno = 1;\n        if ($PCO_Accion== \"PCO_GuardarUsuarioAutoregistro\")		$retorno = 1;\n\n		// Funciones en core/menus.php\n		if ($PCO_Accion== \"PCO_VerMenu\")						$retorno = 1;\n		if ($PCO_Accion== \"PCO_ReportarBugs\")					$retorno = 1;\n		if ($PCO_Accion== \"PCO_BuscarPermisosPractico\")			$retorno = 1;\n		if ($PCO_Accion== \"PCO_EliminarMenu\")					$retorno = PCO_PermisoAgregadoAccion(\"PCOFUNC_AdministrarMenu\");\n		// Funciones en core/tablas.php\n		if ($PCO_Accion== \"PCO_AsistenteTablas\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_GuardarCrearTablaAsistente\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_EditarTabla\")					$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_EliminarTabla\")					$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_EliminarCampoTabla\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_GuardarCrearCampo\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_GuardarCrearTabla\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_DefinirCopiaTablas\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_CopiarTabla\")					$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_ImportarTabla\")					$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_ConfirmarImportacionTabla\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_AnalizarImportacionCSV\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_EscogerTablaImportacionCSV\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n		if ($PCO_Accion== \"PCO_EjecutarImportacionCSV\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarTablas\");\n\n		// Funciones en core/formularios.php\n		if ($PCO_Accion== \"PCO_GuardarDatosFormulario\")			$retorno = 1;\n		if ($PCO_Accion== \"PCO_EliminarDatosFormulario\")		$retorno = 1;\n		if ($PCO_Accion== \"PCO_ActualizarDatosFormulario\")		$retorno = 1;\n		if ($PCO_Accion== \"PCO_EjecutarPostAccionForm\")		    $retorno = 1;\n		if ($PCO_Accion== \"PCO_ActualizarJavaEvento\")		    $retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_EditarEventoObjeto\")		        $retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_EliminarEventoObjeto\")		    $retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_ActualizarFormulario\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_CopiarFormulario\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_DefinirCopiaFormularios\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_ActualizarCampoFormulario\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_GuardarFormulario\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_EliminarFormulario\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_EditarFormulario\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_GuardarCampoFormulario\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_EditarFormulario\");\n		if ($PCO_Accion== \"PCO_EliminarCampoFormulario\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_EditarFormulario\");\n		if ($PCO_Accion== \"PCO_GuardarAccionFormulario\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_EditarFormulario\");\n		if ($PCO_Accion== \"PCO_EliminarAccionFormulario\")		$retorno = PCO_PermisoAgregadoAccion(\"PCO_EditarFormulario\");\n		if ($PCO_Accion== \"PCO_ConfirmarImportacionFormulario\")	$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_AnalizarImportacionFormulario\")	$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_ImportarFormulario\")				$retorno = PCO_PermisoAgregadoAccion(\"PCO_AdministrarFormularios\");\n		if ($PCO_Accion== \"PCO_DesplazarObjetosForm\")			$retorno = PCO_PermisoAgregadoAccion(\"PCO_EditarFormulario\");\n\n		// Funciones en core/sesion.php\n		if ($PCO_Accion== \"Iniciar_login\")						$retorno = 1;\n		if ($PCO_Accion== \"Terminar_sesion\")					$retorno = 1;\n		if ($PCO_Accion== \"Mensaje_cierre_sesion\")				$retorno = 1;\n		// Funciones en core/objetos.php\n		if ($PCO_Accion== \"PCO_CargarObjeto\")					$retorno = 1;\n		if ($PCO_Accion== \"cargar_objeto\")						$retorno = 1; //Eliminar despues de version 18.9\n		// Funciones en core/actualizacion.php\n		if ($PCO_Accion== \"cargar_archivo\")						$retorno = PCO_PermisoAgregadoAccion(\"actualizar_practico\");\n		if ($PCO_Accion== \"analizar_parche\")					$retorno = PCO_PermisoAgregadoAccion(\"actualizar_practico\");\n		if ($PCO_Accion== \"aplicar_parche\")						$retorno = PCO_PermisoAgregadoAccion(\"actualizar_practico\");\n		// Funciones en core/ajax.php\n		if ($PCO_Accion== \"opciones_combo_box\")					$retorno = 1;\n		if ($PCO_Accion== \"valor_campo_tabla\")					$retorno = 1;\n		if ($PCO_Accion== \"PCO_ObtenerOpcionesAjaxSelect\")		$retorno = 1;\n\n		// Funciones en core/kanban.php\n        if ($PCO_Accion==\"PCO_ExplorarTablerosKanban\")          $retorno = 1;\n        if ($PCO_Accion==\"PCO_ExplorarTablerosGantt\")           $retorno = 1;\n        if ($PCO_Accion==\"EliminarTableroKanban\")               $retorno = 1; //PCO_PermisoAgregadoAccion(\"PCO_ExplorarTablerosKanban\")\n        if ($PCO_Accion==\"GuardarCreacionKanban\")               $retorno = 1;\n        if ($PCO_Accion==\"VerTareasArchivadas\")                 $retorno = 1;\n        if ($PCO_Accion==\"ArchivarTareaKanban\")                 $retorno = 1;\n        if ($PCO_Accion==\"GuardarTareaKanban\")                  $retorno = 1;\n        if ($PCO_Accion==\"EliminarTareaKanban\")                 $retorno = 1;\n        if ($PCO_Accion==\"GuardarPersonalizacionKanban\")        $retorno = 1;\n        if ($PCO_Accion==\"PCO_ExplorarTablerosKanbanResumido\")  $retorno = 1;\n\n        if (PCO_EsAdministrador($PCOSESS_LoginUsuario))\n            {\n                if ($PCO_Accion==\"PCO_LimpiarCacheSQL\")  $retorno = 1;\n            }\n\n        //VALIDA OTRAS ACCOIONES ESPECIALES\n\n        //Verifica cambios de estado en tableros kanban de usuarios razo\n        if ($PCO_Accion==\"cambiar_estado_campo\")\n            {\n                //Valida si el usuario tiene  al menos un kanban, si la accion es sobre la tabla de kanban\n                $RegistroTableros=PCO_EjecutarSQL(\"SELECT id FROM \".$TablasCore.\"kanban WHERE archivado<>1 AND categoria=\'[PRACTICO][ColumnasTablero]\' AND (login_admintablero=\'$PCOSESS_LoginUsuario\' OR compartido_rw LIKE \'%|$PCOSESS_LoginUsuario|%\') LIMIT 0,1 \")->fetch();\n                if ($RegistroTableros[\"id\"]!=\"\" && $tabla=\"kanban\")\n                    $retorno = 1;\n            }\n\n		//echo $PCOSESS_LoginUsuario.\':Permiso heredado accion=\'.$PCO_Accion.\':\'.$retorno.\'<br>\'; //Activar para depuracion permisos\n		return $retorno;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_RestaurarEtiquetasHTML\n	Determina si hay etiquetas sin cerrar o abrir en un arbol de elementos HTML y las genera.\n*/\nfunction PCO_RestaurarEtiquetasHTML($input)\n	{\n		$opened = array();\n		$closed = array();\n		//loop through opened and closed tags in order\n		if(preg_match_all(\"/<(\\/?[a-z]+)>?/i\", $input, $matches))\n			{\n				foreach($matches[1] as $tag)\n					{\n						if(preg_match(\"/^[a-z]+$/i\", $tag, $regs))\n							{\n								// a tag has been opened\n								if(strtolower($regs[0]) != \'br\')\n									$opened[] = $regs[0];\n							}\n						elseif(preg_match(\"/^\\/([a-z]+)$/i\", $tag, $regs) && in_array($regs[1],$opened))\n							{\n								// a tag has been closed\n								unset($opened[array_pop(array_keys($opened, $regs[1]))]);\n							}\n						else\n							if(preg_match(\"/^\\/([a-z]+)$/i\", $tag, $regs) && !in_array($regs[1],$opened))\n								{\n									//a Tag that has been closed but not open\n									$closed[]=\"<\".$regs[1].\">\";\n								}\n					}\n			}\n\n		// close tags that are still open\n		if($opened)\n			{\n				$tagstoclose = array_reverse($opened);\n				foreach($tagstoclose as $tag)\n					$input .= \"\";\n			}\n		$input1=\'\';\n\n		// open tags that are still close\n		if($closed)\n			{\n				$tagstoopen = array_reverse($closed);\n				foreach($tagstoopen as $tag)\n					$input1 .= $tag;\n			}\n\n		return $input1.\'\'.$input;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_PermisoAgregadoAccion\n	Busca dentro de los permisos agregados de manera explicita al usuario.\n\n	Variables de entrada:\n\n		accion - Accion a ser ejectudada\n		estado_aceptacion - Si el usuario cuenta o no con el permiso solicitado\n\n	Salida:\n		Retorna 1 en caso de encontrar el permiso\n		Retorna 0 cuando no se encuentra un permiso\n*/\nfunction PCO_PermisoAgregadoAccion($PCO_Accion)\n	{\n		// Variable que determina el estado de aceptacion o rechazo del permiso 0=no permiso 1=ok permiso\n		$retorno=0;\n		global $ConexionPDO,$TablasCore,$PCOSESS_LoginUsuario;\n\n		$consulta = $ConexionPDO->prepare(\"SELECT \".$TablasCore.\"menu.id FROM \".$TablasCore.\"usuario_menu,\".$TablasCore.\"menu WHERE \".$TablasCore.\"menu.id=\".$TablasCore.\"usuario_menu.menu AND usuario=\'$PCOSESS_LoginUsuario\' AND \".$TablasCore.\"menu.comando=\'$PCO_Accion\' \");\n		$consulta->execute();\n		$registro = $consulta->fetch();\n		if ($registro[0]!=\"\")\n			{\n				$retorno=1;\n			}\n		//echo $PCOSESS_LoginUsuario.\':Permiso agregado accion=\'.$PCO_Accion.\':\'.$retorno.\'<br>\'; //Activar para depuracion permisos\n		return $retorno;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ConvertirRegistroXML\n	Traduce un registro de base de datos a notacion XML y retorna su cadena equivalente\n\n	Ver tambien:\n		<PCO_CopiarFormulario> | <copiar_informe>\n*/\nfunction PCO_ConvertirRegistroXML($Registro_BD,$ListaCampos,$CodificarBase64=1)\n	{\n		//Inicializa la variable de retorno\n		$Contenido_XML=\"\";\n		// Busca datos y genera XML de cada registro\n		$Elementos_tabla=explode(\",\",$ListaCampos);\n\n		foreach ($Elementos_tabla as $ElementoExportar)\n			{\n				$EtiquetaAperturaXML=\"<$ElementoExportar>\";\n				$EtiquetaCierreXML=\"</$ElementoExportar>\";\n				$ValorEtiqueta=$Registro_BD[$ElementoExportar];\n				if ($CodificarBase64==1)\n					$ValorEtiqueta=base64_encode($ValorEtiqueta);\n				$Contenido_XML .= \"\n	\".$EtiquetaAperturaXML.$ValorEtiqueta.$EtiquetaCierreXML;\n			}\n\n		//Retorna la cadena equivalente\n		return $Contenido_XML;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_PermisoAccion\n	Busca dentro de los permisos del usuario la accion a ejecutar de manera que valida si puede ingresar o no a ella.\n\n	Variables de entrada:\n\n		accion - Accion a ser ejectudada\n\n	Salida:\n		Retorna 1 en caso de encontrar el permiso\n		Retorna 0 cuando no se encuentra un permiso\n*/\nfunction PCO_PermisoAccion($PCO_Accion)\n	{\n		global $PCOSESS_LoginUsuario,$TablasCore;\n		// Variable que determina el estado de aceptacion o rechazo del permiso 0=no permiso 1=ok permiso\n		$retorno=0;\n\n		// Evalua inicialmente permisos para el admin (evita queries)\n		if (PCO_EsAdministrador(@$PCOSESS_LoginUsuario)) $retorno=1;\n\n		// Si es un usuario estandar siempre entra, si es el admin entra si no es permiso raiz\n		if (!$retorno)\n			{\n				// Busca permisos agregados directamente al usuario\n				$retorno=PCO_PermisoAgregadoAccion($PCO_Accion);\n				// Si no encuentra permisos directos, busca en los heredados de los directos\n				if (!$retorno)\n					{\n						// Si no encuentra el permiso directo llama los heredados\n						$retorno=PCO_PermisoHeredadoAccion($PCO_Accion);\n					}\n				//Si no encuentra en los heredados busca en preautorizados por configuracion\n				if (!$retorno)\n					{\n						$resultado=PCO_EjecutarSQL(\"SELECT id from \".$TablasCore.\"parametros WHERE funciones_personalizadas LIKE \'%$PCO_Accion%\' \");\n						$parametros = $resultado->fetch();\n						//Si encuentra un registro con la accion preautorizada entonces autoriza al usuario\n						if ($parametros[\"id\"]!=\"\")\n							$retorno=1;\n					}\n			}\n\n		//echo $PCOSESS_LoginUsuario.\':Permiso accion=\'.$PCO_Accion.\':\'.$retorno.\'<br>\'; //Activar para depuracion permisos\n		return $retorno;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_EscaparContenido\n	Limpia cadenas y URLs a ser impresas para evitar posibles ataques por XSS\n	En general, se debe limpiar cualquier variable enviada por el usuario y que vaya a ser impresa en su navegador para evitar que al imprimirla se puedan enviar javascripts o similares\n\n	Variables de entrada:\n\n		texto - URL, texto, variable de entrada o cualquier otro valor a escapar.\n\n	Salida:\n		Cadena filtrada\n*/\nfunction PCO_EscaparContenido($texto)\n	{\n		//$texto = preg_replace(\'|[^a-z0-9-~+_.?#=!&;,/:%@$\\|*\\\'()\\\\x80-\\\\xff]|i\', \'\', $texto); // Muy estricto\n		$texto = str_ireplace(\"script\",\"\",$texto);\n\n		return $texto;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: gzdecode\n	Crea una funcion de descompresion en caso de no estar disponible en la instalacion de PHP actual\n*/\nif (!function_exists(\'gzdecode\'))\n	{\n		function gzdecode($cadena)\n			{\n				return gzinflate(substr($cadena,10,-8));\n			}\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_LimpiarEntradas\n	Limpia cadenas y URLs a ser impresas segun acciones para evitar XSS\n\n	Salida:\n		Cadenas y variables filtradas sobre sus valores globales\n*/\nfunction PCO_LimpiarEntradas()\n	{\n		global $PCO_Accion,$PCO_ErrorTitulo,$PCO_ErrorDescripcion;\n		// Escapar siempre las acciones pues deberian tener solo letras, numeros y underlines.\n		$PCO_Accion=PCO_EscaparContenido($PCO_Accion);\n		$PCO_Accion = preg_replace(\"/[^A-Za-z0-9_]/\", \"\", $PCO_Accion);\n\n		// Escapa siempre los mensajes de error\n		$PCO_ErrorTitulo=PCO_EscaparContenido(PCO_ReemplazarVariablesPHPEnCadena($PCO_ErrorTitulo));\n		$PCO_ErrorTitulo = preg_replace(\"/[^A-Za-z0-9_ ><]/\", \"\", $PCO_ErrorTitulo);\n		$PCO_ErrorDescripcion=PCO_EscaparContenido(PCO_ReemplazarVariablesPHPEnCadena($PCO_ErrorDescripcion));\n		$PCO_ErrorDescripcion = preg_replace(\"/[^A-Za-z0-9_ ><]/\", \"\", $PCO_ErrorDescripcion);\n\n		// Escapa otras variables de uso comun\n		global $PCO_ErrorTitulo,$PCO_ErrorDescripcion;\n		$PCO_ErrorTitulo=PCO_EscaparContenido(PCO_ReemplazarVariablesPHPEnCadena($PCO_ErrorTitulo));\n		$PCO_ErrorDescripcion=PCO_EscaparContenido(PCO_ReemplazarVariablesPHPEnCadena($PCO_ErrorDescripcion));\n\n		// Escapar algunas variables segun la accion recibida\n\n		if ($PCO_Accion==\"PCO_AdministrarFormularios\")\n			{\n				global $PCO_ErrorDescripcion,$PCO_ErrorTitulo;\n				$PCO_ErrorDescripcion=PCO_EscaparContenido(PCO_ReemplazarVariablesPHPEnCadena($PCO_ErrorDescripcion));\n				$PCO_ErrorTitulo=PCO_EscaparContenido(PCO_ReemplazarVariablesPHPEnCadena($PCO_ErrorTitulo));\n			}\n\n		if ($PCO_Accion==\"actualizar_menu\")\n			{\n				global $id;\n				$id=PCO_EscaparContenido($id);\n			}\n\n		if ($PCO_Accion==\"detalles_menu\")\n			{\n				global $id;\n				$id=PCO_EscaparContenido($id);\n			}\n\n		if ($PCO_Accion==\"PCO_EditarInforme\")\n			{\n				//\n				global $informe;\n				$informe=PCO_EscaparContenido($informe);\n			}\n\n		if ($PCO_Accion==\"PCO_ListarUsuarios\")\n			{\n				global $login_filtro,$nombre_filtro;\n				$login_filtro=PCO_EscaparContenido($login_filtro);\n				$nombre_filtro=PCO_EscaparContenido($nombre_filtro);\n			}\n\n		if ($PCO_Accion==\"PCO_CargarObjeto\")\n			{\n				global $PCO_Objeto;\n				$PCO_Objeto=PCO_EscaparContenido($PCO_Objeto);\n			}\n\n		if ($PCO_Accion==\"PCO_GuardarFormulario\")\n			{\n				global $tabla_datos;\n				$tabla_datos=PCO_EscaparContenido($tabla_datos); // Revisar si afecta el script de autorun\n			}\n\n		if ($PCO_Accion==\"Iniciar_login\")\n			{\n				global $uid,$clave,$captcha;\n				$uid=PCO_EscaparContenido($uid);\n				$clave=PCO_EscaparContenido($clave);\n				$captcha=PCO_EscaparContenido($captcha);\n			}\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_TextoAleatorio\n	Genera un texto alfanumerico aleatorio de una longitud determinada\n\n	Variables de entrada:\n\n		longitud - Numero de caracteres que deben ser retornados en la cadena\n\n	Salida:\n		Cadena aleatoria\n*/\nfunction PCO_TextoAleatorio($longitud)\n	{\n		$plantilla = \"23456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n		$clave=\"\";\n		for($i=0;$i<$longitud;$i++)\n			{\n				$clave .= $plantilla{rand(0,strlen($plantilla)-1)};\n			}\n		return $clave;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_CodigoQR\n	Genera un codigo QR a partir de los parametros recibidos\n\n	Variables de entrada:\n\n		contenido - Texto que debera ser representado en el codigo QR\n		recuperacion_errores - Recuperacion de errores para el codigo (L,M,Q,H) L el mas bajo, H el mas alto\n		ancho_pixeles - Tamano de cada cuadro del codigo en pixeles\n		margen_pixeles - La margen externa del codigo QR\n		ruta_almacenamiento - Path sobre el cual se almacenara el codigo, debe contar con permisos de escritura\n		archivo - nombre de archivo (sin extension) sobre el cual sera guardado el codigo\n\n	Salida:\n		Imagen generada para el codigo QR\n*/\nfunction PCO_CodigoQR($contenido,$recuperacion_errores=\"L\",$ancho_pixeles=3,$margen_pixeles=1,$ruta_almacenamiento=\"tmp/\",$archivo=\"\")\n	{\n		include_once(\"inc/qrcode/qrcode.php\");\n		//Si no se recibe un archivo entonces genera uno aleatorio\n		if ($archivo==\"\") $archivo=\"QR\".PCO_TextoAleatorio(15);\n		//Genera el archivo con el QR\n		$Ruta_QRC=$ruta_almacenamiento.$archivo.\".png\";\n		QRcode::png($contenido, $Ruta_QRC, $recuperacion_errores, $ancho_pixeles, $margen_pixeles);\n		//Devuelve el codigo QR como etiqueta de imagen HTML\n		return \'<img src=\"\'.$Ruta_QRC.\'\" alt=\"\" border=\"0\">\';\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_FiltrarCadenaSQL\n	Filtra los caracteres existentes en una cadena de manera que no permita comillas sencillas, backslash o cualquier otro caracter que genere problemas en las consultas o posibles fallos de seguridad derivados de un SQLInjection\n\n	Variables de entrada:\n\n		cadena - Cadena a filtrar\n\n	Salida:\n		Retorna cadena sin caracteres ilegales o posibles inyecciones\n\n		\' or \"=\'\n		\'\' or 1=1 -- and \'\'=\'\'\n		admin\' --\n		admin\' #\n		admin\'/*\n		\' or 1=1--\n		\' or 1=1#\n		\' or 1=1/*\n		\') or \'1\'=\'1--\n		\') or (\'1\'=\'1--\n		1\' and \'\'=\'\n		\' OR \'A\'=\'A\n		$username = 1\' or \'1\' = \'1\n\n\n\n\n\n*/\nfunction PCO_FiltrarCadenaSQL($cadena)\n	{\n		global $PCO_Accion;\n\n		if ($PCO_Accion==\"Iniciar_login\")\n			{\n				$cadena = str_ireplace(\"\'\'\",\"\'\",$cadena);\n				$cadena = str_ireplace(\"\\\\\",\"\",$cadena);\n				$cadena = str_ireplace(\"COPY \",\"\",$cadena);\n				$cadena = str_ireplace(\"DELETE \",\"\",$cadena);\n				$cadena = str_ireplace(\"DROP \",\"\",$cadena);\n				$cadena = str_ireplace(\"DUMP \",\"\",$cadena);\n				$cadena = str_ireplace(\" OR \",\"\",$cadena);\n				$cadena = str_ireplace(\"%\",\"\",$cadena);\n				$cadena = str_ireplace(\" LIKE \",\"\",$cadena);\n				$cadena = str_ireplace(\"--\",\"\",$cadena);\n				$cadena = str_ireplace(\"^\",\"\",$cadena);\n				$cadena = str_ireplace(\"[\",\"\",$cadena);\n				$cadena = str_ireplace(\"]\",\"\",$cadena);\n				$cadena = str_ireplace(\"!\",\"\",$cadena);\n				$cadena = str_ireplace(\"¡\",\"\",$cadena);\n				$cadena = str_ireplace(\"?\",\"\",$cadena);\n				$cadena = str_ireplace(\"&\",\"\",$cadena);\n			}\n\n		// Expresiones que siempre deben ser filtradas\n		$cadena = str_ireplace(\"BENCHMARK\",\"\",$cadena);\n\n		/*\n		array_walk($_POST, \'PCO_FiltrarCadenaSQL\');\n		array_walk($_GET, \'PCO_FiltrarCadenaSQL\');\n		//$cadena = str_ireplace(\"SELECT\",\"\",$cadena);\n		//$cadena = str_ireplace(\"=\",\"\",$cadena);\n		*/\n		return $cadena;\n	}\n\n\n/* ##################################################################\n   ##################################################################\n    Function: PCO_CompletarParametros\n    reemplaza los parametros, solo se usa para depuracion\n\n    Variables de entrada:\n\n        string -\n        data -\n\n    Salida:\n        Retorna la cadena de consulta con valores formateada para impresion\n*/\nfunction PCO_CompletarParametros($Cadena,$data)\n    {\n        $indexed=$data==array_values($data);\n        foreach($data as $k=>$v) {\n            if(is_string($v))\n	      if($v ==\'\')\n		$v=\"NULL\";\n	      else\n	        $v=\"\'$v\'\";\n            if($indexed)\n              if($v ==\'\')\n		$Cadena=preg_replace(\'/\\?/\',\'NULL\',$Cadena,1);\n	      else\n		$Cadena=preg_replace(\'/\\?/\',$v,$Cadena,1);\n            else\n              if($v ==\'\')\n		$Cadena=str_replace(\":$k\",\"NULL\",$Cadena);\n	      else\n	        $Cadena=str_replace(\":$k\",$v,$Cadena);\n        }\n        return $Cadena;\n    }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ObtenerUltimoIDInsertado\n	Segun el motor, obtiene el ultimo ID de registro insertado en la conexion especificada\n\n	Variables de entrada:\n\n		ConexionBD - Determina si la consulta debe ser ejecutada en otra conexion o motor.  Se hace obligatorio enviar parametros cuando se envia otra conexion\n\n	Salida:\n		Retorna valor de ID de registro o vacio si no se encuentra alguno\n*/\nfunction PCO_ObtenerUltimoIDInsertado($ConexionBD=\"\")\n	{\n		global $MotorBD,$ConexionPDO;\n        if ($ConexionBD==\"\")  $ConexionBD=$ConexionPDO;\n        $id_ultimo_registro_insertado=\"\";\n\n		if ($MotorBD==\"mysql\")\n			{\n		        $id_ultimo_registro_insertado=$ConexionBD->lastInsertId();\n		    }\n		//Si el motor no soporta adecuadamente el lastInsertId() hace funcion manual\n		if ($MotorBD==\"dblib_mssql\")\n			{\n				$registro_ultimo_id=PCO_EjecutarSQL(\"SELECT SCOPE_IDENTITY()\",\"\",$ConexionBD,1)->fetch();\n				$id_ultimo_registro_insertado=$registro_ultimo_id[0];\n			}\n		if ($MotorBD==\"oracle\")\n			{\n				$registro_ultimo_id=PCO_EjecutarSQL(\"SELECT SEQNAME.CURRVAL FROM DUAL;\",\"\",$ConexionBD,1)->fetch();\n				$id_ultimo_registro_insertado=$registro_ultimo_id[0];\n			}\n		if ($MotorBD==\"pgsql\")\n			{\n				$registro_ultimo_id=PCO_EjecutarSQL(\"SELECT lastval();\",\"\",$ConexionBD,1)->fetch();\n				$id_ultimo_registro_insertado=$registro_ultimo_id[0];\n			}\n\n        return $id_ultimo_registro_insertado;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_EjecutarSQL\n	Ejecuta consultas que retornan registros (SELECTs).\n\n	Variables de entrada:\n\n		query - Consulta preformateada para ser ejecutada en el motor\n		lista_parametros - Lista de variables PHP con parametros que deben ser preparados para el query separados por $_SeparadorCampos_\n		ConexionBD - Determina si la consulta debe ser ejecutada en otra conexion o motor.  Se hace obligatorio enviar parametros cuando se envia otra conexion\n\n	Salida:\n		Retorna mensaje en pantalla con la descripcion devuelta por el driver en caso de error\n		Retorna una variable con el arreglo de resultados en caso de ser exitosa la consulta\n*/\n    //Funcion para compatibilidad hacia atras.  Desaparecera en la version 18.9\n    function ejecutar_sql($query,$lista_parametros=\"\",$ConexionBD=\"\",$ReplicaRecursiva=1,$EvitarLogSQL=0)\n    { echo \"ERROR: Llamado a funcion obsoleta del framework ejecutar_sql().  En su lugar utilice PCO_EjecutarSQL() \"; }\nfunction PCO_EjecutarSQL($query,$lista_parametros=\"\",$ConexionBD=\"\",$EvitarLogSQL=0)\n	{\n		//Determina si se debe usar la conexion global del sistema o una especifica de usuario\n		if($ConexionBD==\"\")\n			global $ConexionPDO;\n		else\n			$ConexionPDO=$ConexionBD;\n\n		global $ModoDepuracion;\n		global $MULTILANG_ErrorTiempoEjecucion,$MULTILANG_Detalles,$MULTILANG_ErrorSoloAdmin,$MULTILANG_Archivo;\n		global $PCO_Accion;\n		global $PCOSESS_LoginUsuario,$_SeparadorCampos_,$DepuracionSQL;\n\n		// Filtra la cadena antes de ser ejecutada\n		$query=PCO_FiltrarCadenaSQL($query);\n\n		try\n			{\n				$consulta = $ConexionPDO->prepare($query);\n				//Cuando se reciben parametros entonces se asume recepcion de querys con  interrogaciones  ?\n				//que deben ser preparados antes de ejecutarse con cada uno de los parametros recibidos\n				if ($lista_parametros!=\"\")\n					{\n						$cantidad_parametros=substr_count($query,\'?\');\n						$parametros=@explode($_SeparadorCampos_,$lista_parametros);\n						// if ($cantidad_parametros!=count($parametros)) //La cantidad de parametros en query es diferente a los recibidos\n						//Recorre cada parametro y toma su valor\n						for ($i=1;$i<=$cantidad_parametros;$i++)\n							{\n                                /*\n                                //Si no recibe valor en el parametro hace el bind con vacio para al menos hacerlo valido\n                                if($parametros[$i-1] == \"\")\n                                    $consulta->bindValue($i,\'\');  // $consulta->bindValue($i,PDO::PARAM_NULL);\n                                else\n                                */\n                                    $consulta->bindValue($i, $parametros[$i-1]);\n								//echo \'Parametro \'.$i.\'=\'.$parametros[$i-1].\"<br>\"; //PARA DEPURACION\n							}\n					}\n				$consulta->execute();\n\n				//Lleva el log a auditoria en caso de estar encendido\n				if ($EvitarLogSQL==0)\n					if ($DepuracionSQL==1)\n						PCO_Auditar($query,\"SQLog:$PCOSESS_LoginUsuario\");\n\n				return $consulta;\n				//return $consulta->fetchAll();\n			}\n		catch( PDOException $ErrorPDO)\n			{\n			    //Lleva el log de errores\n			    PCO_Auditar($query,\"SQLog:error\");\n			    $mensaje_final=\'\';\n			    $detalles_conexion=\' (CNX=\'.$ConexionPDO->getAttribute(PDO::ATTR_CONNECTION_STATUS).\') \';\n				//Muestra detalles del query solo al admin y si el modo de depuracion se encuentra activo\n				if (PCO_EsAdministrador(@$PCOSESS_LoginUsuario))\n					$mensaje_final.=$ErrorPDO->getMessage().\'<br><b>\'.$MULTILANG_Detalles.\'</b>: \'.@PCO_CompletarParametros($query,$parametros).$detalles_conexion.\"<br><b>$MULTILANG_Archivo</b>: \".$ErrorPDO->getFile().\" -> \".$ErrorPDO->getLine();\n				else\n					$mensaje_final.=\'<b>\'.$MULTILANG_Detalles.\'</b>: \'.$detalles_conexion.$MULTILANG_ErrorSoloAdmin;\n\n				//Presenta el mensaje sobre el HTML y como Emergente JS\n                PCO_Mensaje($MULTILANG_ErrorTiempoEjecucion,$mensaje_final, \'\', \'fa fa-times fa-5x icon-red texto-blink\', \'alert alert-danger alert-dismissible\');\n				echo \'<script type=\"\" language=\"JavaScript\"> alert(\"\'.$MULTILANG_ErrorTiempoEjecucion.\'\\\\n\\\\n\'.$mensaje_final.\'\");</script>\';\n				//Redirecciona segun la accion\n				if ($PCO_Accion==\"Iniciar_login\")\n					echo \'<form name=\"Acceso\" action=\"\'.$ArchivoCORE.\'\" method=\"POST\"><input type=\"Hidden\" name=\"PCO_Accion\" value=\"\"></form><script type=\"\" language=\"JavaScript\">	document.Acceso.submit();  </script>\';\n				return 1;\n			}\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_EjecutarNoSQL\n	Ejecuta consultas hacia motores NoSQL\n\n	Variables de entrada:\n\n		ConexionNoSQL - Variable de conexion previamente creada\n		LlaveRegistro - Consulta preformateada para ser ejecutada en el motor\n\n	Salida:\n		Retorna mensaje en pantalla con la descripcion devuelta por el driver en caso de error\n		Retorna una variable con el arreglo de resultados en caso de ser exitosa la consulta\n*/\n    //Funcion para compatibilidad hacia atras.  Desaparecera en la version 18.9\n    function ejecutar_nosql($ConexionNoSQL,$LlaveRegistro=\"\")\n    { echo \"ERROR: Llamado a funcion obsoleta del framework ejecutar_nosql().  En su lugar utilice PCO_EjecutarNoSQL() \"; }\nfunction PCO_EjecutarNoSQL($ConexionNoSQL,$LlaveRegistro=\"\")\n	{\n		global $ModoDepuracion;\n		global $MULTILANG_ErrorTiempoEjecucion,$MULTILANG_Detalles,$MULTILANG_ErrorSoloAdmin;\n		global $PCO_Accion;\n		global $PCOSESS_LoginUsuario;\n		try\n			{\n				if ($ConexionNoSQL[TipoMotor]==\"couchbase\")\n					{\n						//Si la llave de registro para consulta unica fue entregada hace la operacion\n						if ($LlaveRegistro!=\"\")\n							$ResultadosNoSQL = $ConexionNoSQL[Enlace]->get($LlaveRegistro);\n					}\n				return $ResultadosNoSQL;\n			}\n		catch( Exception $CODError)\n			{\n				//Muestra detalles del query solo al admin y si el modo de depuracion se encuentra activo\n				if (PCO_EsAdministrador(@$PCOSESS_LoginUsuario))\n					$mensaje_final=$CODError->getMessage().\'<br><b>\'.$MULTILANG_Detalles.\'</b>: \';\n				else\n					$mensaje_final=\'<b>\'.$MULTILANG_Detalles.\'</b>: \'.$MULTILANG_ErrorSoloAdmin;\n				//Presenta el mensaje sobre el HTML y como Emergente JS\n                PCO_Mensaje($MULTILANG_ErrorTiempoEjecucion,$mensaje_final, \'\', \'fa fa-times fa-5x icon-red texto-blink\', \'alert alert-danger alert-dismissible\');\n				echo \'<script type=\"\" language=\"JavaScript\"> alert(\"\'.$MULTILANG_ErrorTiempoEjecucion.\'\\\\n\\\\n\'.$mensaje_final.\'\");</script>\';\n				//Redirecciona segun la accion\n				if ($PCO_Accion==\"Iniciar_login\")\n					echo \'<form name=\"Acceso\" action=\"\'.$ArchivoCORE.\'\" method=\"POST\"><input type=\"Hidden\" name=\"PCO_Accion\" value=\"\"></form><script type=\"\" language=\"JavaScript\">	document.Acceso.submit();  </script>\';\n				return 1;\n			}\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_EjecutarSQLUnaria\n	Ejecuta consultas que no retornan registros tales como CREATE, INSERT, DELETE, UPDATE entre otros.\n\n	Variables de entrada:\n\n		query - Consulta preformateada para ser ejecutada en el motor\n		param - Lista de parametros que deben ser preparados para el query separados por coma\n		ConexionBD - Determina si la consulta debe ser ejecutada en otra conexion o motor.  Se hace obligatorio enviar parametros cuando se envia otra conexion\n		ReplicaRecursiva - Indica si se deben buscar o no conexiones adicionales para realizar replica de oepraciones.  Normalmente inicia en 1, pero las llamadas sucesivas se hacen en 0 para evitar llamadas infinitas\n\n	Salida:\n		Retorna una cadena que contiene una descripcion de error PDO en caso de error y agrega un mensaje en pantalla con la descripcion devuelta por el driver\n		Retorna una cadena vacia si la consulta es ejecutada sin problemas.\n*/\n    //Funcion para compatibilidad hacia atras.  Desaparecera en la version 18.9\n    function ejecutar_sql_unaria($query,$lista_parametros=\"\",$ConexionBD=\"\",$ReplicaRecursiva=1,$EvitarLogSQL=0)\n    { echo \"ERROR: Llamado a funcion obsoleta del framework ejecutar_sql_unaria().  En su lugar utilice PCO_EjecutarSQLUnaria() \"; }\nfunction PCO_EjecutarSQLUnaria($query,$lista_parametros=\"\",$ConexionBD=\"\",$ReplicaRecursiva=1,$EvitarLogSQL=0)\n	{\n		global $ListaCamposSinID_replicasbd,$TablasCore,$DepuracionSQL;\n		//Si aplica la replica recursiva entonces busca las conexiones\n		if ($ReplicaRecursiva==1)\n			{\n				//Busca conexiones configuradas como replica\n				$ConexionesReplica=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_replicasbd.\" FROM \".$TablasCore.\"replicasbd WHERE tipo_replica=1 \");\n				//Recorre cada conexion de replica encontrada para realizar la operacion\n				while ($registro_conexion = $ConexionesReplica->fetch())\n					{\n						global ${$registro_conexion[\"nombre\"]};\n						//Hace el llamado a la operacion de replica sobre la conexion encontrada\n						PCO_EjecutarSQLUnaria($query,$lista_parametros,${$registro_conexion[\"nombre\"]},0);\n					}\n			}\n\n		//Determina si se debe usar la conexion global del sistema o una especifica de usuario\n		if($ConexionBD==\"\")\n			global $ConexionPDO;\n		else\n			$ConexionPDO=$ConexionBD;\n\n		global $ModoDepuracion;\n		global $PCOSESS_LoginUsuario,$_SeparadorCampos_;\n		global $MULTILANG_ErrorTiempoEjecucion,$MULTILANG_Detalles,$MULTILANG_ErrorSoloAdmin,$MULTILANG_ContacteAdmin,$MULTILANG_MotorBD;\n		try\n			{\n				$consulta = $ConexionPDO->prepare($query);\n				//Cuando se reciben parametros entonces se asume recepcion de querys con  interrogaciones  ?\n				//que deben ser preparados antes de ejecutarse con cada uno de los parametros recibidos\n				if ($lista_parametros!=\"\")\n					{\n						$cantidad_parametros=substr_count($query,\'?\');\n						$parametros=@explode($_SeparadorCampos_,$lista_parametros);\n						// if ($cantidad_parametros!=count($parametros)) //La cantidad de parametros en query es diferente a los recibidos\n						//Recorre cada parametro y toma su valor\n						for ($i=1;$i<=$cantidad_parametros;$i++)\n							{\n                                //Si no recibe valor en el parametro hace el bind con null para al menos hacerlo valido\n                                /*\n                                if($parametros[$i-1] == \'\')\n                                    //$consulta->bindValue($i,PDO::PARAM_NULL);\n                                    //$consulta->bindValue($i,\'\');\n                                    //$consulta->bindValue($i,$parametros[$i-1]);\n                                    $consulta->bindParam($i,$parametros[$i-1]);\n                                else\n                                    //$consulta->bindValue($i, $parametros[$i-1]);\n                                */\n                                    //$consulta->bindValue($i, iconv(\"UTF-8\", \"ISO-8859-1//TRANSLIT\", $parametros[$i-1]));\n                                    //$consulta->bindValue($i, utf8_encode($parametros[$i-1]));\n                                    $consulta->bindValue($i, $parametros[$i-1]);\n								//echo \'Parametro \'.$i.\'=\'.$parametros[$i-1].\"<br>\"; //PARA DEPURACION\n							}\n					}\n				$consulta->execute();\n\n				//Lleva el log a auditoria en caso de estar encendido\n				if ($EvitarLogSQL==0)\n					if ($DepuracionSQL==1)\n						PCO_Auditar($query,\"SQLog:$PCOSESS_LoginUsuario\");\n\n				return $consulta;\n			}\n		catch( PDOException $ErrorPDO)\n			{\n			    //Lleva el log de errores\n			    PCO_Auditar($query,\"SQLog:error\");\n			    $detalles_conexion=\' (CNX=\'.$ConexionPDO->getAttribute(PDO::ATTR_CONNECTION_STATUS).\') \';\n				//Muestra detalles del query solo al admin y si el modo de depuracion se encuentra activo\n				if (PCO_EsAdministrador(@$PCOSESS_LoginUsuario))\n                    echo \'<script language=\"JavaScript\"> alert(\"\'.$MULTILANG_ErrorTiempoEjecucion.\'\\n\'.$MULTILANG_Detalles.\': \'.PCO_CompletarParametros($query,$parametros).\'\\n\\n\'.$detalles_conexion.\'\\n\\n\'.$MULTILANG_MotorBD.\': \'.$ErrorPDO->getMessage().\'.\\n\\n\'.$MULTILANG_ContacteAdmin.\'\");  </script>\';\n				else\n					echo \'<script language=\"JavaScript\"> alert(\"\'.$MULTILANG_ErrorTiempoEjecucion.\'\\n\'.$MULTILANG_Detalles.\': \'.$detalles_conexion.\'\\n\\n\'.$MULTILANG_ErrorSoloAdmin.\'.\\n\\n\'.$MULTILANG_ContacteAdmin.\'\");  </script>\';\n				return $MULTILANG_ErrorTiempoEjecucion;\n			}\n	}\n\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ProcedimientoSQL\n	Ejecuta procedimientos almacenados por la base de datos\n\n	Variables de entrada:\n\n		procedimiento - Procedimiento que debe residir en la base de datos y que ha de ser ejecutado\n		ConexionBD - Determina si la consulta debe ser ejecutada en otra conexion o motor.  Se hace obligatorio enviar parametros cuando se envia otra conexion\n\n	Salida:\n		Retorna 0 en caso de tener problemas con la ejecucion del procedimiento\n		Retorna una cadena vacia si el procedimiento es llamado y ejecutado sin problemas\n*/\n    //Funcion para compatibilidad hacia atras.  Desaparecera en la version 18.9\n    function ejecutar_sql_procedimiento($procedimiento,$ConexionBD=\"\")\n    { echo \"ERROR: Llamado a funcion obsoleta del framework ejecutar_sql_procedimiento().  En su lugar utilice PCO_ProcedimientoSQL() \"; }\nfunction PCO_ProcedimientoSQL($procedimiento,$ConexionBD=\"\")\n	{\n		//Determina si se debe usar la conexion global del sistema o una especifica de usuario\n		if($ConexionBD==\"\")\n			global $ConexionPDO;\n		else\n			$ConexionPDO=$ConexionBD;\n\n		try\n			{\n				$ConexionPDO->exec($procedimiento);\n				return \"\";\n			}\n		catch(PDOException $e)\n			{\n				return $e->getMessage();\n			}\n	}\n\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_Auditar\n	Lleva un registro de auditoria en el sistema\n\n	Variables de entrada:\n\n		accion - Descripcion de la accion a ser almacenada en la auditoria\n\n	Salida:\n\n		Registro de auditoria llevado sobre la tabla\n*/\n    //Funcion para compatibilidad hacia atras.  Desaparecera en la version 18.9\n    function auditar($PCO_Accion,$usuario=\"\")\n    { echo \"ERROR: Llamado a funcion obsoleta del framework auditar().  En su lugar utilice PCO_Auditar() \"; }\nfunction PCO_Auditar($PCO_Accion,$usuario=\"\")\n	{\n		global $ArchivoCORE,$TablasCore;\n		global $ListaCamposSinID_auditoria,$_SeparadorCampos_;\n		global $PCOSESS_LoginUsuario,$PCO_FechaOperacion,$PCO_HoraOperacion;\n		//Establece el usuario para el registro\n		if ($usuario==\"\")\n			$usuario_auditar=$PCOSESS_LoginUsuario;\n		else\n			$usuario_auditar=$usuario;\n		//Lleva el registro\n		PCO_EjecutarSQLUnaria(\"INSERT INTO \".$TablasCore.\"auditoria (\".$ListaCamposSinID_auditoria.\") VALUES (?,?,?,?)\",\"$usuario_auditar$_SeparadorCampos_$PCO_Accion$_SeparadorCampos_$PCO_FechaOperacion$_SeparadorCampos_$PCO_HoraOperacion\",\"\",\"\",1,1);\n	}\n\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ExisteValor\n	Busca dentro de alguna tabla para verificar si existe o no un valor determinado.  Funcion utilizada para validacion de unicidad de valores en formularios de datos.\n\n	Variables de entrada:\n\n		tabla - Nombre de la tabla donde se desea buscar.\n		campo - Campo de la tabla sobre el cual se desea comparar la existencia del valor.\n		valor - Valor a buscar dentro del campo.\n\n	Salida:\n		Retorna 1 en caso de encontrar un valor dentro de la tabla y campo especificadas y que coincida con el parametro buscado\n		Retorna 0 cuando no se encuentra un valor en la tabla que coincida con el buscado\n*/\nfunction PCO_ExisteValor($tabla,$campo,$valor)\n	{\n		global $ConexionPDO;\n		$consulta = $ConexionPDO->prepare(\"SELECT $campo FROM $tabla WHERE $campo=\'$valor\'\");\n		$consulta->execute();\n		$registro = $consulta->fetch();\n		if ($registro[0]!=\"\")\n			{\n				return 1;\n			}\n		else\n			{\n				return 0;\n			}\n	}\n\n\n\n########################################################################\n########################################################################\n	/*\n		Section: Funciones asociadas al retorno de informacion sobre la conexion y estructura de la BD\n	*/\n########################################################################\n########################################################################\n/*\n	Function: PCO_InformacionConexionBD\n	Imprime la informacion asociada a la conexion establecida mediante PDO.\n\n	Ver tambien:\n	<PCO_ImprimirDriversDisponiblesnBD> | <Definicion de conexion PDO>\n*/\nfunction PCO_InformacionConexionBD()\n	{\n		echo \"<hr><center><blink><b><font color=yellow>\".$MULTILANG_Detalles.\":</font></b></blink><br>\";\n		echo $MULTILANG_Controlador.\': \'.$ConexionPDO->getAttribute(PDO::ATTR_DRIVER_NAME).\'<br>\';\n		echo $MULTILANG_Version.\' \'.$MULTILANG_Servidor.\': \'.$ConexionPDO->getAttribute(PDO::ATTR_SERVER_VERSION).\'<br>\';\n		echo $MULTILANG_Estado.\': \'.$ConexionPDO->getAttribute(PDO::ATTR_CONNECTION_STATUS).\'<br>\';\n		echo $MULTILANG_Version.\' \'.$MULTILANG_Cliente.\': \'.$ConexionPDO->getAttribute(PDO::ATTR_CLIENT_VERSION).\'<br>\';\n		echo $MULTILANG_InfoAdicional.\': \'.$ConexionPDO->getAttribute(PDO::ATTR_SERVER_INFO).\'<hr>\';\n	}\n\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ImprimirDriversDisponiblesnBD\n	Imprime el arreglo devuelto por la funcion getAvailableDrivers() para conocer los drivers soportados por la instalacion actual de PHP del lado del servidor.\n\n	Salida:\n		Listado de drivers PDO soportados\n\n	Ver tambien:\n	<PCO_InformacionConexionBD>\n*/\nfunction PCO_ImprimirDriversDisponiblesnBD()\n	{\n		/*foreach(PDO::getAvailableDrivers() as $driver)\n			{\n				echo \"<hr>\".$driver;\n			}*/\n		print_r(PDO::getAvailableDrivers());\n	}\n\n\n\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ConsultarTablas\n	Determina las tablas en la base de datos activa para la conexion dependiendo del motor utilizado.\n\n	Variables de entrada:\n\n		prefijo - Prefijo del nombre de tablas que seran retornadas\n\n	Salida:\n		Resultado de un query con las tablas  o falso en caso de error\n\n	Ver tambien:\n	<Definicion de conexion PDO>\n*/\nfunction PCO_ConsultarTablas($prefijo=\"\",$ConexionAlterna=\"\",$MotorAlterno=\"\",$BaseDatosAlterna=\"\")\n	{\n		global $MULTILANG_ErrorTiempoEjecucion;\n		//Determina si se debe usar la conexion global del sistema o una especifica de usuario\n		if($ConexionAlterna==\"\")\n		    {\n			    global $ConexionPDO;\n    			global $MotorBD;\n    			global $BaseDatos;\n		    }\n		else\n		    {\n			    $ConexionPDO=$ConexionAlterna;\n    			$MotorBD=$MotorAlterno;\n    			$BaseDatos=$BaseDatosAlterna;\n		    }\n\n		if($MotorBD==\"sqlsrv\" || $MotorBD==\"mssql\" || $MotorBD==\"ibm\" || $MotorBD==\"dblib\" || $MotorBD==\"odbc\")\n				$consulta = \"SELECT name FROM sysobjects WHERE xtype=\'U\';\";\n		if($MotorBD==\"sqlite\")\n				$consulta = \"SELECT name FROM sqlite_master WHERE type IN (\'table\',\'view\') AND name NOT LIKE \'sqlite_%\' UNION ALL SELECT name FROM sqlite_temp_master WHERE type IN (\'table\',\'view\') ORDER BY 1\";\n		if($MotorBD==\"oracle\")\n				$consulta = \"SELECT table_name FROM cat;\";  //  Si falla probar con esta:  $consulta = \"SELECT table_name FROM tabs;\";\n		if($MotorBD==\"ifmx\" || $MotorBD==\"fbd\")\n				$consulta = \"SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0 AND RDB$VIEW_BLR IS NULL ORDER BY RDB$RELATION_NAME;\";\n		if($MotorBD==\"mysql\")\n				$consulta = \"SHOW tables FROM \".$BaseDatos.\" \";\n		if($MotorBD==\"pgsql\")\n				$consulta = \"SELECT relname AS name FROM pg_stat_user_tables ORDER BY relname;\";\n\n		try\n			{\n				$consulta_tablas=PCO_EjecutarSQL($consulta,\"\",$ConexionPDO,1);\n				return $consulta_tablas;\n			}\n		catch( PDOException $ErrorPDO)\n			{\n                PCO_Mensaje($MULTILANG_ErrorTiempoEjecucion,$ErrorPDO->getMessage(), \'\', \'fa fa-times fa-5x icon-red texto-blink\', \'alert alert-danger alert-dismissible\');\n				return false;\n			}\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: consultar_nombres_columnas\n	Devuelve un arreglo escalar y asociativo con los nombres de las columnas de una tabla y sus datos generales\n\n	Variables de entrada:\n\n		tabla - Nombre de la tabla de la que se desea consultar los nombre de columnas o campos\n\n	Salida:\n		Vector de campos/columnas\n\n	Ver tambien:\n	<PCO_ConsultarTablas>\n*/\nfunction PCO_ConsultarColumnas($tabla,$ConexionAlterna=\"\",$MotorAlterno=\"\",$BaseDatosAlterna=\"\")\n	{\n		global $MULTILANG_ErrorTiempoEjecucion;\n		//Determina si se debe usar la conexion global del sistema o una especifica de usuario\n		if($ConexionAlterna==\"\")\n		    {\n			    global $ConexionPDO;\n    			global $MotorBD;\n    			global $BaseDatos;\n		    }\n		else\n		    {\n			    $ConexionPDO=$ConexionAlterna;\n    			$MotorBD=$MotorAlterno;\n    			$BaseDatos=$BaseDatosAlterna;\n		    }\n\n		//Busca los campos dependiendo del motor de BD configurado actualmente\n		if ($MotorBD==\"mysql\" || $MotorBD==\"sqlsrv\" || $MotorBD==\"mssql\" || $MotorBD==\"ibm\" || $MotorBD==\"dblib\" || $MotorBD==\"odbc\" || $MotorBD==\"oracle\" || $MotorBD==\"ifmx\" || $MotorBD==\"fbd\")\n			{\n				$columna=0;\n				$resultado=PCO_EjecutarSQL(\"DESCRIBE $tabla \",\"\",$ConexionPDO,1);\n				//echo $resultado;\n				//Evalua si se retorno 1 (error) por la funcion para saber si sigue o no\n				//if($resultado!=\"1\")\n					{\n						while($registro = $resultado->fetch())\n							{\n								$columnas[$columna][\"nombre\"] = $registro[\"Field\"];\n								$columnas[$columna][\"tipo\"] = $registro[\"Type\"];\n								$columnas[$columna][\"nulo\"] = $registro[\"Null\"];\n								$columnas[$columna][\"llave\"] = $registro[\"Key\"];\n								$columnas[$columna][\"predefinido\"] = $registro[\"Default\"];\n								$columnas[$columna][\"extras\"] = $registro[\"Extra\"];\n								$columna++;\n							}\n					}\n				/*else\n					{\n								$columnas[$columna][\"nombre\"] = \"ERROR: Tabla no conectada\";\n								$columnas[$columna][\"tipo\"] = \"ERROR: Tabla no conectada\";\n								$columnas[$columna][\"nulo\"] = \"ERROR: Tabla no conectada\";\n								$columnas[$columna][\"llave\"] = \"ERROR: Tabla no conectada\";\n								$columnas[$columna][\"predefinido\"] = \"ERROR: Tabla no conectada\";\n								$columnas[$columna][\"extras\"] = \"ERROR: Tabla no conectada\";\n								$columna++;\n					}*/\n			}\n\n		if ($MotorBD==\"pgsql\")\n			{\n				$columna=0;\n				$resultado=PCO_EjecutarSQL(\"SELECT * from INFORMATION_SCHEMA.COLUMNS where table_name = ? \",\"$tabla\",$ConexionPDO,1);\n				while($registro = $resultado->fetch())\n					{\n						$columnas[$columna][\"nombre\"] = $registro[\"column_name\"];\n						$columnas[$columna][\"tipo\"] = $registro[\"data_type\"];\n						$columnas[$columna][\"nulo\"] = $registro[\"is_nullable\"];\n						$columnas[$columna][\"llave\"] = \"\";\n						$columnas[$columna][\"predefinido\"] = $registro[\"column_default\"];\n						$columnas[$columna][\"extras\"] = $registro[\"udt_name\"];\n						$columna++;\n					}\n			}\n\n		if ($MotorBD==\"sqlite\")\n			{\n				$columna=0;\n				$resultado=PCO_EjecutarSQL(\"SELECT * FROM sqlite_master WHERE type=\'table\' AND name=? \",\"$tabla\",$ConexionPDO,1);\n				$registro = $resultado->fetch();\n				//Toma los campos encontrados en el SQL de la tabla, los separa y los depura para devolver valores\n				$campos=explode(\",\",$registro[\"sql\"]);\n				for($i=0;$i<count($campos);$i++)\n					{\n						$campos[$i]=trim($campos[$i]);  // Elimina espacios al comienzo y final\n						$campos[$i]=str_replace(\"  \",\" \",$campos[$i]);  //Elimina espacios dobles\n						if ($i==0) $campos[$i]=str_replace(\"CREATE TABLE $tabla (\",\"\",$campos[$i]);  //Elimina instruccion create del primer campo\n						if ($i==count($campos)-1) $campos[$i]=str_replace(\"))\",\")\",$campos[$i]);  //Elimina ultimos parentesis\n						//echo $i.\" valor:\".$campos[$i].\"<hr>\"; //  Usado para depuracion en tiempo de desarrollo\n						$analisis_campo=explode(\" \",$campos[$i]);\n						$columnas[$columna][\"nombre\"] = $analisis_campo[0];\n						$columnas[$columna][\"tipo\"] = $analisis_campo[1];\n						$palabra_siguiente=2;\n						if (trim(strtoupper($analisis_campo[$palabra_siguiente]))==\"PRIMARY\")\n							{\n								$columnas[$columna][\"llave\"] = $analisis_campo[$palabra_siguiente];\n								$palabra_siguiente+=2;\n							}\n						if (trim(strtoupper($analisis_campo[$palabra_siguiente]))==\"NOT\")\n							{\n								$columnas[$columna][\"nulo\"] =  $analisis_campo[$palabra_siguiente].\" \".$analisis_campo[$palabra_siguiente+1];\n								$palabra_siguiente+=2;\n							}\n						if (trim(strtoupper($analisis_campo[$palabra_siguiente]))==\"DEFAULT\")\n							{\n								$columnas[$columna][\"predefinido\"] =  $analisis_campo[$palabra_siguiente+1];\n								$palabra_siguiente+=2;\n							}\n						$columnas[$columna][\"extras\"] = $registro[\"\"];\n						$columna++;\n					}\n			}\n\n\n		//Retorna el arreglo asociativo\n		return $columnas;\n\n\n		/*//Forma 1 (General solo nombres)\n		$resultado=PCO_EjecutarSQL(\"SELECT * FROM \".$tabla);\n		$columnas = array();\n		foreach($resultado->fetch(PDO::FETCH_ASSOC) as $key=>$val)\n			{\n				$columnas[][\"nombre\"] = $key;\n			}\n		return $columnas;*/\n\n		/*//Forma 2\n		$resultado=PCO_EjecutarSQL(\"SELECT * FROM \".$tabla);\n		$columnas = array();\n		for ($i = 0; $i < $resultado->columnCount(); $i++)\n			{\n				$col = $resultado->getColumnMeta($i);\n				$columnas[] = $col[\'name\'];\n			}\n		return $columnas;*/\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ExisteCampoTabla\n	Determina si un campo dado existe dentro de una tabla especifica\n\n	Variables de entrada:\n\n		tabla - Nombre de la tabla de la que se desea buscar el campo\n		campo - Nombre del campo a verificar\n\n	Salida:\n		verdadero o falso dependiendo de si existe o no el campo en la tabla\n\n	Ver tambien:\n	<PCO_ConsultarTablas>\n*/\nfunction PCO_ExisteCampoTabla($campo,$tabla,$ConexionAlterna=\"\",$MotorAlterno=\"\",$BaseDatosAlterna=\"\")\n	{\n		//Determina si se debe usar la conexion global del sistema o una especifica de usuario\n		if($ConexionAlterna==\"\")\n		    {\n			    global $ConexionPDO;\n    			global $MotorBD;\n    			global $BaseDatos;\n		    }\n		else\n		    {\n			    $ConexionPDO=$ConexionAlterna;\n    			$MotorBD=$MotorAlterno;\n    			$BaseDatos=$BaseDatosAlterna;\n		    }\n\n		//Asume que el campo no existe\n		$estado=false;\n\n		//Busca todos los campos de la tabla\n		if($ConexionAlterna!=\"\")\n		    $resultadocampos=PCO_ConsultarColumnas($tabla,$ConexionPDO,$MotorBD,$BaseDatos);\n		else\n		    $resultadocampos=PCO_ConsultarColumnas($tabla);\n\n		for($i=0;$i<count($resultadocampos);$i++)\n			{\n				//Si el campo en el arreglo es igual al campo buscado cambia el estado a verdadero\n				if ($resultadocampos[$i][\"nombre\"]==$campo)\n					$estado=true;\n			}\n\n		//Retorna el resultado\n		return $estado;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_FileGetContents_CURL\n	Un reemplazo para la funcion file_get_contents utilizando cURL\n\n	Salida:\n		Contenido de la URL recibida\n*/\nfunction PCO_FileGetContents_CURL($url)\n	{\n		global $MULTILANG_ErrExtension,$MULTILANG_ErrCURL;\n		//Verifica soporte para cURL\n		if (!extension_loaded(\'curl\'))\n            PCO_Mensaje($MULTILANG_ErrExtension,$MULTILANG_ErrCURL, \'\', \'fa fa-times fa-5x icon-red texto-blink\', \'alert alert-danger alert-dismissible\');\n		//Verifica que la funcion se encuentre activada\n		$funcion_evaluada=\'curl_init\'; $valor_esperado=\'1\';\n		if (ini_get($funcion_evaluada)==$valor_esperado)\n			{\n				//Inicializa el objeto cURL y procesa la solicitud\n				$objeto_curl = curl_init();\n				curl_setopt($objeto_curl, CURLOPT_HEADER, 0);\n				curl_setopt($objeto_curl, CURLOPT_RETURNTRANSFER, 1);\n				curl_setopt($objeto_curl, CURLOPT_URL, $url);\n				$datos_recibidos = curl_exec($objeto_curl);\n				curl_close($objeto_curl);\n			}\n		return $datos_recibidos;\n	}\n\n\n########################################################################\n#########################