=\' size=\"\'.$registro_campos[\"ancho\"].\'\" \';\n\n		// Especifica longitud maxima de caracteres en caso de haber sido definida\n		$cadena_longitud_permitida=\' \';\n		if ($registro_campos[\"maxima_longitud\"]!=0)\n			$cadena_longitud_permitida=\' maxlength=\"\'.$registro_campos[\"maxima_longitud\"].\'\" \';\n\n		// Define cadena en caso de tener valor predeterminado o el valor tomado desde el registro buscado\n		$cadena_valor=\'\';\n		if ($registro_campos[\"valor_predeterminado\"]!=\"\") $cadena_valor=\' value=\"\'.$registro_campos[\"valor_predeterminado\"].\'\" \';\n		//Evalua si el valor predeterminado tiene signo $ al comienzo y ademas es una variable definida para poner su valor.\n		if (substr($registro_campos[\"valor_predeterminado\"], 0,1)==\"$\")\n			{\n				$nombre_variable = substr($registro_campos[\"valor_predeterminado\"], 1);\n				global ${$nombre_variable};\n				if (isset($nombre_variable))\n					{\n						$valor_variable=${$nombre_variable};\n						$cadena_valor=\' value=\"\'.$valor_variable.\'\" \';\n					}\n			}\n\n		// Si detecta un path de archivo en el registro entonces agrega el enlace\n		$partes_adjunto_archivo=explode(\"|\",$registro_datos_formulario[\"$nombre_campo\"]);\n		$adjunto_url_archivo=$partes_adjunto_archivo[0];\n		$adjunto_tipo_archivo=$partes_adjunto_archivo[1];\n		if ($PCO_CampoBusquedaBD!=\"\" && $PCO_ValorBusquedaBD!=\"\" && $registro_datos_formulario[\"$nombre_campo\"]!=\"\")\n			$salida.=\'<a target=\"_BLANK\" id=\"PCO_EnlaceAdjunto_\'.$registro_campos[\"id_html\"].\'\" href=\"\'.$adjunto_url_archivo.\'\"><i class=\"fa fa-search\"></i><b>\'.$MULTILANG_FrmArchivoLink.\'</b><i class=\"fa fa-floppy-o fa-fw\"></i></a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>(\'.$MULTILANG_Tipo.\': \'.$adjunto_tipo_archivo.\')</i><br>\';\n\n        //Agrega etiqueta del campo si es diferente de vacio\n		if ($registro_campos[\"titulo\"]!=\"\" && $registro_campos[\"ocultar_etiqueta\"]==\"0\")\n            $salida.=\'<label for=\"\'.$registro_campos[\"campo\"].\'\">\'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"titulo\"],$registro_datos_formulario).\':</label>\';\n		//Abre el marco del control de datos\n		$salida.=\'<div class=\"form-group input-group\">\';\n		// Muestra el campo\n		$salida.=\'<input tabindex=\"\'.$TabIndex_Elemento.\'\" type=\"\'.$tipo_entrada.\'\" id=\"\'.$registro_campos[\"id_html\"].\'\" name=\"\'.$registro_campos[\"campo\"].\'\" \'.$cadena_valor.\' \'.$cadena_longitud_visual.\' \'.$cadena_longitud_permitida.\' class=\"form-control btn-default\" \'.$cadena_validacion.\' \'.$registro_campos[\"solo_lectura\"].\' \'.$registro_campos[\"personalizacion_tag\"].\' >\';\n\n		//Si hay algun indicador adicional del campo abre los add-ons\n        if ($registro_campos[\"valor_unico\"] == \"1\" || $registro_campos[\"obligatorio\"] || $registro_campos[\"ayuda_titulo\"] != \"\")\n            {\n                $salida.= \'<span class=\"input-group-addon\">\';\n                // Muestra indicadores de obligatoriedad o ayuda\n                if ($registro_campos[\"obligatorio\"]) $salida.= \'<a href=\"#\"   data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"auto\" title=\"<b>\'.$MULTILANG_TitObligatorio.\'</b><br>\'.$MULTILANG_DesObligatorio.\'\"><i class=\"fa fa-exclamation-triangle icon-orange\"></i></a>\';\n                if ($registro_campos[\"ayuda_titulo\"] != \"\") $salida.= \'<a href=\"#\"   data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"auto\" title=\"<b>\'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"ayuda_titulo\"],$registro_datos_formulario).\'</b><br>\'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"ayuda_texto\"],$registro_datos_formulario).\'\"><i class=\"fa fa-question-circle\"></i></a>\';\n                $salida.= \'</span>\';\n            }\n        //Cierra marco del control de datos\n        $salida.= \'</div>\';\n		return $salida;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_CargarObjetoCanvas\n	Genera el codigo HTML y CSS correspondiente a un campo de canvas vinculado a un campo de datos sobre un formulario\n\n	Variables de entrada:\n\n		registro_campos - listado de campos sobre el formulario en cuestion\n		registro_datos_formulario - Arreglo asociativo con nombres de campo y valores cuando se hacen llamados de registro especificos\n\n	Salida:\n\n		HTML, CSS y Javascript asociado al objeto publicado dentro del formulario\n\n	Ver tambien:\n		<PCO_CargarFormulario>\n*/\nfunction PCO_CargarObjetoCanvas($registro_campos,$registro_datos_formulario,$formulario)\n	{\n		global $PCO_CampoBusquedaBD,$PCO_ValorBusquedaBD,$TablasCore;\n		global $MULTILANG_Cerrar,$MULTILANG_FrmCanvasLink,$MULTILANG_TitObligatorio,$MULTILANG_DesObligatorio;\n        global $funciones_activacion_canvas;\n\n        //Busca datos del formulario\n        $RegistroDisenoFormulario=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"formulario WHERE id=?\", \"$formulario\")->fetch();\n        $IdHTMLFormulario=$RegistroDisenoFormulario[\"id_html\"];\n\n		$salida=\'\';\n		$nombre_campo=$registro_campos[\"campo\"];\n\n		// Si detecta un valor en el registro entonces agrega el contenido\n		if ($PCO_CampoBusquedaBD!=\"\" && $PCO_ValorBusquedaBD!=\"\" && $registro_datos_formulario[\"$nombre_campo\"]!=\"\")\n			{\n				$cadena_decodificada=$registro_datos_formulario[\"$nombre_campo\"];\n				//$cadena_decodificada=gzdecode($cadena_decodificada);\n				$salida.=\'\n				<a href=\"javascript:CargarImagenCANVAS_\'.$registro_campos[\"id_html\"].\'();\"><i class=\"fa fa-picture-o\"></i><b>\'.$MULTILANG_FrmCanvasLink.\'</b></a><br>\n					<script language=\"JavaScript\">\n					    function CargarImagenCANVAS_\'.$registro_campos[\"id_html\"].\'()\n					        {\n                                PCOJS_MostrarMensaje(\"\'.$MULTILANG_FrmCanvasLink.\'\",\"Cargando...\",\"modal-wide\");\n                                $(\"#PCO_Modal_MensajeCuerpo\").html(\\\'<img src=\"\'.$cadena_decodificada.\'\" border=1>\\\');\n					        }\n					</script>\';\n			}\n\n				$salida.=\'\n					<script language=\"JavaScript\">\n                        // returns true if all color channels in each pixel are 0 (or \"blank\")\n                        function isCanvasBlank(canvas) {\n                          return !canvas.getContext(\"2d\")\n                            .getImageData(0, 0, canvas.width, canvas.height).data\n                            .some(channel => channel !== 0);\n                        }\n\n\n                        function RedimensionarCanvas(canvas,PorcentajeAncho,PorcentajeAlto){\n                          var tempCanvas = canvas.ownerDocument.createElement(\"canvas\");\n                          var tctx=tempCanvas.getContext(\"2d\");\n                          var cw=canvas.width;\n                          var ch=canvas.height;\n                          tempCanvas.width=cw;\n                          tempCanvas.height=ch;\n                          tctx.drawImage(canvas,0,0);\n                          canvas.width*=PorcentajeAncho;\n                          canvas.height*=PorcentajeAlto;\n                          var ctx=canvas.getContext(\"2d\");\n                          ctx.drawImage(tempCanvas,0,0,cw,ch,0,0,cw*PorcentajeAncho,ch*PorcentajeAlto);\n                        }\n\n                        var RecortarCANVAS_\'.$registro_campos[\"id_html\"].\' = (function() {\n                            function rowBlank(imageData, width, y) {\n                                for (var x = 0; x < width; ++x) {\n                                    if (imageData.data[y * width * 4 + x * 4 + 3] !== 0) return false;\n                                }\n                                return true;\n                            }\n                        \n                            function columnBlank(imageData, width, x, top, bottom) {\n                                for (var y = top; y < bottom; ++y) {\n                                    if (imageData.data[y * width * 4 + x * 4 + 3] !== 0) return false;\n                                }\n                                return true;\n                            }\n                        \n                            return function(canvas) {\n                                var ctx = canvas.getContext(\"2d\");\n                                var width = canvas.width;\n                                var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n                                var top = 0, bottom = imageData.height, left = 0, right = imageData.width;\n                        \n                                while (top < bottom && rowBlank(imageData, width, top)) ++top;\n                                while (bottom - 1 > top && rowBlank(imageData, width, bottom - 1)) --bottom;\n                                while (left < right && columnBlank(imageData, width, left, top, bottom)) ++left;\n                                while (right - 1 > left && columnBlank(imageData, width, right - 1, top, bottom)) --right;\n                        \n                                var trimmed = ctx.getImageData(left, top, right - left, bottom - top);\n                                var copy = canvas.ownerDocument.createElement(\"canvas\");\n                                var copyCtx = copy.getContext(\"2d\");\n                                copy.width = trimmed.width;\n                                copy.height = trimmed.height;\n                                copyCtx.putImageData(trimmed, 0, 0);\n                        \n                                return copy;\n                            };\n                        })();\n					</script>\';\n\n\n        //Agrega etiqueta del campo si es diferente de vacio\n		if ($registro_campos[\"titulo\"]!=\"\" && $registro_campos[\"ocultar_etiqueta\"]==\"0\")\n            $salida.=\'<label for=\"\'.$registro_campos[\"campo\"].\'\">\'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"titulo\"],$registro_datos_formulario).\':</label>\';\n		//Abre el marco del control de datos\n		$salida.=\'<div class=\"form-group input-group\" style=\"display: block !important; \">\';\n		\n		//Verifica si el ancho o el alto tienen alguna barra de proporcion indicando porcentaje final de escalado\n		$PartesAncho=explode(\"|\",$registro_campos[\"ancho\"]);\n		$AnchoCanvas=$PartesAncho[0]; //Toma el ancho inicial del canvas\n		$ProporcionFinalAnchoCanvas=$PartesAncho[1]; if ($ProporcionFinalAnchoCanvas==\"\") $ProporcionFinalAnchoCanvas=1; //Define Proporcion final (0.5,2,1.5,etc)\n		$PartesAlto=explode(\"|\",$registro_campos[\"alto\"]);\n		$AltoCanvas=$PartesAlto[0]; //Toma el ancho inicial del canvas\n		$ProporcionFinalAltoCanvas=$PartesAlto[1]; if ($ProporcionFinalAltoCanvas==\"\") $ProporcionFinalAltoCanvas=1; //Define Proporcion final (0.5,2,1.5,etc)\n\n		// Muestra el campo\n		$salida.=\'<canvas id=\"CANVAS_\'.$registro_campos[\"campo\"].\'\" width=\"\'.$AnchoCanvas.\'\" height=\"\'.$AltoCanvas.\'\" style=\"border: 1px solid #acc; display: inline;\">Su navegador no soporta Canvas</canvas>\n			<a href=\"javascript:limpiar_CANVAS_\'.$registro_campos[\"campo\"].\'();\"><i class=\"fa fa-times fa-2x\"></i></a>\n\n			<script type=\"text/javascript\">\';\n\n        //Prepara la funcion de reactivacion del canvas para el final del script\n        $funciones_activacion_canvas.=\'\n                $(function ()\n					{\n						$(\\\'#CANVAS_\'.$registro_campos[\"campo\"].\'\\\').sketch({defaultColor: \"\'.$registro_campos[\"color_trazo\"].\'\", defaultSize: \"\'.$registro_campos[\"tamano_pincel\"].\'\"});\n					});\';\n\n        $salida.=\'\n				/*\n				// Genera el vinculo entre el enlace de upload y la funcion\n				$(\"#upload\").on(\"click\", function ()\n					{\n						var oCanvas = document.getElementById(\"CANVAS_\'.$registro_campos[\"campo\"].\'\");\n						var strDataURI = oCanvas.toDataURL();\n						//alert(strDataURI); //Muestra el resultado en base64\n					});\n				*/\n\n				function limpiar_CANVAS_\'.$registro_campos[\"campo\"].\'()\n					{\n						// Busca el contexto del canvas y le reasigna ancho y alto para limpiarlo\n						var oCanvas = document.getElementById(\"CANVAS_\'.$registro_campos[\"campo\"].\'\");\n						var oContext = oCanvas.getContext(\"2d\");\n						//FORMA1:\n							oContext.clearRect(0, 0, oCanvas.width, oCanvas.height);\n						/*//FORMA2:\n							oCanvas.width = oCanvas.width;*/\n						/*//FORMA3:\n							oContext.save();\n							oContext.fillStyle = \"#FFF\";\n							oContext.fillRect(0, 0, oCanvas.width, oCanvas.height);\n							oContext.restore();\n							oCanvas.clear();*/\n						/*//FORMA4:\n							var ancho_anterior = oCanvas.width;\n							oCanvas.width = 1;\n							oCanvas.width = ancho_anterior;*/\n					}\n\n				function actualizar_CANVAS_\'.$registro_campos[\"campo\"].\'()\n					{\n						// Pasa el valor del canvas al campo que se usa en almacenamiento\n						if (!isCanvasBlank(CANVAS_\'.$registro_campos[\"campo\"].\'))\n						    {\n                				oCanvas=RecortarCANVAS_\'.$registro_campos[\"campo\"].\'(CANVAS_\'.$registro_campos[\"campo\"].\');\n                				//document.\'.$IdHTMLFormulario.\'.\'.$registro_campos[\"campo\"].\'.value=oCanvas.toDataURL();	 //Almacena imagen al 100%\n\n                                //Redimensiona el canvas sobre otro (Si aplica)\n                                RedimensionarCanvas(oCanvas,\'.$ProporcionFinalAnchoCanvas.\',\'.$ProporcionFinalAltoCanvas.\');\n                				document.\'.$IdHTMLFormulario.\'.\'.$registro_campos[\"campo\"].\'.value=oCanvas.toDataURL();	     //Almacena imagen redimensionada\n						    }\n						window.setTimeout(\"actualizar_CANVAS_\'.$registro_campos[\"campo\"].\'()\",1000);\n					}\n\n				$( document ).ready(function() {\n				    // actualizar_CANVAS_\'.$registro_campos[\"campo\"].\'();\n				});\n			</script>\n			<input type=\"hidden\" name=\"\'.$registro_campos[\"campo\"].\'\">\';\n\n		//Si hay algun indicador adicional del campo abre los add-ons\n        if ($registro_campos[\"valor_unico\"] == \"1\" || $registro_campos[\"obligatorio\"] || $registro_campos[\"ayuda_titulo\"] != \"\")\n            {\n                $salida.= \'<span class=\"input-group-addon\">\';\n                // Muestra indicadores de obligatoriedad o ayuda\n                if ($registro_campos[\"obligatorio\"]) $salida.= \'<a href=\"#\"   data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"auto\" title=\"<b>\'.$MULTILANG_TitObligatorio.\'</b><br>\'.$MULTILANG_DesObligatorio.\'\"><i class=\"fa fa-exclamation-triangle icon-orange\"></i></a>\';\n                if ($registro_campos[\"ayuda_titulo\"] != \"\") $salida.= \'<a href=\"#\"   data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"auto\" title=\"<b>\'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"ayuda_titulo\"],$registro_datos_formulario).\'</b><br>\'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"ayuda_texto\"],$registro_datos_formulario).\'\"><i class=\"fa fa-question-circle\"></i></a>\';\n                $salida.= \'</span>\';\n            }\n        //Cierra marco del control de datos\n        $salida.= \'</div>\';\n		return $salida;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_CargarObjetoCamara\n	Genera el codigo HTML y CSS correspondiente a un campo de canvas usado para la captura de una imagen desde webcam\n\n	Variables de entrada:\n\n		registro_campos - listado de campos sobre el formulario en cuestion\n		registro_datos_formulario - Arreglo asociativo con nombres de campo y valores cuando se hacen llamados de registro especificos\n\n	Salida:\n\n		HTML, CSS y Javascript asociado al objeto publicado dentro del formulario\n\n	Ver tambien:\n		<PCO_CargarFormulario>\n*/\nfunction PCO_CargarObjetoCamara($registro_campos,$registro_datos_formulario,$formulario)\n	{\n		global $TablasCore,$PCO_CampoBusquedaBD,$PCO_ValorBusquedaBD;\n		global $MULTILANG_Cerrar,$MULTILANG_FrmCanvasLink,$MULTILANG_Capturar,$MULTILANG_FrmErrorCam,$MULTILANG_DesObligatorio,$MULTILANG_TitObligatorio;\n\n        //Busca datos del formulario\n        $RegistroDisenoFormulario=PCO_EjecutarSQL(\"SELECT * FROM \".$TablasCore.\"formulario WHERE id=?\", \"$formulario\")->fetch();\n        $IdHTMLFormulario=$RegistroDisenoFormulario[\"id_html\"];\n\n		$salida=\'\';\n		$nombre_campo=$registro_campos[\"campo\"];\n\n		// Si detecta un valor en el registro entonces agrega el contenido\n		if ($PCO_CampoBusquedaBD!=\"\" && $PCO_ValorBusquedaBD!=\"\" && $registro_datos_formulario[\"$nombre_campo\"]!=\"\")\n			{\n				$cadena_decodificada=$registro_datos_formulario[\"$nombre_campo\"];\n				$cadena_decodificada=gzdecode($cadena_decodificada);\n				$salida.=\'<a href=\"javascript:AbrirPopUp(\\\'CANVASPrevio\'.$registro_campos[\"campo\"].\'\\\');\"><i class=\"fa fa-picture-o\"></i><b>\'.$MULTILANG_FrmCanvasLink.\'</b></a><br>\n					<!-- INICIO DE MARCOS POPUP -->\n					<div id=\"CANVASPrevio\'.$registro_campos[\"campo\"].\'\" class=\"FormularioPopUps\">\n						<div align=center>\n							<table bgcolor=\"#FFFFFF\"><tr><td>\n								<img src=\"\'.$cadena_decodificada.\'\" border=1>\n							</td></tr></table>\n						</br>\n						<input type=\"Button\"  class=\"Botones\" value=\" -- \'.$MULTILANG_Cerrar.\' -- \" onClick=\"OcultarPopUp(\\\'CANVASPrevio\'.$registro_campos[\"campo\"].\'\\\')\">\n						</div>\n					<!-- FIN DE MARCOS POPUP -->\n					</div>\';\n			}\n\n		// Muestra el campo\n		$escala_reduccion=1;\n        //Agrega etiqueta del campo si es diferente de vacio\n		if ($registro_campos[\"titulo\"]!=\"\" && $registro_campos[\"ocultar_etiqueta\"]==\"0\")\n            $salida.=\'<label for=\"\'.$registro_campos[\"campo\"].\'\">\'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"titulo\"],$registro_datos_formulario).\':</label>\';\n		//Abre el marco del control de datos\n		$salida.=\'<div class=\"form-group input-group\">\';\n\n		$salida.=\'\n			<table border=0>\n				<tr>\n					<td valign=top>\n						<div id=\"container\" style=\"margin: 0px auto; width: \'.$registro_campos[\"ancho\"].\'px; height: \'.$registro_campos[\"alto\"].\'px; border: 1px solid #acc;\">\n							<video autoplay id=\"videoElement\"  style=\"width: \'.$registro_campos[\"ancho\"].\'px; height: \'.$registro_campos[\"alto\"].\'px;\">\n							</video>\n						</div>\n					</td>\n					<td valign=top>\n                        <i class=\"fa fa-camera\" OnClick=\"draw(v,context,w,h);\"></i>\n						<br>\n						<canvas id=\"CANVAS_\'.$registro_campos[\"campo\"].\'\" width=\"\'.(($registro_campos[\"ancho\"]/$escala_reduccion)).\'\" height=\"\'.(($registro_campos[\"alto\"]/$escala_reduccion)).\'\" style=\"width: \'.(($registro_campos[\"ancho\"]/$escala_reduccion)).\'px; height: \'.(($registro_campos[\"alto\"]/$escala_reduccion)).\'px; background-color: #CCC; visibility:visible;\"></canvas>\n					</td>\n				</tr>\n			</table>\n\n			<script>\n				var video = document.querySelector(\"#videoElement\");\n				navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia || navigator.oGetUserMedia;\n\n				if (navigator.getUserMedia) {\n					navigator.getUserMedia({video: true}, handleVideo, videoError);\n				}\n\n				function handleVideo(stream) {\n					video.src = window.URL.createObjectURL(stream);\n				}\n\n				function videoError(e) {\n					alert(\"\'.$MULTILANG_FrmErrorCam.\'\");\n				}\n\n				var v,CANVAS_\'.$registro_campos[\"campo\"].\',context,w,h;\n				var sel = document.getElementById(\\\'fileselect\\\');\n\n				document.addEventListener(\\\'DOMContentLoaded\\\', function(){\n				v = document.getElementById(\\\'videoElement\\\');\n				CANVAS_\'.$registro_campos[\"campo\"].\' = document.getElementById(\\\'CANVAS_\'.$registro_campos[\"campo\"].\'\\\');\n				context = CANVAS_\'.$registro_campos[\"campo\"].\'.getContext(\\\'2d\\\');\n				w = CANVAS_\'.$registro_campos[\"campo\"].\'.width;\n				h = CANVAS_\'.$registro_campos[\"campo\"].\'.height;\n				},false);\n\n				function draw(v,c,w,h) {\n				if(v.paused || v.ended) return false;\n				context.drawImage(v,0,0,w,h);\n				var uri = CANVAS_\'.$registro_campos[\"campo\"].\'.toDataURL(\"image/png\");\n				}\n\n				var fr;\n				sel.addEventListener(\\\'change\\\',function(e){\n				var f = sel.files[0];\n				fr = new FileReader();\n				fr.readAsDataURL(f);\n				})\n			</script>\';\n\n		$salida.=\'\n			<script>\n				function actualizar_CANVAS_\'.$registro_campos[\"campo\"].\'()\n					{\n						// Pasa el valor del canvas al campo que se usa en almacenamiento\n						var oCanvas = document.getElementById(\"CANVAS_\'.$registro_campos[\"campo\"].\'\");\n						var strDataURI = oCanvas.toDataURL();\n						document.\'.$IdHTMLFormulario.\'.\'.$registro_campos[\"campo\"].\'.value=strDataURI;\n						window.setTimeout(\"actualizar_CANVAS_\'.$registro_campos[\"campo\"].\'()\",1000);\n					}\n				window.setTimeout(\"actualizar_CANVAS_\'.$registro_campos[\"campo\"].\'()\",1000);\n			</script>\n			<input type=\"hidden\" name=\"\'.$registro_campos[\"campo\"].\'\">\';\n		//Si hay algun indicador adicional del campo abre los add-ons\n        if ($registro_campos[\"valor_unico\"] == \"1\" || $registro_campos[\"obligatorio\"] || $registro_campos[\"ayuda_titulo\"] != \"\")\n            {\n                $salida.= \'<span class=\"input-group-addon\">\';\n                // Muestra indicadores de obligatoriedad o ayuda\n                if ($registro_campos[\"obligatorio\"]) $salida.= \'<a href=\"#\"   data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"auto\" title=\"<b>\'.$MULTILANG_TitObligatorio.\'</b><br>\'.$MULTILANG_DesObligatorio.\'\"><i class=\"fa fa-exclamation-triangle icon-orange\"></i></a>\';\n                if ($registro_campos[\"ayuda_titulo\"] != \"\") $salida.= \'<a href=\"#\"   data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"auto\" title=\"<b>\'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"ayuda_titulo\"],$registro_datos_formulario).\'</b><br>\'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"ayuda_texto\"],$registro_datos_formulario).\'\"><i class=\"fa fa-question-circle\"></i></a>\';\n                $salida.= \'</span>\';\n            }\n        //Cierra marco del control de datos\n        $salida.= \'</div>\';\n\n\n\n\n		$salidaNuevo=\'\';\n        $salidaNuevo.=\'\n			<table border=0>\n				<tr>\n					<td valign=top>\n						<div id=\"container\" style=\"margin: 0px auto; width: \'.$registro_campos[\"ancho\"].\'px; height: \'.$registro_campos[\"alto\"].\'px; border: 1px solid #acc;\">\n							<video id=\"PCO_WebCam_\'.$registro_campos[\"campo\"].\'\" playsinline autoplay style=\"width: \'.$registro_campos[\"ancho\"].\'px; height: \'.$registro_campos[\"alto\"].\'px;\"></video>\n						    <div id=\"CANVAS_ErrorMsg\'.$registro_campos[\"campo\"].\'\"></div>\n						</div>\n					</td>\n					<td valign=top>\n                        <i id=\"BotonCaptura_CANVAS_\'.$registro_campos[\"campo\"].\'\" class=\"fa fa-camera\" OnClick=\"var context = canvas.getContext(\\\'2d\\\'); context.drawImage(videoPCO_WebCam_\'.$registro_campos[\"campo\"].\', 0, 0, \'.$registro_campos[\"ancho\"].\', \'.$registro_campos[\"alto\"].\');\"></i>\n						<br>\n						<canvas id=\"CANVAS_\'.$registro_campos[\"campo\"].\'\" width=\"\'.(($registro_campos[\"ancho\"])).\'\" height=\"\'.(($registro_campos[\"alto\"])).\'\" style=\"width: \'.(($registro_campos[\"ancho\"])).\'px; height: \'.(($registro_campos[\"alto\"])).\'px; background-color: #CCC; visibility:visible;\"></canvas>\n					</td>\n				</tr>\n			</table>\n\n			<script language=\"JavaScript\">\n                \\\'use strict\\\';\n                \n                const videoPCO_WebCam_\'.$registro_campos[\"campo\"].\' = document.getElementById(\"PCO_WebCam_\'.$registro_campos[\"campo\"].\'\");\n                const canvas = document.getElementById(\"CANVAS_\'.$registro_campos[\"campo\"].\'\");\n                const snap = document.getElementById(\"snap\");\n                const errorMsgElement = document.querySelector(\"errorMsg\");\n                \n                const constraints = {\n                  audio: true,\n                  video: {\n                    width: \'.$registro_campos[\"ancho\"].\', height: \'.$registro_campos[\"alto\"].\'\n                  }\n                };\n                \n                // Access webcam\n                async function init() {\n                  try {\n                    const stream = await navigator.mediaDevices.getUserMedia(constraints);\n                    handleSuccess(stream);\n                  } catch (e) {\n                    $(\"#CANVAS_ErrorMsg\'.$registro_campos[\"campo\"].\'\").html(\"<b>Error Camara</b><br> \"+\"navigator.getUserMedia error:\"+e.toString());\n                  }\n                }\n                \n                // Success\n                function handleSuccess(stream) {\n                  window.stream = stream;\n                  videoPCO_WebCam_\'.$registro_campos[\"campo\"].\'.srcObject = stream;\n                }\n                \n                // Load init\n                init();\n			</script>\';\n\n        $salida = $salidaNuevo;\n\n\n\n\n\n		return $salida;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_CargarObjetoBotonComando\n	Genera el codigo HTML y CSS correspondiente a un boton de comando sobre un formulario\n\n	Variables de entrada:\n\n		registro_campos - listado de campos sobre el formulario en cuestion\n		registro_datos_formulario - Arreglo asociativo con nombres de campo y valores cuando se hacen llamados de registro especificos\n		formulario - ID unico del formulario al cual pertenece el objeto\n\n	Salida:\n\n		HTML, CSS y Javascript asociado al objeto publicado dentro del formulario\n\n	Ver tambien:\n		<PCO_CargarFormulario>\n*/\nfunction PCO_CargarObjetoBotonComando($registro_campos,$registro_datos_formulario,$registro_formulario)\n	{\n		global $PCO_CampoBusquedaBD,$PCO_ValorBusquedaBD,$IdiomaPredeterminado;\n        global $funciones_activacion_datepickers;\n		global $MULTILANG_TitValorUnico,$MULTILANG_DesValorUnico,$MULTILANG_TitObligatorio,$MULTILANG_DesObligatorio;\n		global $TabIndex_Elemento;\n		$salida=\'\';\n\n        //Determina si el estilo del objeto debe ser inline o no\n		$cadena_modo_inline=\'\';\n        if ($registro_campos[\"modo_inline\"])\n            $cadena_modo_inline=\'display:inline;\';\n\n		//Transfiere variables de mensajes de retorno asociadas al boton\n		$comando_javascript=\"\";\n		if ($registro_campos[\"retorno_titulo\"]!=\"\")\n			$comando_javascript=\"document.\".$registro_formulario[\"id_html\"].\".PCO_ErrorTitulo.value=\'\".$registro_botones[\"retorno_titulo\"].\"\'; document.\".$registro_formulario[\"id_html\"].\".PCO_ErrorDescripcion.value=\'\".$registro_botones[\"retorno_texto\"].\"\'; document.\".$registro_formulario[\"id_html\"].\".PCO_ErrorIcono.value=\'\".$registro_botones[\"retorno_icono\"].\"\'; document.\".$registro_formulario[\"id_html\"].\".PCO_ErrorEstilo.value=\'\".$registro_botones[\"retorno_estilo\"].\"\';\";\n\n        //Define el tipo de boton de acuerdo al tipo de accion\n        switch ($registro_campos[\"tipo_accion\"]) {\n\n            case \'interna_guardar\':    $comando_javascript.=\"PCOJS_ValidarCamposYProcesarFormulario(\'\".$registro_formulario[\"id_html\"].\"\'); \";     break;\n            case \'interna_limpiar\':    $comando_javascript.=\"document.getElementById(\'\".$registro_formulario[\"id_html\"].\"\').reset();\"; break;\n            case \'interna_escritorio\': $comando_javascript.=\"document.PCO_FormVerMenu.submit();\"; break;\n            case \'interna_actualizar\': $comando_javascript.=\"document.\".$registro_formulario[\"id_html\"].\".PCO_Accion.value=\'PCO_ActualizarDatosFormulario\'; PCOJS_ValidarCamposYProcesarFormulario(\'\".$registro_formulario[\"id_html\"].\"\'); \"; break;\n            case \'externa_postcode\':   $comando_javascript.=\"document.\".$registro_formulario[\"id_html\"].\".PCO_Accion.value=\'PCO_EjecutarPostAccionForm\'; PCOJS_ValidarCamposYProcesarFormulario(\'\".$registro_formulario[\"id_html\"].\"\'); \"; break;\n            case \'interna_eliminar\':   $comando_javascript.=\"document.\".$registro_formulario[\"id_html\"].\".PCO_Accion.value=\'PCO_EliminarDatosFormulario\';document.\".$registro_formulario[\"id_html\"].\".submit();\"; break;\n            case \'interna_cargar\':     $comando_javascript.=\"document.\".$registro_formulario[\"id_html\"].\".PCO_Accion.value=\'PCO_CargarObjeto\';document.\".$registro_formulario[\"id_html\"].\".PCO_Objeto.value=\'\".$registro_campos[\"accion_usuario\"].\"\';  PCOJS_SanitizarValoresListaMultiple(); document.\".$registro_formulario[\"id_html\"].\".submit(); \"; break;\n            case \'externa_formulario\': $comando_javascript.=\"document.\".$registro_formulario[\"id_html\"].\".PCO_Accion.value=\'\".$registro_campos[\"accion_usuario\"].\"\'; PCOJS_SanitizarValoresListaMultiple(); document.\".$registro_formulario[\"id_html\"].\".submit();\"; break;\n            case \'externa_javascript\': $comando_javascript.=$registro_campos[\"accion_usuario\"];\n        }\n\n\n		//Verifica si el registro de botones presenta algun texto de confirmacion y lo antepone al script\n		$cadena_confirmacion_accion_pre=\"\";\n		$cadena_confirmacion_accion_pos=\"\";\n		if (@$registro_campos[\"confirmacion_texto\"]!=\"\")\n			{\n				$cadena_confirmacion_accion_pre=\" if (confirm(\'\".PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"confirmacion_texto\"],$registro_datos_formulario).\"\')) {\";\n				$cadena_confirmacion_accion_pos=\" } else {} \";\n			}\n\n        //Genera cadena par el identificador del elemento usando el campo \"campo\". Normalmente oculto\n        $cadena_identificador=\'\';\n        if ($registro_campos[\"campo\"]!=\"\")\n            $cadena_identificador=\'id=\"\'.$registro_campos[\"id_html\"].\'\"\';\n\n        //Genera la cadena del enlace\n        $cadena_javascript=\'href=\"javascript:  \'.$cadena_confirmacion_accion_pre.\'  \'.@$comando_javascript.\'  \'.$cadena_confirmacion_accion_pos.\'  \"\';\n\n        //Abre el marco del control de datos style=\"display:inline;\"\n		$salida.=\'<div \'.$cadena_identificador.\' style=\"\'.$cadena_modo_inline.\'\" class=\"form-group input-group\">\';\n        // Muestra el campo\n		$salida.=\'<a tabindex=\"\'.$TabIndex_Elemento.\'\" id=\"\'.$registro_campos[\"id_html\"].\'\" class=\"btn \'.$registro_campos[\"personalizacion_tag\"].\'\" \'.@$cadena_javascript.\'><i class=\"\'.$registro_campos[\"imagen\"].\'\"></i> \'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"titulo\"],$registro_datos_formulario).\'</a>\';\n        //Cierra marco del control de datos\n        $salida.= \'</div>\';\n\n		return $salida;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_AgregarFuncionesEdicionObjeto\n	Genera el codigo HTML y CSS correspondiente los botones y demas elementos para la edicion en caliente de un objeto\n\n	Variables de entrada:\n\n		registro_campos - listado de campos sobre el formulario en cuestion\n		tipo_elemento - Tipo de elemento a ser generado\n\n	Salida:\n\n		HTML, CSS y Javascript asociado al objeto publicado dentro del formulario\n\n	Ver tambien:\n		<PCO_CargarFormulario>\n*/\nfunction PCO_AgregarFuncionesEdicionObjeto($registro_campos,$registro_formulario,$tipo_elemento)\n	{\n	    global $MULTILANG_FrmEstaSeguro,$MULTILANG_FrmDesplazarObjetos,$MULTILANG_SaltoEdicion,$MULTILANG_Embebido,$MULTILANG_FrmValida,$MULTILANG_FrmPredeterminado,$MULTILANG_FrmCampo,$MULTILANG_MnuPropiedad,$MULTILANG_Detalles,$MULTILANG_Evento,$TablasCore,$MULTILANG_Cerrar,$ArchivoCORE,$MULTILANG_Editar,$MULTILANG_FrmAdvDelCampo,$MULTILANG_Eliminar,$MULTILANG_FrmAumentaPeso,$MULTILANG_FrmDisminuyePeso,$MULTILANG_Anterior,$MULTILANG_Columna,$MULTILANG_Siguiente;\n		$salida=\'\';\n        if ($tipo_elemento==\"ComplementoDisenoElemento\")\n            {\n                $salida=\'onmouseenter=\"$(this).css(\\\'border\\\', \\\'1px solid\\\'); $(this).css(\\\'border-color\\\', \\\'#ff0000\\\');  //c2a7a7\n                $(\\\'#PCOEditorContenedor_\'.$registro_campos[\"id\"].\'\\\').css({\\\'visibility\\\':\\\'visible\\\'});\n                $(\\\'#PCOEditorContenedor_\'.$registro_campos[\"id\"].\'\\\').css({\\\'display\\\':\\\'block\\\'}); \"\n                onmouseleave=\"$(this).css(\\\'border\\\', \\\'0px solid\\\'); $(\\\'#PCOEditorContenedor_\'.$registro_campos[\"id\"].\'\\\').css({\\\'visibility\\\':\\\'hidden\\\'}); $(\\\'#PCOEditorContenedor_\'.$registro_campos[\"id\"].\'\\\').css({\\\'display\\\':\\\'none\\\'});  \"\';\n            }\n        if ($tipo_elemento==\"ComplementoDisenoMarcoOpciones\")\n            {\n                //Determina estados de activacion o no para controles segun valores actuales del registro\n                $EstadoDeshabilitadoMoverIzquierda=\"\";\n                $EstadoDeshabilitadoMoverDerecha=\"\";\n                $EstadoDeshabilitadoMoverArriba=\"\";\n                if($registro_campos[\"PCOBD_Columna\"]-1<=0) $EstadoDeshabilitadoMoverIzquierda=\"disabled\";\n                if($registro_campos[\"PCOBD_Columna\"]+1>$registro_formulario[\"columnas\"]) $EstadoDeshabilitadoMoverDerecha=\"disabled\";\n                if($registro_campos[\"PCOBD_Peso\"]-1<=0) $EstadoDeshabilitadoMoverArriba=\"disabled\";\n\n                //Busca si el elemento tiene o no eventos para poner un boton de enlace\n                $ComplementoBotonEventos=\"\";\n                $RegistroConteoEventos=PCO_EjecutarSQL(\"SELECT COUNT(*) as conteo_eventos FROM \".$TablasCore.\"evento_objeto WHERE objeto=? \",$registro_campos[\"id\"])->fetch();\n                if($RegistroConteoEventos[\"conteo_eventos\"]>0)\n                    {\n                        //Listado de eventos\n                        $ResultadoEventos=PCO_EjecutarSQL(\"SELECT evento,LENGTH(javascript) as bytes_codigo FROM \".$TablasCore.\"evento_objeto WHERE objeto=? \",$registro_campos[\"id\"]);\n                        $CadenaDetalleEventos=\"\";\n                        $ConteoEventos=1;\n                        while ($RegistroEventos=$ResultadoEventos->fetch())\n                            {\n                                $CadenaDetalleEventos.=\"<li><b>\".$RegistroEventos[\"evento\"].\"</b> (\".$RegistroEventos[\"bytes_codigo\"].\" bytes)\";\n                                $ConteoEventos++;\n                            }\n                        $ComplementoBotonEventos_DEPRECATED=\'<br><a class=\"btn btn-xs btn-default\" data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_Evento.\'(s)\'.$CadenaDetalleEventos.\'\" href=\\\'\'.$ArchivoCORE.\'?PCO_Accion=PCO_EditarFormulario&campo=\'.$registro_campos[\"id\"].\'&formulario=\'.$registro_campos[\"formulario\"].\'&popup_activo=FormularioCampos&pestana_activa_editor=eventos_objeto-tab&nombre_tabla=\'.$registro_formulario[\"tabla_datos\"].\'\\\'><i class=\"fa fa-bolt fa-fw texto-blink\"></i></a>\';\n                        $ComplementoBotonEventos=\'<br><a class=\"btn btn-xs btn-default\" data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_Evento.\'(s)\'.$CadenaDetalleEventos.\'\" href=\\\'javascript:PCOJS_ActualizarControlFormulario(\'.$registro_campos[\"formulario\"].\',\'.$registro_campos[\"id\"].\',3);\\\'><i class=\"fa fa-bolt fa-fw texto-blink\"></i></a>\';\n                    }\n\n                //Si el elemento es un formulario o informe embebido busca ademas el nombre del mismo\n                $Complemento_NombreEmbebido=\"\";\n                if ($registro_campos[\"tipo\"]==\"informe\")\n                    {\n                        $IdentificadorBusqueda=$registro_campos[\"informe_vinculado\"];\n                        $RegistroEmbebido=PCO_EjecutarSQL(\"SELECT id,titulo FROM \".$TablasCore.\"informe WHERE id=$IdentificadorBusqueda \")->fetch();\n                        $Complemento_NombreEmbebido=\"Inf ID \".$RegistroEmbebido[\"id\"].\": <b>\".$RegistroEmbebido[\"titulo\"].\"</b>\";\n                    }\n                if ($registro_campos[\"tipo\"]==\"form_consulta\")\n                    {\n                        $IdentificadorBusqueda=$registro_campos[\"formulario_vinculado\"];\n                        $RegistroEmbebido=PCO_EjecutarSQL(\"SELECT id,titulo FROM \".$TablasCore.\"formulario WHERE id=$IdentificadorBusqueda \")->fetch();\n                        $Complemento_NombreEmbebido=\"Frm ID \".$RegistroEmbebido[\"id\"].\": <b>\".$RegistroEmbebido[\"titulo\"].\"</b>\";\n                    }\n\n                //Pone controles\n                $salida=\'<div id=\"PCOEditorContenedor_\'.$registro_campos[\"id\"].\'\" style=\"margin:2px; display:none; visibility:hidden; position: absolute; z-index:1000;\">\n                            <div style=\"display: inline-block; vertical-align:top;\">\n                                <a class=\"btn btn-xs btn-warning\" data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_Editar.\'\" href=\\\'javascript:PCOJS_ActualizarControlFormulario(\'.$registro_campos[\"formulario\"].\',\'.$registro_campos[\"id\"].\',1);\\\'><i class=\"fa fa-fw fa-pencil\"></i></a>\n                                <!--DEPRECATED:<a class=\"btn btn-xs btn-warning\" data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_Editar.\'\" href=\\\'\'.$ArchivoCORE.\'?PCO_Accion=PCO_EditarFormulario&campo=\'.$registro_campos[\"id\"].\'&formulario=\'.$registro_campos[\"formulario\"].\'&popup_activo=FormularioCampos&nombre_tabla=\'.$registro_formulario[\"tabla_datos\"].\'\\\'><i class=\"fa fa-fw fa-pencil\"></i></a>-->\n                                \'.$ComplementoBotonEventos.\'\n                                <br><br>\n                                <a onclick=\\\'return confirm(\"\'.$MULTILANG_FrmDesplazarObjetos.\'\\n\\n\'.$MULTILANG_FrmEstaSeguro.\'\");\\\' class=\"btn btn-xs btn-success\" data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_FrmDesplazarObjetos.\'\" href=\\\'\'.$ArchivoCORE.\'?PCO_Accion=PCO_DesplazarObjetosForm&idObjetoForm=\'.$registro_campos[\"id\"].\'&accion_retorno=PCO_EditarFormulario&nombre_tabla=\'.$registro_formulario[\"tabla_datos\"].\'\\\'><i class=\"fa fa-fw fa-step-forward fa-rotate-90\"></i></a>                                \n                            </div>\n                            <div style=\"display: inline-block;\">\n                                <a class=\"btn btn-xs btn-info \'.$EstadoDeshabilitadoMoverIzquierda.\'\" data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_Anterior.\' \'.$MULTILANG_Columna.\'\" href=\\\'\'.$ArchivoCORE.\'?PCO_Accion=cambiar_estado_campo&id=\'.$registro_campos[\"id\"].\'&tabla=formulario_objeto&campo=PCOBD_Columna&formulario=\'.$registro_campos[\"formulario\"].\'&accion_retorno=PCO_EditarFormulario&valor=\'.($registro_campos[\"PCOBD_Columna\"]-1).\'&nombre_tabla=\'.$registro_formulario[\"tabla_datos\"].\'\\\'><i class=\"fa fa-arrow-left\"></i></a>\n                            </div>\n                            <div style=\"display: inline-block;\">\n                                <a class=\"btn btn-xs btn-info \'.$EstadoDeshabilitadoMoverArriba.\'\" data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_FrmDisminuyePeso.\' a \'.($registro_campos[\"PCOBD_Peso\"]-1).\'\" href=\\\'\'.$ArchivoCORE.\'?PCO_Accion=cambiar_estado_campo&id=\'.$registro_campos[\"id\"].\'&tabla=formulario_objeto&campo=PCOBD_Peso&formulario=\'.$registro_campos[\"formulario\"].\'&accion_retorno=PCO_EditarFormulario&valor=\'.($registro_campos[\"PCOBD_Peso\"]-1).\'&nombre_tabla=\'.$registro_formulario[\"tabla_datos\"].\'\\\'><i class=\"fa fa-arrow-up\"></i></a>\n                                <br>\n                                <a class=\"btn btn-xs btn-info\" data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_FrmAumentaPeso.\' a \'.($registro_campos[\"PCOBD_Peso\"]+1).\'\" href=\\\'\'.$ArchivoCORE.\'?PCO_Accion=cambiar_estado_campo&id=\'.$registro_campos[\"id\"].\'&tabla=formulario_objeto&campo=PCOBD_Peso&formulario=\'.$registro_campos[\"formulario\"].\'&accion_retorno=PCO_EditarFormulario&valor=\'.($registro_campos[\"PCOBD_Peso\"]+1).\'&nombre_tabla=\'.$registro_formulario[\"tabla_datos\"].\'\\\'><i class=\"fa fa-arrow-down\"></i></a>\n                            </div>\n                            <div style=\"display: inline-block;\">\n                                <a class=\"btn btn-xs btn-info \'.$EstadoDeshabilitadoMoverDerecha.\'\" data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_Siguiente.\' \'.$MULTILANG_Columna.\'\" href=\\\'\'.$ArchivoCORE.\'?PCO_Accion=cambiar_estado_campo&id=\'.$registro_campos[\"id\"].\'&tabla=formulario_objeto&campo=PCOBD_Columna&formulario=\'.$registro_campos[\"formulario\"].\'&accion_retorno=PCO_EditarFormulario&valor=\'.($registro_campos[\"PCOBD_Columna\"]+1).\'&nombre_tabla=\'.$registro_formulario[\"tabla_datos\"].\'\\\'><i class=\"fa fa-arrow-right\"></i></a>\n                            </div>\n                            \n                            <div style=\"display: inline-block; vertical-align:top;\">\n                                <a class=\"btn btn-xs\" data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"<div align=left><font color=yellow>\'.$MULTILANG_Detalles.\' <i>(\'.$MULTILANG_MnuPropiedad.\')</i></font><br>ID HTML: <b>\'.$registro_campos[\"id_html\"].\'</b><br>\'.$MULTILANG_FrmCampo.\': <b>\'.$registro_campos[\"campo\"].\'</b><br>\'.$MULTILANG_FrmPredeterminado.\': <b>\'.$registro_campos[\"valor_predeterminado\"].\'</b><br>\'.$MULTILANG_FrmValida.\': <b>\'.$registro_campos[\"validacion_datos\"].\'</b> Extra: <b>\'.$registro_campos[\"validacion_extras\"].\'</b></div>\" href=\\\'#\\\'><i class=\"fa fa-info-circle\"></i></a>\';\n                            //Si el objeto es un formulario o informe embebido agrega enlace para su edicion directa\n                            if ($registro_campos[\"tipo\"]==\"form_consulta\")\n                                $salida.=\'<br><a onclick=\\\'return confirm(\"\'.$MULTILANG_SaltoEdicion.\'\");\\\' href=\\\'\'.$ArchivoCORE.\'?PCO_Accion=PCO_EditarFormulario&formulario=\'.$registro_campos[\"formulario_vinculado\"].\'&popup_activo=\\\' class=\"btn btn-primary btn-xs\"  data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_Editar.\' \'.$MULTILANG_Embebido.\'<br>\'.$Complemento_NombreEmbebido.\'\"><i class=\"fa fa fa-object-ungroup\"></i></a>\';\n                            if ($registro_campos[\"tipo\"]==\"informe\")\n                                $salida.=\'<br><a onclick=\\\'return confirm(\"\'.$MULTILANG_SaltoEdicion.\'\");\\\' href=\\\'\'.$ArchivoCORE.\'?PCO_Accion=PCO_EditarInforme&informe=\'.$registro_campos[\"informe_vinculado\"].\'&popup_activo=\\\' class=\"btn btn-primary btn-xs\"  data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_Editar.\' \'.$MULTILANG_Embebido.\'<br>\'.$Complemento_NombreEmbebido.\'\"><i class=\"fa fa fa-object-ungroup\"></i></a>\';\n                $salida.=\'</div>\n                            <div style=\"display: inline-block;\">\n                                <a class=\"btn btn-xs \" data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_Cerrar.\'\" href=\"javascript:OcultarOpcionesEdicion(this,\\\'#PCOEditorContenedor_\'.$registro_campos[\"id\"].\'\\\');\"><i class=\"fa fa-times\"></i></a>\n                                <br>\n                                <a onclick=\\\'return confirm(\"\'.$MULTILANG_FrmAdvDelCampo.\'\");\\\' href=\\\'\'.$ArchivoCORE.\'?PCO_Accion=PCO_EliminarCampoFormulario&campo=\'.$registro_campos[\"id\"].\'&formulario=\'.$registro_campos[\"formulario\"].\'&nombre_tabla=\'.$registro_formulario[\"tabla_datos\"].\'\\\' class=\"btn btn-danger btn-xs\"  data-toggle=\"tooltip\" data-html=\"true\"  data-placement=\"top\" title=\"\'.$MULTILANG_Eliminar.\'\"><i class=\"fa fa-trash\"></i></a>\n                            </div>\n                            </div>\';\n            }\n		return $salida;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_CargarFormulario\n	Genera el codigo HTML correspondiente a un formulario de la aplicacion y hace los llamados necesarios para la diagramacion por pantalla de los diferentes objetos que lo componen.\n\n	Variables de entrada:\n\n		formulario - ID unico del formulario que se desea cargar\n		en_ventana - Opcional, determina si el formulario es cargado en una ventana o directamente sobre el escritorio\n		PCO_CampoBusquedaBD - Opcional, indica el campo sobre el cual se deben realizar busquedas para el cargue automatico de campos del formulario desde la base de datos\n		PCO_ValorBusquedaBD - Opcional, indica el valor que sera buscado sobre el PCO_CampoBusquedaBD para encontrar los valores de cada objeto en el formulario\n		anular_form - Opcional, indica si las etiquetas del formulario HTML deben ser eliminadas y agregar los campos crudos dentro del form\n		modo_diseno_formulario - Opcional, indica si se esta disenando el formulario para presentar algunos controles extra\n\n	(start code)\n		SELECT * FROM \".$TablasCore.\"formulario WHERE id=\'$formulario\'\n		SELECT id,PCOBD_Peso,visible FROM \".$TablasCore.\"formulario_objeto WHERE formulario=\'$formulario\' AND fila_unica=\'1\' AND visible=1 UNION SELECT 0,$limite_superior,0 ORDER BY PCOBD_Peso\n		SELECT * FROM \".$TablasCore.\"formulario_objeto WHERE formulario=\'$formulario\' AND columna=\'$cl\' AND visible=1 AND PCOBD_Peso >\'$limite_inferior\' AND PCOBD_Peso <=\'$limite_superior\' ORDER BY PCOBD_Peso\n		Por cada registro\n			Llamar creacion de objeto correspondiente\n		SELECT * FROM \".$TablasCore.\"formulario_objeto WHERE formulario=\'$formulario\' AND id=\'$ultimo_id\'\n		SELECT * FROM \".$TablasCore.\"formulario_boton WHERE formulario=\'$formulario\' AND visible=1 ORDER BY peso\n	(end)\n\n	Salida:\n\n		HTML, CSS y Javascript asociado al formulario\n\n	Ver tambien:\n		<PCO_CargarInforme>\n*/\n    //Funcion para compatibilidad hacia atras.  Desaparecera en la version 18.9\n    function cargar_formulario($formulario,$en_ventana=1,$PCO_CampoBusquedaBD=\"\",$PCO_ValorBusquedaBD=\"\",$anular_form=0,$modo_diseno_formulario=0)\n    { echo \"ERROR: Llamado a funcion obsoleta del framework cargar_formulario().  En su lugar utilice PCO_CargarFormulario() \"; }\nfunction PCO_CargarFormulario($formulario,$en_ventana=1,$PCO_CampoBusquedaBD=\"\",$PCO_ValorBusquedaBD=\"\",$anular_form=0,$modo_diseno_formulario=0,$ComplementoPestanas=\"\")\n  {\n        global $ModoDesarrolladorPractico,$PCO_RegistroDatosFormulario;\n        global $ConexionPDO,$ArchivoCORE,$TablasCore,$LlaveDePaso;\n        global $PCO_InformeFiltro,$PCO_FuncionesJSInternasFORM;\n		global $_SeparadorCampos_;\n		// Carga variables de definicion de tablas\n		global $ListaCamposSinID_formulario,$ListaCamposSinID_formulario_objeto,$ListaCamposSinID_formulario_boton,$ListaCamposSinID_menu;\n		global $MULTILANG_Formularios,$MULTILANG_Editar,$MULTILANG_Elementos,$MULTILANG_Agregar,$MULTILANG_Configuracion,$MULTILANG_AvisoSistema,$MULTILANG_ErrFrmObligatorio,$MULTILANG_ErrorTiempoEjecucion,$MULTILANG_ObjetoNoExiste,$MULTILANG_ContacteAdmin,$MULTILANG_Formularios,$MULTILANG_VistaImpresion,$MULTILANG_InfRetornoFormFiltrado,$MULTILANG_FrmMsj1,$MULTILANG_Documentar;\n        global $PCO_InformesListaColumnasDT,$PCO_InformesRecuperacionAJAX,$PCO_InformesIdCache,$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        global $POSTForm_ListaCamposObligatorios,$POSTForm_ListaTitulosObligatorios;\n		global $PCO_BarraHerramientasFormulario; \n		global $TabIndex_Elemento;\n\n		// Busca datos del formulario\n		$registro_formulario=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_formulario.\" FROM \".$TablasCore.\"formulario WHERE id=?\",\"$formulario\")->fetch();\n\n        //Determina si el usuario es un disenador de aplicacion para mostrar el ID de objeto a manera informativa y un boton de salto a edicion\n        $BotonSaltoEdicion=\'\n                    <a class=\"btn btn-default btn-xs\" href=\"index.php?PCO_Accion=PCO_EditarFormulario&popup_activo=&formulario=\'.$formulario.\'\" id=\"PCO_BotonEdicionFormulario\">\n                        <div><i class=\"fa fa-pencil-square\"></i> \'.$MULTILANG_Editar.\' \'.$MULTILANG_Formularios.\' <i>[ID=\'.$formulario.\']</i></div>\n                    </a>\';\n		if (PCO_EsAdministrador($_SESSION[\'PCOSESS_LoginUsuario\']) && ($formulario>=0 || $ModoDesarrolladorPractico==-10000) )\n		    $ComplementoIdObjetoEnTitulo=\"  $BotonSaltoEdicion\";\n\n		echo \'\n		<script type=\"text/javascript\">\n			function AgregarElemento(columna,fila,elemento)\n				{\n					//carga dinamicamente objetos html a marcos\n					var capa = document.getElementById(ubicacion);\n					var zona = document.createElement(\"po\");\n					zona.innerHTML = elemento;\n					capa.appendChild(zona);\n				}\n\n			function ImprimirMarco(nombre)\n				{\n				  var marco_contenidos = document.getElementById(nombre);\n				  var ventana_impresion = window.open(\" \", \"PopUpImpresion\");\n\n				  //Agrega estilos basicos\n                    //ventana_impresion.document.write( \\\'<link rel=\"stylesheet\" type=\"text/css\" href=\"general.css\">\\\' );\n\n				  //Agrega titulo del formulario\n					//ventana_impresion.document.write( \\\'<div align=CENTER><b>\'.$registro_formulario[\"titulo\"].\'</b></div><hr>\\\' );\n\n				  //Agrega el concenito del DIV al documento\n					ventana_impresion.document.write( marco_contenidos.innerHTML );\n					ventana_impresion.document.close();\n\n				  //Abre ventana de impresion\n					ventana_impresion.print( );\n\n				  //Cierra ventana de impresion\n					ventana_impresion.close();\n				}\n\n			function OcultarOpcionesEdicion(ObjetoEnlazado,NombreMarcoOpciones)\n			    {\n				    BasuritaVar1=$(ObjetoEnlazado).css(\\\'border\\\', \\\'0px solid\\\');\n				    BasuritaVar2=$(NombreMarcoOpciones).css({\\\'visibility\\\':\\\'hidden\\\'});\n				    BasuritaVar3=$(NombreMarcoOpciones).css({\\\'display\\\':\\\'none\\\'});\n			    }\n		</script>\n		<!--<input type=button onclick=\\\'AgregarElemento(\"1\",\"1\",\"hello world\");\\\'>-->\';\n\n        if ($modo_diseno_formulario==1)\n            {\n        		echo \'<script type=\"text/javascript\">\n                        function PCOJS_LlamadoRemotoEditarFormulario()\n            				{\n            					document.getElementById(\"PCO_BotonEdicionFormulario\").click();\n            				}\n				\n                        function PCOJS_ActualizarControlFormulario(idformulario,idcontrol,pestana_activa){\n                            //Salta a edicion de control\n                            var URLPopUp=\"index.php?PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:-36:0:id:\"+idcontrol+\"&Presentar_FullScreen=1&Precarga_EstilosBS=1&formulario=\"+idformulario+\"&pestana_activa_apertura=\"+pestana_activa+\"&PCO_TipoControlDirecto=\";\n                            PCOJS_MostrarMensaje(\"\'.$MULTILANG_FrmMsj1.\'\",\"Cargando...\",\"modal-wide oculto_impresion\");\n                            $(\"#PCO_Modal_MensajeCuerpo\").html(\\\'<iframe id=\"IFrameEmbebido\" scrolling=\"yes\" style=\"margin:10px; border:0px;\" height=500 width=100% src=\"\\\'+URLPopUp+\\\'\"></iframe>\\\');\n                            $(\"#PCO_Modal_MensajeBotones\").html(\\\'<button id=\"boton_filtrar\" type=\"button\" class=\"btn btn-outline btn-info\" data-dismiss=\"modal\" onclick=\"PCOJS_LlamadoRemotoEditarFormulario();\" >Cerrar</button></a>\\\');\n                        }\n        		    </script>\';\n            }\n\n        //Funciones asociadas a documentacion\n		echo \'<script type=\"text/javascript\">\n                function PCOJS_DocumentacionFormulario(idformulario,IdInforme){\n                    //Presenta informe con documentacion del formulario o posibilidad de crear nueva documentacion\n                    \n                    //Define los campos segun el informe a utilizar\n                    lista_campos_segun_informe=\"titulo as Titulo,formato as Formato,visibilidad as Visible\";\n                    if (IdInforme==-56) lista_campos_segun_informe=\"titulo as Titulo,formato as Formato\";\n                    \n                    //Define ancho de ventana segun tipo de informe/usuario\n                    estilo_ancho_ventana=\"modal-wide \";\n                    if (IdInforme==-56) estilo_ancho_ventana=\"\";\n\n                    var URLPopUp=\"index.php?PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:\"+IdInforme+\":0&Presentar_FullScreen=1&Precarga_EstilosBS=1&origen=Formulario&detalle_origen=\"+idformulario+\"&lista_campos_documentacion=\"+lista_campos_segun_informe;\n                    PCOJS_MostrarMensaje(\"\'.$MULTILANG_Documentar.\'\",\"Cargando...\",estilo_ancho_ventana+\" oculto_impresion\");\n                    $(\"#PCO_Modal_MensajeCuerpo\").html(\\\'<iframe id=\"IFrameEmbebido\" scrolling=\"yes\" style=\"margin:10px; border:0px;\" height=450 width=100% src=\"\\\'+URLPopUp+\\\'\"></iframe>\\\');\n                    $(\"#PCO_Modal_MensajeBotones\").html(\\\'<button id=\"boton_filtrar\" type=\"button\" class=\"btn btn-outline btn-info\" data-dismiss=\"modal\" onclick=\"CargarFormulario();\" >Cerrar</button></a>\\\');\n                }\n                \n                //TODO: Pasar a JS general para permitir llamado desde otros apartados, ej, Kanban\n                //IdDocumentacion contiene dos datos, IdRegistro|TipoDocumentacion\n                //TipoDocCreacion contiene el formato de documentacion (redundante con parte del primer parametro pero usado solo en creacion)\n                function PCOJS_EditarDocumentacion(IdDocumentacion,TipoDocCreacion)\n                    {\n                        IdDocumentacion=IdDocumentacion+\"\";\n                        PartesIdDocumentacion=IdDocumentacion.split(\"|\");\n                        //Determina tipo de documentacion para establecer el tipo de llamado.\n                        \n                        IdRegistro=PartesIdDocumentacion[0];\n                        TipoRegistro=PartesIdDocumentacion[1];\n                        if (IdRegistro!=\"\" && IdRegistro!=\"0\")\n                            {\n                                //Determina si va a editar un contenido enriquecido o un diagrama\n                                if (TipoRegistro==\"Enriquecido\" || TipoDocCreacion==\"Enriquecido\")\n                                    var URLPopUp=\"index.php?PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:-43:0:id:\"+IdRegistro+\"&Presentar_FullScreen=1&Precarga_EstilosBS=1&origen=Formulario&formato=\"+TipoRegistro;\n                                if (TipoRegistro==\"Diagrama\")\n                                    var URLPopUp=\"inc/mxgraph/javascript/scripts/grapheditor/www/index.php?PCO_CampoOrigen=documentacion&PCO_TablaOrigen=core_documentacion&PCO_CampoLlave=id&PCO_ValorLlave=\"+IdRegistro;\n                            }\n                        else\n                            var URLPopUp=\"index.php?PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:-43:0&Presentar_FullScreen=1&Precarga_EstilosBS=1&origen_creacion=Formulario&detalle_origen_creacion=\'.$registro_formulario[\"id\"].\'&formato_creacion=\"+TipoDocCreacion;\n                        \n                        //Carga el editor de documentacion\n                        PCO_VentanaPopup(URLPopUp,\"Docs\"+IdRegistro,\"toolbar=no, location=no, directories=0, directories=no, status=no, location=no, menubar=no ,scrollbars=no, resizable=yes, fullscreen=no, titlebar=no, width=900, height=700\");\n                    }\n                function PCOJS_VisualizarDocumentacion(IdDocumentacion)\n                    {\n                        alert(\"Sin acceso a elemento: \"+IdDocumentacion);\n                    }\n		    </script>\';\n\n\n		//Si no encuentra formulario presenta error\n		if ($registro_formulario[\"id\"]==\"\")	PCO_Mensaje($MULTILANG_ErrorTiempoEjecucion,$MULTILANG_ObjetoNoExiste.\" \".$MULTILANG_ContacteAdmin.\"<br>(\".$MULTILANG_Formularios.\" $formulario)\", \'\', \'fa fa-times fa-5x icon-red texto-blink\', \'alert alert-danger alert-dismissible\');\n\n		// En caso de recibir un campo base y valor base se hace la busqueda para recuperar la informacion\n		if ($PCO_CampoBusquedaBD!=\"\" && $PCO_ValorBusquedaBD!=\"\")\n			{\n				$consulta_datos_formulario = $ConexionPDO->prepare(\"SELECT * FROM \".$registro_formulario[\"tabla_datos\"].\" WHERE $PCO_CampoBusquedaBD=\'$PCO_ValorBusquedaBD\'\");\n				$consulta_datos_formulario->execute();\n				$registro_datos_formulario = $consulta_datos_formulario->fetch();\n				$PCO_RegistroDatosFormulario=$registro_datos_formulario;\n			}\n		\n		//Carga cualquier script PRE para el formulario\n		if ($registro_formulario[\"pre_script\"]!=\"\" && $modo_diseno_formulario==0)\n		    {\n		        //Evalua si el codigo ya inicia con <?php y sino lo agrega\n		        $ComplementoInicioScript=\"\";\n		        if (substr(trim($registro_formulario[\"pre_script\"]),0,5)!=\'<?php\')\n		            $ComplementoInicioScript=\"<?php\\n\";\n		        PCO_EvaluarCodigo($ComplementoInicioScript.$registro_formulario[\"pre_script\"],1,\"Detalles: PRE-Code Form ID=\".$formulario);\n		    }\n		    \n		\n		// Define la barra de herramientas mini superior (en barra de titulo)\n		@$PCO_BarraHerramientasFormulario.=\'\n				<a  href=\"#\" data-toggle=\"tooltip\" data-html=\"true\"  title=\"\'.$MULTILANG_VistaImpresion.\'\" name=\"\">\n					<i class=\"fa fa-print\" OnClick=\"ImprimirMarco(\\\'MARCO_IMPRESION\\\');\"></i>\n				</a>\';\n\n		// Establece color de fondo para el form\n		$color_fondo=\"#f2f2f2\";\n\n		//Determina si esta en modo diseno para agregar algunos elementos extra al titulo del form\n        if ($modo_diseno_formulario)\n            {\n                //Genera llaves de apertura unicos para los archivos de pcoder \n                //FORMA 1: Enlaces estandar (Modo de emergencia o depuracion de PCoder)\n                // $PCO_EnlaceScriptPRE =\"javascript:PCO_VentanaPopup(\'index.php?PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:-33:0&Presentar_FullScreen=1&Precarga_EstilosBS=1&Origen_Archivo=B&Tabla_Archivo=core_formulario&Campo_Archivo=pre_script&PCODER_extension=php&PCODER_ModoEditor=PHP&PCODER_TipoMenu=Iconos&PCODER_EstadoSimple=1&Llave_Registro={$formulario}&PCODER_Titulo=Script_PRE_Formulario_{$formulario}_(PHP)\',\'PcoderNG\',\'toolbar=no, location=no, directories=0, directories=no, status=no, location=no, menubar=no ,scrollbars=no, resizable=yes, fullscreen=no, titlebar=no, width=800, height=600\');\";  //ANTES  width=\'+screen.width+\', height=\'+screen.height);\n                // $PCO_EnlaceScriptPOST=\"javascript:PCO_VentanaPopup(\'index.php?PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:-33:0&Presentar_FullScreen=1&Precarga_EstilosBS=1&Origen_Archivo=B&Tabla_Archivo=core_formulario&Campo_Archivo=post_script&PCODER_extension=php&PCODER_ModoEditor=PHP&PCODER_TipoMenu=Iconos&PCODER_EstadoSimple=1&Llave_Registro={$formulario}&PCODER_Titulo=Script_POST_Formulario_{$formulario}_(PHP)\',\'PcoderNG\',\'toolbar=no, location=no, directories=0, directories=no, status=no, location=no, menubar=no ,scrollbars=no, resizable=yes, fullscreen=no, titlebar=no, width=800, height=600\');\";  //ANTES  width=\'+screen.width+\', height=\'+screen.height);\n                // $PCO_EnlaceScriptJS  =\"javascript:PCO_VentanaPopup(\'index.php?PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:-33:0&Presentar_FullScreen=1&Precarga_EstilosBS=1&Origen_Archivo=B&Tabla_Archivo=core_formulario&Campo_Archivo=javascript&PCODER_extension=js&PCODER_ModoEditor=JavaScript&PCODER_TipoMenu=Iconos&PCODER_EstadoSimple=1&Llave_Registro={$formulario}&PCODER_Titulo=Script_JS_Formulario_{$formulario}_(JS)\' ,\'PcoderNG\',\'toolbar=no, location=no, directories=0, directories=no, status=no, location=no, menubar=no ,scrollbars=no, resizable=yes, fullscreen=no, titlebar=no, width=800, height=600\');\";  //ANTES  width=\'+screen.width+\', height=\'+screen.height);\n                //FORMA 2: Con funcion interna de apertura - Sobreescribe FORMA 1 - Comentar para pasar a modo de emergencia\n                $TituloPCoder_COMPLEMENTO=\" - <font color=white>\".$registro_formulario[\"titulo\"].\"</font> \";\n                $LlaveParcial_FirmaSistema=substr($LlaveDePaso,-3);\n                $PCO_EnlaceScriptPRE =\"javascript:PCOJS_CargarArchivoPCoderBD(\'{$LlaveParcial_FirmaSistema}\',\'\',\'\',\'\',\'No\',\'B\',\'core_formulario\',\'pre_script\', \'{$formulario}\',\'php\',\'PHP\'       ,\'Iconos\',\'1\',\'<font color=white>Script_PRE</font> Formulario_{$formulario}_(PHP){$TituloPCoder_COMPLEMENTO}\');\";\n                $PCO_EnlaceScriptPOST=\"javascript:PCOJS_CargarArchivoPCoderBD(\'{$LlaveParcial_FirmaSistema}\',\'\',\'\',\'\',\'No\',\'B\',\'core_formulario\',\'post_script\',\'{$formulario}\',\'php\',\'PHP\'       ,\'Iconos\',\'1\',\'<font color=white>Script_POST</font> Formulario_{$formulario}_(PHP){$TituloPCoder_COMPLEMENTO}\');\";\n                $PCO_EnlaceScriptJS  =\"javascript:PCOJS_CargarArchivoPCoderBD(\'{$LlaveParcial_FirmaSistema}\',\'\',\'\',\'\',\'No\',\'B\',\'core_formulario\',\'javascript\' ,\'{$formulario}\',\'js\' ,\'JavaScript\',\'Iconos\',\'1\',\'<font color=white>Script_JS</font> Formulario_{$formulario}_(PHP){$TituloPCoder_COMPLEMENTO}\');\";\n                $PCO_EnlaceScriptDOCS  =\"javascript:LMQTP=PCOJS_DocumentacionFormulario(\'{$formulario}\',-55);\";\n\n				$ComplementoTituloFormulario=\'\n				<div class=\"pull-right\">\n                    <a class=\"btn btn-default btn-xs\" data-toggle=\"modal\" href=\"\'.$PCO_EnlaceScriptDOCS.\'\">\n                        <div><i class=\"fa fa-file-word-o\"></i> Docs</div>\n                    </a>\n                    <a class=\"btn btn-primary btn-xs\" data-toggle=\"modal\" title=\"\'.$MULTILANG_FrmAdvScriptForm.\'\" href=\"\'.$PCO_EnlaceScriptPRE.\'\">\n                        <div><i class=\"fa fa-file-code-o\"></i> PRE</div>\n                    </a>\n                    <a class=\"btn btn-info btn-xs\" data-toggle=\"modal\" title=\"\'.$MULTILANG_FrmAdvScriptForm.\'\" href=\"\'.$PCO_EnlaceScriptPOST.\'\">\n                        <div><i class=\"fa fa-file-code-o\"></i> POST</div>\n                    </a>\n                    <a class=\"btn btn-warning btn-xs\" data-toggle=\"modal\" title=\"\'.$MULTILANG_FrmAdvScriptForm.\'\" href=\"\'.$PCO_EnlaceScriptJS.\'\">\n                        <div><i class=\"fa fa-file-code-o\"></i> JS</div>\n                    </a>\n                    &nbsp;\n					<a class=\"btn btn-default btn-xs\" href=\"javascript:PCOJS_AlternarBarraFlotanteIzquierda();\">\n						<div><i class=\"fa fa-cog fa-spin fa-fw\"></i> \'.$MULTILANG_Configuracion.\' / \'.$MULTILANG_Agregar.\' \'.$MULTILANG_Elementos.\'</div>\n					</a>\n				</div>\';\n            }\n        else\n            {\n                //Determina si el formulario tiene documentacion asociada y muestra el boton\n                $TotalDocumentacionElemento=PCO_EjecutarSQL(\"SELECT COUNT(*) FROM core_documentacion WHERE origen=\'Formulario\' AND detalle_origen=\'{$formulario}\' AND visibilidad=\'Usuario\' \")->fetchColumn();\n                if ($TotalDocumentacionElemento!=\"0\")\n                    {\n                        $PCO_EnlaceScriptDOCS  =\"javascript:LMQTP=PCOJS_DocumentacionFormulario(\'{$formulario}\',-56);\";\n        				$ComplementoTituloFormulario=\'\n        				<div class=\"pull-right\">\n                            <a class=\"btn btn-info btn-xs\" data-toggle=\"modal\" href=\"\'.$PCO_EnlaceScriptDOCS.\'\">\n                                <div><i class=\"fa fa-file-word-o\"></i> Docs</div>\n                            </a>\n        				</div>\';                        \n                    }\n            }\n\n		// Crea ventana si aplica para el form\n		if ($en_ventana) PCO_AbrirVentana(PCO_ReemplazarVariablesPHPEnCadena($registro_formulario[\"titulo\"]).$ComplementoTituloFormulario.$ComplementoIdObjetoEnTitulo,$registro_formulario[\"estilo_ventana\"],\'\',$PCO_BarraHerramientasFormulario);\n\n        //Busca las posibles opciones de menu agregadas al formulario\n        $RegistroCantidadMenues=PCO_EjecutarSQL(\"SELECT COUNT(*) as CantidadMenues FROM \".$TablasCore.\"menu WHERE formulario_vinculado=\'$formulario\' AND padre=0\")->fetch();\n        if ($RegistroCantidadMenues[\"CantidadMenues\"]>0)\n            {\n        		echo \'<!-- Boton expansible para menu en dispositivos moviles -->\n        			<nav class=\"navbar navbar-default\" style=\"min-height:30px !important; margin:0px !important; padding:0px !important;\"> <!--  navbar-xs navbar-fixed-top  navbar-inverse navbar-fixed-bottom navbar-static-top  -->\n    					<div class=\"navbar-header\">\n    						<button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#MENU_FORMULARIO_\'.$formulario.\'\" aria-expanded=\"false\">\n    						    <i class=\"fa fa-bars\"></i>\n    						</button>\n    					</div>\n            		    <div class=\"collapse navbar-collapse\" id=\"MENU_FORMULARIO_\'.$formulario.\'\">\';\n                            $resultado=PCO_EjecutarSQL(\"SELECT \".$TablasCore.\"menu.id as id,$ListaCamposSinID_menu FROM \".$TablasCore.\"menu WHERE formulario_vinculado=\'$formulario\' AND padre=0 ORDER BY peso\");\n                            $ConteoOpciones=1;\n                            while($registro = $resultado->fetch())\n                                {\n                                    echo \'<div style=\"display:inline !important;\" id=\"MENU_FORMULARIO_OPCION_\'.$ConteoOpciones.\'\">\';\n                                    PCO_ImprimirOpcionMenu($registro,\'formulario\');\n                                    echo \'</div>\';\n                                    $ConteoOpciones++;\n                                }\n        		echo \'  </div>\n        		    </nav>\';\n            }\n\n		// Muestra ayuda en caso de tenerla\n		$imagen_ayuda=\'fa fa-info-circle fa-5x texto-azul\';\n		if ($registro_formulario[\"ayuda_titulo\"]!=\"\" || $registro_formulario[\"ayuda_texto\"]!=\"\")\n			PCO_Mensaje(PCO_ReemplazarVariablesPHPEnCadena($registro_formulario[\"ayuda_titulo\"]),PCO_ReemplazarVariablesPHPEnCadena($registro_formulario[\"ayuda_texto\"]),\'100%\',$imagen_ayuda,\'alert alert-info alert-dismissible\');\n\n		//Inicia el formulario de datos\n		echo \'<div id=\"PCO_MarcoImpresion\'.$formulario.\'\">\';\n		//Si se quiere anular el formulario y su accion cuando se trata de un sub-formulario de consulta\n		if (!$anular_form)\n			echo\'<form id=\"\'.$registro_formulario[\"id_html\"].\'\" name=\"\'.$registro_formulario[\"id_html\"].\'\" action=\"\'.$ArchivoCORE.\'\" method=\"POST\" enctype=\"multipart/form-data\" style=\"display:inline; height: 0px; border-width: 0px; width: 0px; padding: 0; margin: 0;\">\n				<input type=\"Hidden\" name=\"formulario\" value=\"\'.$formulario.\'\">\n				<input type=\"Hidden\" name=\"id_registro_datos\" value=\"\'.@$registro_datos_formulario[\"id\"].\'\">\n				<input type=\"Hidden\" name=\"PCO_FormularioActivo\" value=\"\'.$formulario.\'\">\n				<input type=\"Hidden\" name=\"PCO_Accion\" value=\"PCO_GuardarDatosFormulario\">\n				<input type=\"Hidden\" name=\"PCO_ErrorIcono\" value=\"\'.@$PCO_ErrorIcono.\'\">\n				<input type=\"Hidden\" name=\"PCO_ErrorEstilo\" value=\"\'.@$PCO_ErrorEstilo.\'\">\n				<input type=\"Hidden\" name=\"PCO_ErrorTitulo\" value=\"\'.@PCO_ReemplazarVariablesPHPEnCadena($PCO_ErrorTitulo).\'\">\n				<input type=\"Hidden\" name=\"PCO_ErrorDescripcion\" value=\"\'.@PCO_ReemplazarVariablesPHPEnCadena($PCO_ErrorDescripcion).\'\">\n                <input type=\"Hidden\" name=\"Presentar_FullScreen\" value=\"\'.@$Presentar_FullScreen.\'\">\n                <input type=\"Hidden\" name=\"Precarga_EstilosBS\" value=\"\'.@$Precarga_EstilosBS.\'\">\n                <input type=\"Hidden\" name=\"PCO_Objeto\" value=\"\">  <!--Requerido si se va a transferir el control a un objeto FRM o INF-->\n                <input type=\"Hidden\" name=\"objeto\" value=\"\">      <!--COMPATIBILIDAD: Requerido si se va a transferir el control a un objeto FRM o INF-->\n				\';\n\n        // Inicio de la generacion de encabezados pestanas\n        //Cuenta las pestanas segun los objetos del form y ademas mira si es solo una con valor vacio (sin pestanas)\n        $consulta_conteo_pestanas=      PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_formulario_objeto.\" FROM \".$TablasCore.\"formulario_objeto WHERE formulario=? AND visible=1 GROUP BY pestana_objeto ORDER BY pestana_objeto\",\"$formulario\");\n        $conteo_pestanas=0;\n        $conteo_pestanas_ocultas=0;\n        while($registro_conteo_pestanas = @$consulta_conteo_pestanas->fetch())\n            {\n                $titulo_pestana_formulario=$registro_conteo_pestanas[\"pestana_objeto\"];\n                if ($titulo_pestana_formulario!=\"PCO_NoVisible\" || (PCO_EsAdministrador($_SESSION[\'PCOSESS_LoginUsuario\']) && $formulario>=0)  ||  (PCO_EsAdministrador($_SESSION[\'PCOSESS_LoginUsuario\']) && $formulario<0 && $modo_diseno_formulario==1)   )\n                    {\n                        $conteo_pestanas++;\n                        $ultimo_nombre_pestanas=$registro_conteo_pestanas[\"pestana_objeto\"];\n                    }\n                //Lleva el conteo de las ocultas en caso que las deba crear aunque solo exista una visible pero se requieran los tab-pane para separar la oculta\n                if ($titulo_pestana_formulario==\"PCO_NoVisible\")\n                    $conteo_pestanas_ocultas=1;\n            }\n        //Presenta barra de navegacion de pestanas si se encuentra al menos una\n        if ($conteo_pestanas>0 && ($ultimo_nombre_pestanas!=\"\"))\n            {\n				//Determina el estilo de las pestanas\n				$CadenaEstiloPestanas=\"\"; //Estilo por defecto para aplicar a las pestanas\n				if($registro_formulario[\"estilo_pestanas\"]==\"\")\n					$CadenaEstiloPestanas=\"visibility:hidden; height:0px;\"; //Oculta las pestanas\n\n                $consulta_formulario_pestana=   PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_formulario_objeto.\" FROM \".$TablasCore.\"formulario_objeto WHERE formulario=? AND visible=1 GROUP BY pestana_objeto ORDER BY pestana_objeto\",\"$formulario\");\n                echo \'<ul class=\"nav \'.$registro_formulario[\"estilo_pestanas\"].\' nav-justified oculto_impresion\" style=\"\'.$CadenaEstiloPestanas.\'\">\';\n                $estado_activa_primera_pestana=\' class=\"active\" \';\n                $pestana_activa=1;\n                while($registro_formulario_pestana = @$consulta_formulario_pestana->fetch())\n                    {\n                        $titulo_pestana_formulario=PCO_ReemplazarVariablesPHPEnCadena($registro_formulario_pestana[\"pestana_objeto\"]);\n                        if ($titulo_pestana_formulario==\"\") $titulo_pestana_formulario=\"<i class=\'fa fa-stack-overflow\'></i>\";\n                        //Presenta la pestana solamente si no es una oculta\n                        if ($titulo_pestana_formulario!=\"PCO_NoVisible\" || (PCO_EsAdministrador($_SESSION[\'PCOSESS_LoginUsuario\']) && $formulario>=0)   ||  (PCO_EsAdministrador($_SESSION[\'PCOSESS_LoginUsuario\']) && $formulario<0 && $modo_diseno_formulario==1)   )\n                            echo \'<li \'.$estado_activa_primera_pestana.\'  ><a  href=\"#PCO_Pestana\'.$ComplementoPestanas.\'Formulario_\'.$pestana_activa.\'\" data-toggle=\"tab\" id=\"PCO_LinkPestanaFormulario_\'.$pestana_activa.\'\">\'.$titulo_pestana_formulario.\'</a></li>\';\n                        //Limpia para las siguientes pestanas\n                        $estado_activa_primera_pestana=\'\';\n                        $pestana_activa++;\n                    }\n                echo \'</ul>\';\n            }\n        // Fin de la generacion de encabezados pestanas\n\n        //Genera las pestanas con su contenido\n        $UltimaClaseColumna=\"\";\n        if ($conteo_pestanas>0)\n            {\n                $consulta_formulario_pestana=   PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_formulario_objeto.\" FROM \".$TablasCore.\"formulario_objeto WHERE formulario=? AND visible=1 GROUP BY pestana_objeto ORDER BY pestana_objeto\",\"$formulario\");\n                $estado_activa_primera_pestana=\'in active\';\n                $pestana_activa=1;\n\n                //Inicio de los tab-content\n                echo \'<div class=\"tab-content\" >\';\n                while($registro_formulario_pestana = @$consulta_formulario_pestana->fetch())\n                    {\n                        //Si la pestana es PCO_NoVisible entonces agrega la clase de oculta en impresion\n                        $ComplementoClaseOcultaImpresion=\"\";\n                        if ($registro_formulario_pestana[\"pestana_objeto\"]==\"PCO_NoVisible\") $ComplementoClaseOcultaImpresion=\"oculto_impresion\";\n\n                        $titulo_pestana_formulario=$registro_formulario_pestana[\"pestana_objeto\"];\n                        //Genera el contenedor de la pestana.  Se considera necesario crear contenedores solo cuando hay mas de una pestana, si hay una solamente entonces no hay que crear el contenedor\n                        if ($conteo_pestanas>1 || $conteo_pestanas_ocultas==1)\n                        echo \'\n                        <!-- INICIO de las pestanas No \'.$pestana_activa.\' -->\n                            <div class=\"tab-pane fade \'.$estado_activa_primera_pestana.\' \'.$ComplementoClaseOcultaImpresion.\' \" id=\"PCO_Pestana\'.$ComplementoPestanas.\'Formulario_\'.$pestana_activa.\'\" >\';\n\n                                //Booleana que determina si se debe incluir el javascript de ckeditor\n                                $existe_campo_textoformato=0;\n\n                                //DIAGRAMACION DE LA TABLA CON ELEMENTOS DEL FORMULARIO\n                                $limite_inferior=-9999; // Peso inferior a tener en cuenta en el query\n                                $constante_limite_superior=+9999;\n                                $limite_superior=$constante_limite_superior; // Peso superior a tener en cuenta en el query\n                                //Busca todos los objetos marcados como fila_unica=1 y agrega un registro mas con el limite superior\n                                $consulta_obj_fila_unica=PCO_EjecutarSQL(\"SELECT id,PCOBD_Peso,visible FROM \".$TablasCore.\"formulario_objeto WHERE pestana_objeto=? AND formulario=? AND fila_unica=\'1\' AND visible=1 UNION SELECT 0,$limite_superior,0 ORDER BY PCOBD_Peso\",\"$titulo_pestana_formulario$_SeparadorCampos_$formulario\");\n                                //Define si debe o no dibujar borde de las celdas\n                                $estilo_bordes=\"table-unbordered\";\n                                $ancho_bordes=\"border-width: 0px;\";\n                                if ($registro_formulario[\"borde_visible\"]==1)\n									{\n										$estilo_bordes=\"table-bordered\";\n										$ancho_bordes=\"border-width: 1px;\";\n									}\n\n                                $TabIndex_Elemento=1;\n                                while ($registro_obj_fila_unica = $consulta_obj_fila_unica->fetch())\n                                    {\n                                        $limite_superior=$registro_obj_fila_unica[\"PCOBD_Peso\"];\n                                        $ultimo_id=$registro_obj_fila_unica[\"id\"];\n\n                                        //Define tipo_maquetacion\n                                        if($registro_formulario[\"tipo_maquetacion\"]==\"responsive\")\n                                            {\n                                                echo \'<div class=\"row\">\';\n                                            }\n                                        //Define tipo_maquetacion\n                                        if($registro_formulario[\"tipo_maquetacion\"]==\"tradicional\")\n                                            {\n                                                // Inicia la tabla con los campos\n                                                echo \'\n                                                    <div class=\"table-responsive\" style=\"border-width: 0px; margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; \">\n                                                    <table class=\"table table-responsive \'.$estilo_bordes.\' table-condensed btn-xs d-flex\" style=\"\'.$ancho_bordes.\' margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; padding: 0px; border-spacing: 0px; \"><tr>\';\n                                            }\n\n                                        //Recorre todas las comunas definidas para el formulario buscando objetos\n                                        for ($cl=1;$cl<=$registro_formulario[\"columnas\"];$cl++)\n                                            {\n                                                //Busca los elementos de la coumna actual del formulario con PCOBD_Peso menor o igual al PCOBD_Peso del objeto fila_unica de la fila unica_actual pero que no son fila_unica\n                                                $consulta_campos=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_formulario_objeto.\" FROM \".$TablasCore.\"formulario_objeto WHERE pestana_objeto=? AND formulario=? AND PCOBD_Columna=? AND visible=1 AND PCOBD_Peso >? AND PCOBD_Peso <=? ORDER BY PCOBD_Peso\",\"$titulo_pestana_formulario$_SeparadorCampos_$formulario$_SeparadorCampos_$cl$_SeparadorCampos_$limite_inferior$_SeparadorCampos_$limite_superior\");\n\n                                                    //Define tipo_maquetacion JJJ\n                                                    if($registro_formulario[\"tipo_maquetacion\"]==\"responsive\")\n                                                        {\n                                                            //Busca la clase asociada a la columna. Si no hay utiliza la ultima clase definida\n                                                            $ArregloClasesColumnas=explode(\"|\",$registro_formulario[\"css_columnas\"]);\n                                                            $ClaseColumna=$ArregloClasesColumnas[$cl-1];\n                                                            if ($ClaseColumna!=\"\") $UltimaClaseColumna=$ClaseColumna;\n                                                            else $ClaseColumna=$UltimaClaseColumna;\n                                                            //echo $ClaseColumna;\n                                                            echo \'<div class=\"\'.$ClaseColumna.\'\">\'; //col col-xs-3 col-sm-3 col-md-3 col-lg-3\n                                                        }\n                                                    //Define tipo_maquetacion\n                                                    if($registro_formulario[\"tipo_maquetacion\"]==\"tradicional\")\n                                                        {\n                                                            //Inicia columna de formulario\n                                                            $PCO_AnchoColumnas=round(100 / $registro_formulario[\"columnas\"]);\n                                                            echo \'<td width=\"\'.$PCO_AnchoColumnas.\'%\" >\';\n                                                        }\n\n                                                    // Crea los campos definidos por cada columna de formulario\n                                                    while ($registro_campos = $consulta_campos->fetch())\n                                                        {\n                                                            //Determina si el estilo del objeto debe ser inline o no\n                                                            $cadena_modo_inline=\'\';\n                                                            if ($registro_campos[\"modo_inline\"])\n                                                                $cadena_modo_inline=\'display:inline;\';\n                                                            echo \'<div style=\"\'.$cadena_modo_inline.\'\">\';\n\n                                                            //Imprime el campo solamente si no es fila unica, si es fila_unica guarda en una variable para uso posterior\n                                                            if($registro_campos[\"fila_unica\"]==\"0\")\n                                                                {\n                                                                    //Si esta en modo de diseno el formulario agrega elementos extra para la edicion de cada control\n                                                                    $ComplementoDisenoElemento=\'\';\n                                                                    $ComplementoDisenoMarcoOpciones=\'\';\n                                                                    if ($modo_diseno_formulario)\n                                                                        {\n                                                                            $ComplementoDisenoElemento=PCO_AgregarFuncionesEdicionObjeto($registro_campos,$registro_formulario,\"ComplementoDisenoElemento\");\n                                                                            $ComplementoDisenoMarcoOpciones=PCO_AgregarFuncionesEdicionObjeto($registro_campos,$registro_formulario,\"ComplementoDisenoMarcoOpciones\");\n                                                                        }\n                                                                    //Define el estilo del contenedor para el objeto\n                                                                    $ClaseCSSContenedor=\"\";\n                                                                    if ($registro_campos[\"clase_contenedor\"]!=\"\") $ClaseCSSContenedor=$registro_campos[\"clase_contenedor\"];\n                                                                    echo \'<div \'.$ComplementoDisenoElemento.\' id=\"PCOContenedor_\'.$registro_campos[\"id_html\"].\'\" class=\"\'.$ClaseCSSContenedor.\'\" > \'.$ComplementoDisenoMarcoOpciones;\n                                                                    echo \'<div id=\"PCOPre_\'.$registro_campos[\"id_html\"].\'\"></div>\';\n                                                                    \n                                                                    //Agrega etiqueta para colapsar el control si aplica\n                                                                    if ($registro_campos[\"etiqueta_colapsable\"]!=\"\") \n                                                                        echo \'<details><summary>\'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"etiqueta_colapsable\"]).\'</summary>\';\n                                                                    \n                                                                    // Formatea cada campo de acuerdo a su tipo\n                                                                    // CUIDADO!!! Modificando las lineas de tipo siguientes debe modificar las lineas de tipo un poco mas abajo tambien\n                                                                    $tipo_de_objeto=@$registro_campos[\"tipo\"];\n                                                                    switch ($tipo_de_objeto) {\n\n                                                                        case \'texto_corto\': $objeto_formateado = @PCO_CargarObjetoTextoCorto($registro_campos,@$registro_datos_formulario,$formulario,$en_ventana); break;\n                                                                        case \'texto_clave\': $objeto_formateado = @PCO_CargarObjetoTextoCorto($registro_campos,@$registro_datos_formulario,$formulario,$en_ventana); break;\n                                                                        case \'texto_largo\': $objeto_formateado = @PCO_CargarObjetoTextoLargo($registro_campos,@$registro_datos_formulario); break;\n                                                                        case \'texto_formato\': { $objeto_formateado = @PCO_CargarObjetoTextoFormato($registro_campos,@$registro_datos_formulario,$existe_campo_textoformato); $existe_campo_textoformato=1; } break;\n                                                                        case \'area_responsive\': $objeto_formateado = @PCO_CargarObjetoAreaResponsive($registro_campos,@$registro_datos_formulario); break;\n                                                                        case \'lista_seleccion\': $objeto_formateado = @PCO_CargarObjetoListaSeleccion($registro_campos,@$registro_datos_formulario,$formulario,$en_ventana); break;\n                                                                        case \'lista_radio\': $objeto_formateado = @PCO_CargarObjetoListaRadio($registro_campos,@$registro_datos_formulario,$formulario,$en_ventana); break;\n                                                                        case \'casilla_check\': $objeto_formateado = @PCO_CargarObjetoCasillaCheck($registro_campos,@$registro_datos_formulario,$formulario,$en_ventana); break;\n                                                                        case \'etiqueta\': $objeto_formateado = @PCO_CargarObjetoEtiqueta($registro_campos,@$registro_datos_formulario); break;\n                                                                        case \'url_iframe\': $objeto_formateado = @PCO_CargarObjetoIFrame($registro_campos,@$registro_datos_formulario); break;\n                                                                        case \'informe\': $informe_formateado=@PCO_CargarInforme($registro_campos[\"informe_vinculado\"],$registro_campos[\"objeto_en_ventana\"],\"htm\",\"Informes\",1,$registro_campos[\"anular_acciones\"],$registro_campos[\"anular_piepagina\"],$registro_campos[\"anular_encabezado\"]); break;\n                                                                        case \'deslizador\': $objeto_formateado = @PCO_CargarObjetoDeslizador($registro_campos,@$registro_datos_formulario); break;\n                                                                        case \'campo_etiqueta\': $objeto_formateado = @PCO_CargarObjetoCampoEtiqueta($registro_campos,@$registro_datos_formulario); break;\n                                                                        case \'archivo_adjunto\': $objeto_formateado = @PCO_CargarObjetoArchivoAdjunto($registro_campos,@$registro_datos_formulario); break;\n                                                                        case \'objeto_canvas\': $objeto_formateado = @PCO_CargarObjetoCanvas($registro_campos,@$registro_datos_formulario,$formulario); break;\n                                                                        case \'objeto_camara\': $objeto_formateado = @PCO_CargarObjetoCamara($registro_campos,@$registro_datos_formulario,$formulario); break;\n                                                                        case \'boton_comando\': $objeto_formateado = @PCO_CargarObjetoBotonComando($registro_campos,@$registro_datos_formulario,@$registro_formulario);\n                                                                    }\n\n                                                                    //Carga SubFormulario solo si no es el mismo actual para evitar ciclos infinitos\n\n                                                                    //Ademas si es subformulario debe consultar en ese registro de ID buscado del form\n                                                                    //padre el valor del campo foraneo del form hijo para llamar a buscar form con\n                                                                    //el valor de Id correspondiente. Ademas valida si el form existe\n                                                                    if ($tipo_de_objeto==\"form_consulta\" && $registro_campos[\"formulario_vinculado\"]!=$formulario && PCO_ExisteValor($TablasCore.\"formulario\",\"id\",$registro_campos[\"formulario_vinculado\"]))\n                                                                        {\n                                                                            //Busca la tabla principal del subformulario anidado\n                                                                            $PCO_ValorCampoBind=$registro_campos[\"formulario_vinculado\"];\n                                                                            if($PCO_ValorCampoBind==\"\") $PCO_ValorCampoBind=\"\";\n                                                                            $consulta_tabla_subform=PCO_EjecutarSQL(\"SELECT tabla_datos FROM \".$TablasCore.\"formulario WHERE id=? \",\"$PCO_ValorCampoBind\")->fetch();\n                                                                            $PCO_TablaSubform=$consulta_tabla_subform[\"tabla_datos\"];\n\n                                                                            //Determina el valor del campo a vincular en el registro padre (el actual).  Deberia dar el id que se va a buscar\n                                                                            $PCO_ValorCampoPadre=@$registro_datos_formulario[$registro_campos[\"formulario_campo_vinculo\"]];\n                                                                            //Si no se encuentra el dato o registro entonces mira si vienen desde un boton de busqueda y usa su valor\n                                                                            if($PCO_ValorCampoPadre==\"\" && $PCO_ValorBusquedaBD!=\"\")\n                                                                                {\n                                                                                    //$PCO_ValorCampoPadre=$PCO_ValorBusquedaBD;\n                                                                                }\n                                                                            //Si no obtiene ningun valor entonces lo pone en cero para evitar error de sintaxis en Bind de SQL\n                                                                            if($PCO_ValorCampoPadre==\"\") $PCO_ValorCampoPadre=0;\n                                                                            $PCO_CampoForaneoSubform=$registro_campos[\"formulario_campo_foraneo\"];\n                                                                            //Busca el ID de registro correspondiente en la tabla de datos para llamar con el valor coincidente\n                                                                            $consulta_registro_subform=PCO_EjecutarSQL(\"SELECT $PCO_CampoForaneoSubform FROM $PCO_TablaSubform WHERE $PCO_CampoForaneoSubform=? \",\"$PCO_ValorCampoPadre\")->fetch();\n\n                                                                            $formulario_formateado=@PCO_CargarFormulario($registro_campos[\"formulario_vinculado\"],$registro_campos[\"objeto_en_ventana\"],$registro_campos[\"formulario_campo_foraneo\"],$PCO_ValorCampoPadre,1,0,\"Sub\");\n                                                                        }\n                                                                    else\n																		{\n																			//Presenta mensaje de error al no poder empotrar subformulario\n																			if($tipo_de_objeto==\"form_consulta\")\n																				PCO_Mensaje($MULTILANG_ErrorTiempoEjecucion,$MULTILANG_ObjetoNoExiste.\'.  FormID: \'.$registro_campos[\"formulario_vinculado\"], \'\', \'fa fa-times fa-5x icon-red texto-blink\', \'alert alert-danger alert-dismissible\');\n																		}\n\n                                                                    //Imprime el objeto siempre y cuando no sea uno preformateado por practico (informes, formularios, etc)\n                                                                    if ($registro_campos[\"tipo\"]!=\"informe\" && $registro_campos[\"tipo\"]!=\"form_consulta\")\n                                                                        echo $objeto_formateado;\n\n                                                                    //Cierra la etiqueta colapsable en caso de haber abierto una\n                                                                    if ($registro_campos[\"etiqueta_colapsable\"]!=\"\") \n                                                                        echo \'</details>\';\n                                                                        \n                                                                    echo \'<div id=\"PCOPos_\'.$registro_campos[\"id_html\"].\'\"></div>\';\n                                                                    echo \'</div>\'; //Marco PCOContenedor\n                                                                }\n\n                                                            //Cierra el marco para el estilo inline del objeto\n                                                            echo \'</div>\';\n                                                        }\n\n                                                    //Define tipo_maquetacion\n                                                    if($registro_formulario[\"tipo_maquetacion\"]==\"responsive\")\n                                                        {\n                                                            echo \'</div>\'; //Fin class=col\n                                                        }\n                                                    //Define tipo_maquetacion\n                                                    if($registro_formulario[\"tipo_maquetacion\"]==\"tradicional\")\n                                                        {\n                                                            echo \'</td>\'; //Fin columna de formulario\n                                                        }\n                                            }\n\n                                        //Define tipo_maquetacion\n                                        if($registro_formulario[\"tipo_maquetacion\"]==\"responsive\")\n                                            {\n                                                echo \'</div>\'; //Fin class=row\n                                            }\n                                        //Define tipo_maquetacion\n                                        if($registro_formulario[\"tipo_maquetacion\"]==\"tradicional\")\n                                            {\n                                                // Finaliza la tabla con los campos\n                                                echo \'</tr></table>\n                                                    </div>\';\n                                            }\n\n                                        //Busca datos del registro de fila_unica\n                                        $consulta_campos=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_formulario_objeto.\" FROM \".$TablasCore.\"formulario_objeto WHERE formulario=? AND id=? \",\"$formulario$_SeparadorCampos_$ultimo_id\");\n                                        $registro_campos = $consulta_campos->fetch();\n\n                                        //Agrega el campo de fila unica cuando no se trata del agregado de peso 9999\n                                        if ($registro_campos[\"visible\"]==\"1\")\n                                            {\n                                                //echo \'&nbsp;&nbsp;\'.$registro_campos[\"titulo\"];\n                                                // Formatea cada campo de acuerdo a su tipo\n                                                // CUIDADO!!! Modificando las lineas de tipo siguientes debe modificar las lineas de tipo un poco mas arriba tambien\n                                                //Si esta en modo de diseno el formulario agrega elementos extra para la edicion de cada control\n                                                $ComplementoDisenoElemento=\'\';\n                                                $ComplementoDisenoMarcoOpciones=\'\';\n                                                if ($modo_diseno_formulario)\n                                                    {\n                                                        $ComplementoDisenoElemento=PCO_AgregarFuncionesEdicionObjeto($registro_campos,$registro_formulario,\"ComplementoDisenoElemento\");\n                                                        $ComplementoDisenoMarcoOpciones=PCO_AgregarFuncionesEdicionObjeto($registro_campos,$registro_formulario,\"ComplementoDisenoMarcoOpciones\");\n                                                    }\n\n                                                //Define el estilo del contenedor para el objeto\n                                                $ClaseCSSContenedor=\"\";\n                                                if ($registro_campos[\"clase_contenedor\"]!=\"\") $ClaseCSSContenedor=$registro_campos[\"clase_contenedor\"];\n\n                                                echo \'<div \'.$ComplementoDisenoElemento.\' id=\"PCOContenedor_\'.$registro_campos[\"id_html\"].\'\" class=\"\'.$ClaseCSSContenedor.\'\" style=\"margin-top:0px; margin-bottom:0px; margin-left:0; margin-right:0;  padding: 0px; spacing: 0px;\">\'.$ComplementoDisenoMarcoOpciones.\'\';\n                                                echo \'<div id=\"PCOPre_\'.$registro_campos[\"id_html\"].\'\"></div>\';\n\n                                                //Agrega etiqueta para colapsar el control si aplica\n                                                if ($registro_campos[\"etiqueta_colapsable\"]!=\"\") \n                                                    echo \'<details><summary>\'.PCO_ReemplazarVariablesPHPEnCadena($registro_campos[\"etiqueta_colapsable\"]).\'</summary>\';\n                                                    \n                                                //Define tipo_maquetacion\n                                                if($registro_formulario[\"tipo_maquetacion\"]==\"responsive\")\n                                                    {\n                                                        echo \'<div class=\"row\"><div class=\"col col-xs-12 col-sm-12 col-md-12 col-lg-12\">\';\n                                                    }\n                                                //Define tipo_maquetacion\n                                                if($registro_formulario[\"tipo_maquetacion\"]==\"tradicional\")\n                                                    {\n                                                        echo \'<table class=\"table table-condensed btn-xs \'.$estilo_bordes.\' d-flex\" style=\"\'.$ancho_bordes.\' margin-top:0; margin-bottom:0; margin-left:0; margin-right:0;  padding: 0px; border-spacing: 0px; width:100%; \"><tr><td>\';\n                                                    }\n\n\n                                                $tipo_de_objeto=@$registro_campos[\"tipo\"];\n                                                switch ($tipo_de_objeto) {\n\n                                                    case \'texto_corto\': $objeto_formateado = PCO_CargarObjetoTextoCorto($registro_campos,@$registro_datos_formulario,$formulario,$en_ventana); break;\n                                                    case \'texto_clave\': $objeto_formateado = PCO_CargarObjetoTextoCorto($registro_campos,@$registro_datos_formulario,$formulario,$en_ventana); break;\n                                                    case \'texto_largo\': $objeto_formateado = PCO_CargarObjetoTextoLargo($registro_campos,@$registro_datos_formulario); break;\n                                                    case \'texto_formato\': { $objeto_formateado = PCO_CargarObjetoTextoFormato($registro_campos,@$registro_datos_formulario,$existe_campo_textoformato); $existe_campo_textoformato=1; } break;\n                                                    case \'area_responsive\': $objeto_formateado = @PCO_CargarObjetoAreaResponsive($registro_campos,@$registro_datos_formulario); break;\n                                                    case \'lista_seleccion\': $objeto_formateado = PCO_CargarObjetoListaSeleccion($registro_campos,@$registro_datos_formulario,$formulario,$en_ventana); break;\n                                                    case \'lista_radio\': $objeto_formateado = PCO_CargarObjetoListaRadio($registro_campos,@$registro_datos_formulario,$formulario,$en_ventana); break;\n                                                    case \'casilla_check\': $objeto_formateado = @PCO_CargarObjetoCasillaCheck($registro_campos,@$registro_datos_formulario,$formulario,$en_ventana); break;\n                                                    case \'etiqueta\': $objeto_formateado = PCO_CargarObjetoEtiqueta($registro_campos,@$registro_datos_formulario); break;\n                                                    case \'url_iframe\': $objeto_formateado = PCO_CargarObjetoIFrame($registro_campos,@$registro_datos_formulario); break;\n                                                    case \'informe\': $informe_formateado=@PCO_CargarInforme($registro_campos[\"informe_vinculado\"],$registro_campos[\"objeto_en_ventana\"],\"htm\",\"Informes\",1,$registro_campos[\"anular_acciones\"],$registro_campos[\"anular_piepagina\"],$registro_campos[\"anular_encabezado\"]); break;\n                                                    case \'deslizador\': $objeto_formateado = @PCO_CargarObjetoDeslizador($registro_campos,@$registro_datos_formulario); break;\n                                                    case \'campo_etiqueta\': $objeto_formateado = @PCO_CargarObjetoCampoEtiqueta($registro_campos,@$registro_datos_formulario); break;\n                                                    case \'archivo_adjunto\': $objeto_formateado = @PCO_CargarObjetoArchivoAdjunto($registro_campos,@$registro_datos_formulario); break;\n                                                    case \'objeto_canvas\': $objeto_formateado = @PCO_CargarObjetoCanvas($registro_campos,@$registro_datos_formulario,$formulario); break;\n                                                    case \'objeto_camara\': $objeto_formateado = @PCO_CargarObjetoCamara($registro_campos,@$registro_datos_formulario,$formulario); break;\n                                                    case \'boton_comando\': $objeto_formateado = @PCO_CargarObjetoBotonComando($registro_campos,@$registro_datos_formulario,@$registro_formulario);\n                                                }\n\n                                                //Carga SubFormulario solo si no es el mismo actual para evitar ciclos infinitos\n                                                //Ademas si es subformulario debe consultar en ese registro de ID buscado del form\n                                                //padre el valor del campo foraneo del form hijo para llamar a buscar form con\n                                                //el valor de Id correspondiente. Ademas valida si el form existe\n                                                if ($tipo_de_objeto==\"form_consulta\" && $registro_campos[\"formulario_vinculado\"]!=$formulario && PCO_ExisteValor($TablasCore.\"formulario\",\"id\",$registro_campos[\"formulario_vinculado\"]))\n                                                    {\n                                                        //Busca la tabla principal del subformulario anidado\n                                                        $PCO_ValorCampoBind=$registro_campos[\"formulario_vinculado\"];\n                                                        if($PCO_ValorCampoBind==\"\") $PCO_ValorCampoBind=\"\";\n                                                        $consulta_tabla_subform=PCO_EjecutarSQL(\"SELECT tabla_datos FROM \".$TablasCore.\"formulario WHERE id=? \",\"$PCO_ValorCampoBind\")->fetch();\n                                                        $PCO_TablaSubform=$consulta_tabla_subform[\"tabla_datos\"];\n\n                                                        //Determina el valor del campo a vincular en el registro padre (el actual).  Deberia dar el id que se va a buscar\n                                                        $PCO_ValorCampoPadre=@$registro_datos_formulario[$registro_campos[\"formulario_campo_vinculo\"]];\n                                                        //Si no se encuentra el dato o registro entonces mira si vienen desde un boton de busqueda y usa su valor\n                                                        if($PCO_ValorCampoPadre==\"\" && $PCO_ValorBusquedaBD!=\"\")\n                                                            {\n                                                                //$PCO_ValorCampoPadre=$PCO_ValorBusquedaBD;\n                                                            }\n                                                        //Si no obtiene ningun valor entonces lo pone en cero para evitar error de sintaxis en Bind de SQL\n                                                        if($PCO_ValorCampoPadre==\"\") $PCO_ValorCampoPadre=0;\n                                                        $PCO_CampoForaneoSubform=$registro_campos[\"formulario_campo_foraneo\"];\n                                                        //Busca el ID de registro correspondiente en la tabla de datos para llamar con el valor coincidente\n                                                        $consulta_registro_subform=PCO_EjecutarSQL(\"SELECT $PCO_CampoForaneoSubform FROM $PCO_TablaSubform WHERE $PCO_CampoForaneoSubform=? \",\"$PCO_ValorCampoPadre\")->fetch();\n\n                                                        $formulario_formateado=@PCO_CargarFormulario($registro_campos[\"formulario_vinculado\"],$registro_campos[\"objeto_en_ventana\"],$registro_campos[\"formulario_campo_foraneo\"],$PCO_ValorCampoPadre,1,0,\"Sub\");\n                                                    }\n												else\n													{\n														//Presenta mensaje de error al no poder empotrar subformulario\n														if($tipo_de_objeto==\"form_consulta\")\n															PCO_Mensaje($MULTILANG_ErrorTiempoEjecucion,$MULTILANG_ObjetoNoExiste.\'.  FormID: \'.$registro_campos[\"formulario_vinculado\"], \'\', \'fa fa-times fa-5x icon-red texto-blink\', \'alert alert-danger alert-dismissible\');\n													}\n\n                                                //Imprime el objeto siempre y cuando no sea uno preformateado por practico (informes, formularios, etc)\n                                                if ($registro_campos[\"tipo\"]!=\"informe\" && $registro_campos[\"tipo\"]!=\"form_consulta\")\n                                                    echo $objeto_formateado;\n\n                                                //Define tipo_maquetacion\n                                                if($registro_formulario[\"tipo_maquetacion\"]==\"responsive\")\n                                                    {\n                                                        echo \'</div></div>\'; //Fin class=row y class=col\n                                                    }\n                                                //Define tipo_maquetacion\n                                                if($registro_formulario[\"tipo_maquetacion\"]==\"tradicional\")\n                                                    {\n                                                        echo \'</td></tr></table>\';\n                                                    }\n\n                                                //Cierra la etiqueta colapsable en caso de haber abierto una\n                                                if ($registro_campos[\"etiqueta_colapsable\"]!=\"\") \n                                                    echo \'</details>\';\n\n                                                echo \'<div id=\"PCOPos_\'.$registro_campos[\"id_html\"].\'\"></div>\';\n                                                echo \'</div>\'; //Marco PCOContenedor\n                                            }\n\n                                        //Actualiza limite inferior para siguiente lista de campos\n                                        $limite_inferior=$registro_obj_fila_unica[\"PCOBD_Peso\"];\n                                        $TabIndex_Elemento++;\n                                    }\n\n                        if ($conteo_pestanas>1  || $conteo_pestanas_ocultas==1)\n                        echo \'\n                            </div>\n                        <!-- FIN de las pestanas No \'.$pestana_activa.\'-->\';\n\n                        //Limpia para las siguientes pestanas\n                        $estado_activa_primera_pestana=\'\';\n                        $pestana_activa++;\n                    }\n                //Fin de los tab-content\n                echo \'</div>\';\n            } //Fin Si conteo pestanas > 0\n\n		echo \'</div> <!-- cierra PCO_MarcoImpresion\'.$formulario.\' -->\';\n\n	//Busca los campos definidos como visilbe=0 (o NO) para agregarlos como hidden\n	$consulta_ocultos=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_formulario_objeto.\" FROM \".$TablasCore.\"formulario_objeto WHERE formulario=? AND visible=0 \",\"$formulario\");\n	while ($registro_ocultos = $consulta_ocultos->fetch())\n		{\n			// Formatea cada campo de acuerdo a su tipo\n			$objeto_formateado = @PCO_CargarObjetoOculto($registro_ocultos,$registro_datos_formulario,$formulario,$en_ventana);\n			//Imprime el objeto siempre y cuando no sea uno preformateado por practico (informes, formularios, etc)\n			if ($registro_campos[\"tipo\"]!=\"informe\" && $registro_campos[\"tipo\"]!=\"form_consulta\" && $registro_campos[\"tipo\"]!=\"boton_comando\")\n				echo $objeto_formateado;\n		}\n\n	// Si tiene botones agrega barra de estado y los ubica\n	$consulta_botones = PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_formulario_boton.\" FROM \".$TablasCore.\"formulario_boton WHERE formulario=? AND visible=1 ORDER BY peso\",\"$formulario\");\n\n	if($consulta_botones->rowCount()>0 || $PCO_InformeFiltro!=\"\") //Crea la barra incluso si no hay botones en diseno pero se encuentra que el llamado es desde un informe que requiere filtro\n		{\n			PCO_AbrirBarraEstado();\n            echo \'<div align=\"center\">\';\n			while ($registro_botones = $consulta_botones->fetch())\n				{\n					//Transfiere variables de mensajes de retorno asociadas al boton\n					$comando_javascript=\"\";\n					if ($registro_botones[\"retorno_titulo\"]!=\"\")\n						$comando_javascript=\"document.\".$registro_formulario[\"id_html\"].\".PCO_ErrorTitulo.value=\'\".$registro_botones[\"retorno_titulo\"].\"\'; document.\".$registro_formulario[\"id_html\"].\".PCO_ErrorDescripcion.value=\'\".$registro_botones[\"retorno_texto\"].\"\'; document.\".$registro_formulario[\"id_html\"].\".PCO_ErrorIcono.value=\'\".$registro_botones[\"retorno_icono\"].\"\'; document.\".$registro_formulario[\"id_html\"].\".PCO_ErrorEstilo.value=\'\".$registro_botones[\"retorno_estilo\"].\"\';\";\n\n					//Define el tipo de boton de acuerdo al tipo de accion\n          switch ($registro_botones[\"tipo_accion\"]) {\n\n                case \'interna_guardar\':    $comando_javascript.=\"PCOJS_ValidarCamposYProcesarFormulario(\'\".$registro_formulario[\"id_html\"].\"\');\";     break;\n                case \'interna_limpiar\':    $comando_javascript.=\"document.getElementById(\'\".$registro_formulario[\"id_html\"].\"\').reset();\"; break;\n                case \'interna_escritorio\': $comando_javascript.=\"document.PCO_FormVerMenu.submit();\"; break;\n                case \'interna_actualizar\': $comando_javascript.=\"document.\".$registro_formulario[\"id_html\"].\".PCO_Accion.value=\'PCO_ActualizarDatosFormulario\'; PCOJS_ValidarCamposYProcesarFormulario(\'\".$registro_formulario[\"id_html\"].\"\');\"; break;\n                case \'externa_postcode\':   $comando_javascript.=\"document.\".$registro_formulario[\"id_html\"].\".PCO_Accion.value=\'PCO_EjecutarPostAccionForm\'; PCOJS_ValidarCamposYProcesarFormulario(\'\".$registro_formulario[\"id_html\"].\"\'); \"; break;\n                case \'interna_eliminar\':   $comando_javascript.=\"document.\".$registro_formulario[\"id_html\"].\".PCO_Accion.value=\'PCO_EliminarDatosFormulario\';document.\".$registro_formulario[\"id_html\"].\".submit();\"; break;\n                case \'interna_cargar\':     $comando_javascript.=\"document.\".$registro_formulario[\"id_html\"].\".PCO_Accion.value=\'PCO_CargarObjeto\';document.\".$registro_formulario[\"id_html\"].\".PCO_Objeto.value=\'\".$registro_botones[\"accion_usuario\"].\"\'; PCOJS_SanitizarValoresListaMultiple(); document.\".$registro_formulario[\"id_html\"].\".submit(); \"; break;\n                case \'externa_formulario\': $comando_javascript.=\"document.\".$registro_formulario[\"id_html\"].\".PCO_Accion.value=\'\".$registro_botones[\"accion_usuario\"].\"\';  PCOJS_SanitizarValoresListaMultiple(); document.\".$registro_formulario[\"id_html\"].\".submit(); \"; break;\n                case \'externa_javascript\': $comando_javascript.=$registro_botones[\"accion_usuario\"];\n          }\n\n\n                    //Verifica si el registro de botones presenta algun texto de confirmacion y lo antepone al script\n                    $cadena_confirmacion_accion_pre=\"\";\n                    $cadena_confirmacion_accion_pos=\"\";\n					if ($registro_botones[\"confirmacion_texto\"]!=\"\")\n						{\n							$cadena_confirmacion_accion_pre=\" if (confirm(\'\".PCO_ReemplazarVariablesPHPEnCadena($registro_botones[\"confirmacion_texto\"]).\"\')) {\";\n							$cadena_confirmacion_accion_pos=\" } else {} \";\n						}\n\n                    //Genera la cadena del enlace\n                    $cadena_javascript=\'href=\"javascript:  \'.$cadena_confirmacion_accion_pre.\'  \'.@$comando_javascript.\'  \'.$cadena_confirmacion_accion_pos.\'  \"\';\n\n					//Si no se especifica un estilo para el boton entonces se usa el predeterminado\n                    $estilo_basico_boton=\"btn btn-default\";\n                    //Si el boton tiene definido un ID lo agrega\n                    $CadenaIDHtml=\'\';\n                    if ($registro_botones[\"id_html\"]!=\"\") $CadenaIDHtml=\' id=\"\'.$registro_botones[\"id_html\"].\'\" \';\n                    echo \'<a \'.$CadenaIDHtml.\' class=\"\'.$estilo_basico_boton.\' \'.$registro_botones[\"estilo\"].\'\" \'.@$cadena_javascript.\'>\'.PCO_ReemplazarVariablesPHPEnCadena($registro_botones[\"titulo\"]).\'</a>\';\n\n                    echo \'&nbsp;&nbsp;\'; //Agrega espacio temporal entre controles\n				}\n\n			if ($PCO_InformeFiltro!=\"\")\n				{\n					//Si se encuentra que el form viene llamado desde un informe que lo requiere para filtro agrega un boton de retorno al informe automaticamente\n					$comando_javascript=\"document.\".$registro_formulario[\"id_html\"].\".PCO_Accion.value=\'PCO_CargarObjeto\';document.\".$registro_formulario[\"id_html\"].\".PCO_Objeto.value=\'inf:\".$PCO_InformeFiltro.\":1\';document.\".$registro_formulario[\"id_html\"].\".submit();\";\n					$cadena_javascript=\'href=\"javascript:\'.@$comando_javascript.\'\"\';\n					echo \'<a class=\"\'.$estilo_basico_boton.\' btn btn-warning\" \'.@$cadena_javascript.\'>\'.$MULTILANG_InfRetornoFormFiltrado.\'</a>\';\n				}\n\n            echo \'</div>\';\n			PCO_CerrarBarraEstado();\n		}\n\n\n	//Cierra todo el formulario\n	//Si se quiere anular el formulario y su accion cuando se trata de un sub-formulario de consulta\n	if (!$anular_form)\n		echo \'</form>\';\n\n	//Carga todos los eventos asociados a los controles de formulario\n	$eventos_controles_formulario=PCO_EjecutarSQL(\"SELECT \".$TablasCore.\"evento_objeto.*,\".$TablasCore.\"formulario_objeto.id_html FROM \".$TablasCore.\"evento_objeto,\".$TablasCore.\"formulario_objeto WHERE \".$TablasCore.\"evento_objeto.objeto=\".$TablasCore.\"formulario_objeto.id  AND \".$TablasCore.\"formulario_objeto.formulario=$formulario \");\n	while($registro_eventos_definidos = $eventos_controles_formulario->fetch())\n		{\n		    //Limpia el metodo, asume no conocerlo\n\n            switch ($registro_eventos_definidos[\"evento\"]) {\n              //1-Raton\n              case \'onclick\': $MetodoJQuery=\"click\"; break;\n              case \'ondblclick\': $MetodoJQuery=\"dblclick\"; break;\n              case \'onmousedown\': $MetodoJQuery=\"mousedown\"; break;\n              case \'onmouseenter\': $MetodoJQuery=\"mouseenter\"; break;\n              case \'onmouseleave\': $MetodoJQuery=\"mouseleave\"; break;\n              case \'onmousemove\': $MetodoJQuery=\"mousemove\"; break;\n              case \'onmouseover\': $MetodoJQuery=\"mouseover\"; break;\n              case \'onmouseout\': $MetodoJQuery=\"mouseout\"; break;\n              case \'onmouseup\': $MetodoJQuery=\"mouseup\"; break;\n              case \'contextmenu\': $MetodoJQuery=\"contextmenu\"; break;\n              //2-Teclado\n              case \'onkeydown\': $MetodoJQuery=\"keydown\"; break;\n              case \'onkeypress\': $MetodoJQuery=\"keypress\"; break;\n              case \'onkeyup\': $MetodoJQuery=\"keyup\"; break;\n              //3-Formularios\n              case \'onfocus\': $MetodoJQuery=\"focus\"; break;\n              case \'onblur\': $MetodoJQuery=\"blur\"; break;\n              case \'onchange\': $MetodoJQuery=\"change\"; break;\n              case \'onselect\': $MetodoJQuery=\"select\"; break;\n              case \'onsubmit\': $MetodoJQuery=\"submit\"; break;\n              case \'oncut\': $MetodoJQuery=\"reset\"; break;\n              case \'oncopy\': $MetodoJQuery=\"click\"; break;\n              case \'onpaste\': $MetodoJQuery=\"click\"; break;\n              default:\n                $MetodoJQuery=\"\";\n            }\n\n			//Imprime el script asociado al evento siempre y cuando la funcion sea reconocida\n			if ($MetodoJQuery!=\"\")\n			    {\n					$PCO_FuncionesJSInternasFORM .= \'\n					    <script language=\\\'JavaScript\\\'>\n                            $( \"#\'.$registro_eventos_definidos[\"id_html\"].\'\" ).on(\"\'.$MetodoJQuery.\'\",function(PCOJS_Evento) {\n                              \'.PCO_ReemplazarVariablesPHPEnCadena($registro_eventos_definidos[\"javascript\"]).\'\n                            });\n					    </script>\';\n			    }\n		}\n\n        //Carga las funciones JavaScript asociadas al formulario y llama la funcion FrmAutoRun()\n        $JavaScriptFormulario=PCO_ReemplazarVariablesPHPEnCadena($registro_formulario[\"javascript\"]);\n\n        //Minimiza el codigo JavaScript del formulario\n        //$JavaScriptFormulario=PCO_Minimizador_OptimizarJS($JavaScriptFormulario);\n\n        //Reemplaza la funcion de FrmAutoRun() del formulario por FrmAutoRun_IDFormulario() para garantizar que es unica\n        $NumeroIdFormulario=$registro_formulario[\"id\"];\n        if ($NumeroIdFormulario<0) $NumeroIdFormulario=\"LTZ\".($NumeroIdFormulario*-1);\n        $JavaScriptFormulario=str_replace(\"FrmAutoRun()\",\"FrmAutoRun_IDForm\".$NumeroIdFormulario.\"()\",$JavaScriptFormulario);\n        	$PCO_FuncionesJSInternasFORM .= \'<script type=\"text/javascript\">\'.$JavaScriptFormulario.\'\n        		if (typeof FrmAutoRun_IDForm\'.$NumeroIdFormulario.\' === \"function\") { FrmAutoRun_IDForm\'.$NumeroIdFormulario.\'(); }\n        		</script>\';\n\n        //Busca la lista de campos marcados como obligatorios sobre el form\n        $consulta_campos_obligatorios=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_formulario_objeto.\" FROM \".$TablasCore.\"formulario_objeto WHERE formulario=? AND obligatorio=1\",\"$formulario\");\n        $ListaCamposObligatorios=\"\";\n        $ListaTitulosObligatorios=\"\";\n        while ($registro_campos_obligatorios=$consulta_campos_obligatorios->fetch())\n            {\n                $ListaCamposObligatorios.=\"|\".$registro_campos_obligatorios[\"id_html\"];\n                $ListaTitulosObligatorios.=\"|\".$registro_campos_obligatorios[\"titulo\"];\n            }\n        $POSTForm_ListaCamposObligatorios.=$ListaCamposObligatorios;\n        $POSTForm_ListaTitulosObligatorios.=$ListaTitulosObligatorios;\n\n        if ($en_ventana) PCO_CerrarVentana();\n  }\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_GenerarBotonesInforme\n	Genera el codigo HTML correspondiente a los botones definidos para cada registro de un informe indicado por su ID\n\n	Variables de entrada:\n\n		informe - ID unico del informe del cual se desea construir el query\n\n	Salida:\n\n		HTML con los botones\n\n	Ver tambien:\n		<PCO_CargarInforme>\n*/\nfunction PCO_GenerarBotonesInforme($informe,$Ubicacion=0)\n	{\n		global $ConexionPDO,$ArchivoCORE,$TablasCore,$PCO_ValorBusquedaBD,$PCO_CampoBusquedaBD;\n		// Carga variables de sesion por si son comparadas en alguna condicion.  De todas formas pueden ser cargadas por el usuario en el diseno del informe\n		global $ListaCamposSinID_informe,$ListaCamposSinID_informe_campos,$ListaCamposSinID_informe_tablas,$ListaCamposSinID_informe_condiciones,$ListaCamposSinID_informe_boton;\n\n		$ComplementoUbicacion=\' AND ubicar_principio=0 \';\n		if ($Ubicacion==1)\n		    $ComplementoUbicacion=\' AND ubicar_principio=1 \';\n\n		//Inicializa la cadena de botones vacia\n		$cadena_generica_botones=\'\';\n\n		// Busca si el informe tiene acciones (botones), los cuenta y prepara dentro de un arreglo para repetir en cada registro\n		$consulta_botones=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe_boton.\" FROM \".$TablasCore.\"informe_boton WHERE informe=? AND visible=1 $ComplementoUbicacion ORDER BY peso\",\"$informe\");\n		while($registro_botones=$consulta_botones->fetch())\n			{\n				$destino_formulario=$registro_botones[\"destino\"];\n				$pantalla_completa_formulario=$registro_botones[\"pantalla_completa\"];\n				$precargar_estilos_formulario=$registro_botones[\"precargar_estilos\"];\n				//Construye una cadena generica con todos los botones para ser reemplazada luego con valores\n				if ($registro_botones[\"tipo_accion\"]==\"interna_eliminar\")\n					{\n						$valores = explode(\".\",$registro_botones[\"accion_usuario\"]);\n						$tabla_vinculada=@$valores[0];\n						$campo_vinculado=@$valores[1];\n\n						//Si solo se indico el campo, sin la tabla, intenta usar solo el campo\n						if ($campo_vinculado==\"\" && $tabla_vinculada!=\"\")\n							{\n								$campo_vinculado=$valores[0];\n								$tabla_vinculada=\"\";\n							}\n\n						$comando_javascript=\"\n							document.FRMBASEINFORME.PCO_Accion.value=\'PCO_EliminarRegistroInforme\';\n							document.FRMBASEINFORME.tabla.value=\'\".@$tabla_vinculada.\"\';\n							document.FRMBASEINFORME.campo.value=\'\".@$campo_vinculado.\"\';\n							document.FRMBASEINFORME.valor.value=\'DELFRMVALVALOR\';\n							document.FRMBASEINFORME.Precarga_EstilosBS.value=\'\".@$precargar_estilos_formulario.\"\';\n							document.FRMBASEINFORME.Presentar_FullScreen.value=\'\".@$pantalla_completa_formulario.\"\';\n							document.FRMBASEINFORME.target = \'\".@$destino_formulario.\"\';\n							document.FRMBASEINFORME.submit();\";\n					}\n				if ($registro_botones[\"tipo_accion\"]==\"interna_cargar\")\n					{\n						$comando_javascript=\"\n							document.FRMBASEINFORME.PCO_Accion.value=\'PCO_CargarObjeto\';\n							document.FRMBASEINFORME.PCO_Objeto.value=\'frm:\".$registro_botones[\"accion_usuario\"].\":DETFRMVALBASE\';\n							document.FRMBASEINFORME.Precarga_EstilosBS.value=\'\".@$precargar_estilos_formulario.\"\';\n							document.FRMBASEINFORME.Presentar_FullScreen.value=\'\".@$pantalla_completa_formulario.\"\';\n							document.FRMBASEINFORME.target = \'\".@$destino_formulario.\"\';\n							document.FRMBASEINFORME.submit();\";\n					}\n				if ($registro_botones[\"tipo_accion\"]==\"interna_cargar_informe\")\n					{\n						$comando_javascript=\"\n							document.FRMBASEINFORME.PCO_Accion.value=\'PCO_CargarObjeto\';\n							document.FRMBASEINFORME.PCO_Objeto.value=\'inf:\".$registro_botones[\"accion_usuario\"].\":DETFRMVALBASE\';\n							document.FRMBASEINFORME.Precarga_EstilosBS.value=\'\".@$precargar_estilos_formulario.\"\';\n							document.FRMBASEINFORME.Presentar_FullScreen.value=\'\".@$pantalla_completa_formulario.\"\';\n							document.FRMBASEINFORME.target = \'\".@$destino_formulario.\"\';\n							document.FRMBASEINFORME.submit();\";\n					}\n				if ($registro_botones[\"tipo_accion\"]==\"externa_formulario\")\n					{\n						$comando_javascript=\"\n							document.FRMBASEINFORME.PCO_Tabla.value=\'\".@$tabla_vinculada.\"\';\n							document.FRMBASEINFORME.PCO_Campo.value=\'\".@$campo_vinculado.\"\';\n							document.FRMBASEINFORME.PCO_Valor.value=\'DELFRMVALVALOR\';\n							document.FRMBASEINFORME.PCO_Accion.value=\'\".$registro_botones[\"accion_usuario\"].\"\';\n							document.FRMBASEINFORME.Precarga_EstilosBS.value=\'\".@$precargar_estilos_formulario.\"\';\n							document.FRMBASEINFORME.Presentar_FullScreen.value=\'\".@$pantalla_completa_formulario.\"\';\n							document.FRMBASEINFORME.target = \'\".@$destino_formulario.\"\';\n							document.FRMBASEINFORME.submit();\";\n					}\n				if ($registro_botones[\"tipo_accion\"]==\"externa_javascript\")\n					{\n						$comando_javascript=\"\n							document.FRMBASEINFORME.PCO_Valor.value=\'DELFRMVALVALOR\';  \";\n						$comando_javascript.=$registro_botones[\"accion_usuario\"];\n					}\n\n				//Verifica si el registro de botones presenta algun texto de confirmacion y lo antepone al script\n				$cadena_confirmacion_accion_pre=\"\";\n				$cadena_confirmacion_accion_pos=\"\";\n				if ($registro_botones[\"confirmacion_texto\"]!=\"\")\n					{\n						$cadena_confirmacion_accion_pre=\" if (confirm(\'\".PCO_ReemplazarVariablesPHPEnCadena($registro_botones[\"confirmacion_texto\"]).\"\')) {\";\n						$cadena_confirmacion_accion_pos=\" } else {} \";\n					}\n\n				//Genera la cadena del enlace\n				$cadena_javascript=\'onclick=\"\'.$cadena_confirmacion_accion_pre.\'  \'.@$comando_javascript.\'  \'.$cadena_confirmacion_accion_pos.\' \"\';\n				//Determina si el boton llevara texto o si el texto se usa como ayuda.  Por defecto siempre se agrega el texto por defecto.\n				$Cadena_Imagen=\"\";\n				$Cadena_Ayuda=\"\";\n				$Cadena_BotonIzq=\"\";\n				$Cadena_BotonDer=\" \".$registro_botones[\"titulo\"];\n				//Determina si debe o no poner un elemento de imagen y si sera imagen con texto o sola\n				if ($registro_botones[\"imagen\"]!=\"\")\n					{\n						$Cadena_Imagen=\"<i class=\'fa \".$registro_botones[\"imagen\"].\"\'></i>\";\n						$Cadena_BotonIzq=\"\";\n						$Cadena_BotonDer=\"\";\n						$Cadena_Ayuda=\'data-toggle=\"tooltip\" data-html=\"true\" data-placement=\"auto\" title=\"\'.PCO_ReemplazarVariablesPHPEnCadena($registro_botones[\"titulo\"]).\'\"\';\n					    //Busca si dentro de la imagen se especifico la palabra clave _TEXTOIZQ_ o _TEXTODER_ para agregar ademas el texto\n					    if( strrpos ( $registro_botones[\"imagen\"], \"_TEXTOIZQ_\" )!==false || strrpos ( $registro_botones[\"imagen\"], \"_TEXTODER_\" )!==false )\n					        {\n						        $Cadena_Ayuda=\'\'; //En cualquier caso donde se pida imprimir texto se elimina el tooltip\n						        $Cadena_Imagen=\"<i class=\'fa \".$registro_botones[\"imagen\"].\"\'></i>\";\n					            //Si se detecta el texto a la izquierda ajusta las variables para tal impresion\n        					    if( strrpos ( $registro_botones[\"imagen\"], \"_TEXTOIZQ_\" )!==false)\n						            $Cadena_BotonIzq=$registro_botones[\"titulo\"].\" \";\n					            //Si se detecta el texto a la derecha ajusta las variables para tal impresion\n        					    if( strrpos ( $registro_botones[\"imagen\"], \"_TEXTODER_\" )!==false)\n						            $Cadena_BotonDer=\" \".$registro_botones[\"titulo\"];\n					        }\n					}\n                $Cadena_BotonIzq=PCO_ReemplazarVariablesPHPEnCadena($Cadena_BotonIzq);\n                $Cadena_BotonDer=PCO_ReemplazarVariablesPHPEnCadena($Cadena_BotonDer);\n				@$cadena_generica_botones.=\'<button type=\"button\" class=\"\'.$registro_botones[\"estilo\"].\'\" \'.$Cadena_Ayuda.\' \'.$cadena_javascript.\'>\'.$Cadena_BotonIzq.$Cadena_Imagen.$Cadena_BotonDer.\'</button>&nbsp;\';\n			}\n		return $cadena_generica_botones;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_DeterminarCamposOcultos\n	Devuelve la lista de campos establecidos como ocultos para un informe determinado\n\n	Variables de entrada:\n\n		informe - ID unico del informe del cual se desea conocer los campos ocultos\n\n	Salida:\n\n		Arreglo con la lista de campos ocultos\n\n	Ver tambien:\n		<PCO_CargarInforme>\n*/\nfunction PCO_DeterminarCamposOcultos($informe)\n	{\n		global $TablasCore;\n		// Carga variables de definicion de tablas\n		global $ListaCamposSinID_informe_campos;\n\n		//Busca los CAMPOS definidos para el informe\n		$consulta_campos=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe_campos.\" FROM \".$TablasCore.\"informe_campos WHERE informe=? ORDER BY peso\",\"$informe\");\n\n		$PCO_ColumnasOcultas=array();\n		while ($registro_campos = $consulta_campos->fetch())\n			{\n				//Si tiene alias definido lo agrega\n				$posfijo_campo=\"\";\n				if ($registro_campos[\"valor_alias\"]!=\"\") $posfijo_campo=\" as \".$registro_campos[\"valor_alias\"];\n				//Agrega al arreglo con los campos marcados como ocultos\n				if ($registro_campos[\"visible\"]==0)\n					{\n						$PCO_ColumnasOcultas[]=$registro_campos[\"valor_campo\"].$posfijo_campo;\n						//Lleva el campo oculto despues del punto\n						$PCO_PartesCampo=explode(\".\",$registro_campos[\"valor_campo\"].$posfijo_campo);\n						@$PCO_ColumnasOcultas[]=$PCO_PartesCampo[1];\n						//Lleva el campo oculto si es un alias\n						$PCO_PartesCampo=explode(\" as \",$registro_campos[\"valor_campo\"].$posfijo_campo);\n						$PCO_ColumnasOcultas[]=$PCO_PartesCampo[1];\n					}\n			}\n		return $PCO_ColumnasOcultas;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_ConstruirConsultaInforme\n	Genera el codigo SQL correspondiente a informe especifico por ID, es la consulta cruda de los datos para ser aplicada posteriormente a otra operacion\n\n	Variables de entrada:\n\n		informe - ID unico del informe del cual se desea construir el query\n		evitar_campos_ocultos - Determina si los campos ocultos son agregados o no dentro del query.  Util cuando no se desean dentro de informes exportados.\n\n	Salida:\n\n		SQL con el query requerido por el informe\n\n	Ver tambien:\n		<PCO_CargarInforme>\n*/\nfunction PCO_ConstruirConsultaInforme($informe,$evitar_campos_ocultos=0)\n	{\n		global $ConexionPDO,$ArchivoCORE,$TablasCore,$PCO_ValorBusquedaBD,$PCO_CampoBusquedaBD;\n		// Carga variables de sesion por si son comparadas en alguna condicion.  De todas formas pueden ser cargadas por el usuario en el diseno del informe\n		global $PCOSESS_LoginUsuario,$Nombre_usuario,$Descripcion_usuario,$Nivel_usuario,$Correo_usuario,$LlaveDePasoUsuario,$PCO_FechaOperacion;\n		// Carga variables de definicion de tablas\n		global $ListaCamposSinID_informe,$ListaCamposSinID_informe_campos,$ListaCamposSinID_informe_tablas,$ListaCamposSinID_informe_condiciones,$ListaCamposSinID_informe_boton;\n\n		//Si se desea evitar los campos ocultos entonces los busca\n		if ($evitar_campos_ocultos==1)\n			$PCO_ColumnasOcultas=PCO_DeterminarCamposOcultos($informe);\n\n			// Inicia CONSTRUCCION DE CONSULTA DINAMICA\n			$numero_columnas=0;\n			//Busca los CAMPOS definidos para el informe\n			$consulta=\"SELECT \";\n			$consulta_campos=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe_campos.\" FROM \".$TablasCore.\"informe_campos WHERE informe=? ORDER BY peso,id\",\"$informe\");\n\n			while ($registro_campos = $consulta_campos->fetch())\n				{\n					//Si tiene alias definido lo agrega\n					$posfijo_campo=\"\";\n					if ($registro_campos[\"valor_alias\"]!=\"\") $posfijo_campo=\" as \".$registro_campos[\"valor_alias\"];\n\n					$OrigenValorCampo=$registro_campos[\"valor_campo\"];\n					//Evalua casos donde se tienen variables PHP escapadas por llaves.  Ej  \"%{$Variable}%\" si fuera para una operacion cualquiera sobre el campo.\n                    $OrigenValorCampo=PCO_ReemplazarVariablesPHPEnCadena($OrigenValorCampo);\n					$nombre_campo=$OrigenValorCampo.$posfijo_campo;\n					\n					//Compatibilidad PHP 8+.  Si no recibe nada lo convierte a array para garantizar el tipo en in_array\n					if (gettype($PCO_ColumnasOcultas)!=\"array\")\n					    $PCO_ColumnasOcultas=array();\n\n					//Agrega el campo a la consulta si no se encuentra en el arreglo de ocultos o no se quieren evitar esos campos\n					if (@!in_array($nombre_campo,$PCO_ColumnasOcultas) || $evitar_campos_ocultos==0)\n						$consulta.=$nombre_campo.\",\";\n				}\n\n			// Elimina la ultima coma en el listado de campos\n			$consulta=substr($consulta, 0, strlen($consulta)-1);\n\n			//Busca las TABLAS definidas para el informe\n			$consulta.=\" FROM \";\n			$consulta_tablas=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe_tablas.\" FROM \".$TablasCore.\"informe_tablas WHERE informe=? \",\"$informe\");\n			while ($registro_tablas = $consulta_tablas->fetch())\n				{\n					//Si tiene alias definido lo agrega\n					$posfijo_tabla=\"\";\n					if ($registro_tablas[\"valor_alias\"]!=\"\") $posfijo_tabla=\" as \".PCO_ReemplazarVariablesPHPEnCadena($registro_tablas[\"valor_alias\"]);\n					//Agrega tabla a la consulta\n					$consulta.=PCO_ReemplazarVariablesPHPEnCadena($registro_tablas[\"valor_tabla\"]).$posfijo_tabla.\",\";\n				}\n			// Elimina la ultima coma en el listado de tablas\n			$consulta=substr($consulta, 0, strlen($consulta)-1);\n\n			// Busca las CONDICIONES para el informe\n			$consulta.=\" WHERE \";\n			$consulta_condiciones=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe_condiciones.\" FROM \".$TablasCore.\"informe_condiciones WHERE informe=? ORDER BY peso,id\",\"$informe\");\n			$hay_condiciones=0;\n			while ($registro_condiciones = $consulta_condiciones->fetch())\n				{\n					//Agrega condicion a la consulta\n					$valor_izquierdo=$registro_condiciones[\"valor_izq\"];\n					$valor_derecho=$registro_condiciones[\"valor_der\"];\n					//Evalua casos donde se tienen variables PHP escapadas por llaves.  Ej  \"%{$Variable}%\" si fuera para un LIKE, por ejemplo.\n                    $valor_izquierdo=PCO_ReemplazarVariablesPHPEnCadena($valor_izquierdo);\n                    $valor_derecho=PCO_ReemplazarVariablesPHPEnCadena($valor_derecho);\n\n					$consulta.=\" \".$valor_izquierdo.\" \".$registro_condiciones[\"operador\"].\" \".$valor_derecho.\" \";\n					$hay_condiciones=1;\n				}\n			if (!$hay_condiciones)\n			$consulta.=\" 1 \";\n\n			//Busca si debe ser ordenado o agrupado\n			$registro_informe=PCO_EjecutarSQL(\"SELECT agrupamiento,ordenamiento FROM \".$TablasCore.\"informe WHERE id=? \",\"$informe\")->fetch();\n			if (@$registro_informe[\"agrupamiento\"]!=\"\")\n				{\n					$campoagrupa=$registro_informe[\"agrupamiento\"];\n					$consulta.= \" GROUP BY $campoagrupa\";\n				}\n\n			if (@$registro_informe[\"ordenamiento\"]!=\"\")\n				{\n					$campoorden=$registro_informe[\"ordenamiento\"];\n					$consulta.= \" ORDER BY $campoorden\";\n				}\n\n		return $consulta;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_GenerarEtiquetasConsulta\n	Genera una lista separadas por coma con las etiqeutas asociadas a un query SQL\n\n	Variables de entrada:\n\n		ConsultaSQL - La consulta en SQL que generara las etiquetas\n		informe - Si se recibe un ID de informe lo usa para conoecr sus columnas ocultas\n\n	Salida:\n\n		* Variable de tipo arreglo con los Resultados para ColumnasVisibles, NumerosColumnasOcultas y NumeroColumnas\n\n	Ver tambien:\n		<PCO_CargarInforme>\n*/\nfunction PCO_GenerarEtiquetasConsulta($ConsultaSQL,$informe)\n	{\n		global $ConexionPDO,$ArchivoCORE,$TablasCore,$PCO_ValorBusquedaBD,$PCO_CampoBusquedaBD;\n		// Carga variables de sesion por si son comparadas en alguna condicion.  De todas formas pueden ser cargadas por el usuario en el diseno del informe\n		global $ListaCamposSinID_informe,$ListaCamposSinID_informe_campos,$ListaCamposSinID_informe_tablas,$ListaCamposSinID_informe_condiciones,$ListaCamposSinID_informe_boton;\n\n        $PCO_ColumnasVisibles=array();\n        $PCO_NumerosColumnasOcultas=array();\n\n		// Busca datos del informe\n        if ($informe!=\"\")\n        	$registro_informe=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe.\" FROM \".$TablasCore.\"informe WHERE id=? \",\"$informe\")->fetch();\n\n        //Si encuentra que el informe usa conexion alterna accesa la variable de conexion como global\n        if($registro_informe[\"conexion_origen_datos\"]!=\"\")\n    		global ${$registro_informe[\"conexion_origen_datos\"]};\n\n		//Averigua cuales columnas estan definidas como ocultas\n		if ($informe!=\"\")\n			$ColumnasOcultas=PCO_DeterminarCamposOcultos($informe);\n\n		//Si se recibe un query sigue adelante\n		if ($ConsultaSQL!=\"\")\n			{\n				// Imprime encabezados de columna si encuentra al menos un registro\n                //Si el informe usa una conexion externa usa su configuracion\n                if($registro_informe[\"conexion_origen_datos\"]!=\"\")\n                    $resultado_columnas=@PCO_EjecutarSQL($ConsultaSQL,\"\",${$registro_informe[\"conexion_origen_datos\"]},1); //${$registro_informe[\"conexion_origen_datos\"]}\n                else\n                    $resultado_columnas=@PCO_EjecutarSQL($ConsultaSQL);\n\n				//Procesa resultados solo si es diferente de 1 que es el valor retornado cuando hay errores evitando el fatal error del fetch(), rowCount() y demas metodos\n				if ($resultado_columnas!=\"1\")\n					$ConteoRegistros=$resultado_columnas->rowCount();\n\n				//Si se tienen registros para mirar las columnas las agrega\n				if ($ConteoRegistros>0)\n					{\n                        $numero_columnas=0;\n                        foreach($resultado_columnas->fetch(PDO::FETCH_ASSOC) as $key=>$val)\n                            {\n                                //Imprime el encabezado siempre y cuando no se trate de un campo que se desea ocultar\n                                if (!in_array($key,$ColumnasOcultas))\n									{\n										$PCO_ColumnasVisibles[]=$key;\n									}\n								else\n									{\n										//Agrega la columna al indice de columnas ocultas para no mostrarla luego\n										$PCO_NumerosColumnasOcultas[]=$numero_columnas;\n									}\n								$numero_columnas++;\n                            }\n                    }\n			}\n		@$Resultados[]=array(\"ColumnasVisibles\" => $PCO_ColumnasVisibles, \"NumerosColumnasOcultas\"=>$PCO_NumerosColumnasOcultas	,\"NumeroColumnas\" => $numero_columnas);\n		return $Resultados;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_CamposRealesInforme\n	Retorna un arreglo con nombres de campos completos, sus nombres reales en base de datos y los nombres de las tablas correspondientes\n\n	Variables de entrada:\n\n		informe - ID de informe lo usa para conocer todas sus columnas\n\n	Salida:\n\n		* Variable de tipo arreglo con los Resultados\n\n	Ver tambien:\n		<PCO_CargarInforme>\n*/\nfunction PCO_CamposRealesInforme($informe)\n	{\n		global $ConexionPDO,$ArchivoCORE,$TablasCore;\n		global $ListaCamposSinID_informe,$ListaCamposSinID_informe_campos,$ListaCamposSinID_informe_tablas;\n\n		// Busca datos del informe\n        if ($informe!=\"\")\n            {\n        		$consulta_informe=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe.\" FROM \".$TablasCore.\"informe WHERE id=? \",\"$informe\");\n        		$registro_informe=$consulta_informe->fetch();\n\n        		if ($registro_informe[\"conexion_origen_datos\"]!=\"\")\n        		    global ${$registro_informe[\"conexion_origen_datos\"]};\n            }\n\n			//Busca los CAMPOS definidos para el informe y sus TABLAS correspondientes\n			$ListaCampos_NombreCompleto=array();	//Nombre completo del campo\n			$ListaCampos_NombreSimple=array();		//Lado izquierdo solamente cuando se cuenta con Alias\n			$ListaTablas_NombreSimple=array();		//Nombre de la tabla de donde sale el campo\n			$ListaCampos_PermitirEdicion=array();	//Guarda los estados de edicion en linea para el campo\n			$consulta_campos=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe_campos.\" FROM \".$TablasCore.\"informe_campos WHERE informe=? ORDER BY peso,id\",\"$informe\");\n			while ($registro_campos = $consulta_campos->fetch())\n				{\n					//Si tiene alias definido lo agrega\n					$posfijo_campo=\"\";\n					if ($registro_campos[\"valor_alias\"]!=\"\") $posfijo_campo=\" as \".$registro_campos[\"valor_alias\"];\n					$nombre_campo=$registro_campos[\"valor_campo\"].$posfijo_campo;\n\n					//Agrega el campo a la lista de nombres completos\n					$ListaCampos_NombreCompleto[]=$nombre_campo;\n\n					//Agrega el estado de edicion o no para el campo\n					$ListaCampos_PermitirEdicion[]=$registro_campos[\"editable\"];\n\n					//Establece el nombre del campo simple (el real en base de datos)\n						//Elimina la posibilidad de un alias \" as \" tomando la primera parte solamente\n						$PartesListaCampos_NombreCompleto=explode(\" as \",$nombre_campo);\n						$nombre_campo_simple=$PartesListaCampos_NombreCompleto[0];\n						//Elimina la posibilidad de un punto \" . \" indicando la tabla\n						if (strpos($nombre_campo_simple,\".\"))\n							{\n								$PartesListaCampos_NombreCompleto=explode(\".\",$nombre_campo_simple);\n								$nombre_campo_simple=$PartesListaCampos_NombreCompleto[1];\n							}\n\n					//Agrega el campo a la lista de nombres simples\n					$ListaCampos_NombreSimple[]=$nombre_campo_simple;\n\n					//Determina la tabla a la que pertenece el campo\n					//Se verifica inicialmente si el campo ya indica la tabla para evitar ambiguedades en consultas de varias tablas\n					$PartesListaCampos_NombreCompleto=explode(\" as \",$nombre_campo);\n					$nombre_campo_simple=$PartesListaCampos_NombreCompleto[0];\n					//Si el campo tiene puntos indica la tabla, sino la buscamos\n					if (strpos($nombre_campo_simple,\".\"))\n						{\n							$PartesListaCampos_NombreCompleto=explode(\".\",$nombre_campo_simple);\n							$nombre_tabla_simple=$PartesListaCampos_NombreCompleto[0];\n							$ListaTablas_NombreSimple[]=$nombre_tabla_simple;\n						}\n					else\n						{\n							$nombre_tabla_simple=\"\";\n							//Busca en las TABLAS definidas para el informe\n							$consulta_tablas=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe_tablas.\" FROM \".$TablasCore.\"informe_tablas WHERE informe=? \",\"$informe\");\n							while ($registro_tablas = $consulta_tablas->fetch())\n								{\n									$tabla_actual=$registro_tablas[\"valor_tabla\"];\n									//Si la tabla tiene alias lo ignora\n									if (strpos($tabla_actual,\" as \"))\n										{\n											$PartesTablaActual=explode(\" as \",$tabla_actual);\n											$tabla_actual=$PartesTablaActual[0];\n										}\n									//Si no se ha encontrado la tabla entra a comparar frente a la actual\n									if ($nombre_tabla_simple==\"\")\n										{\n                                            //Si el informe usa una conexion externa usa su configuracion\n                                            if($registro_informe[\"conexion_origen_datos\"]!=\"\")\n                                                {\n                            						if (@PCO_ExisteCampoTabla($nombre_campo_simple,$tabla_actual,${$registro_informe[\"conexion_origen_datos\"]},$registro_informe[\"motorbd\"],$registro_informe[\"basedatos\"]))\n                            							$nombre_tabla_simple=$tabla_actual;\n                                                }\n                                            else\n                                                {\n                            						if (PCO_ExisteCampoTabla($nombre_campo_simple,$tabla_actual))\n                            							$nombre_tabla_simple=$tabla_actual;\n                                                }\n										}\n								}\n							$ListaTablas_NombreSimple[]=$nombre_tabla_simple;\n						}\n				}\n\n		@$Resultados[]=array(\"ListaCampos_NombreCompleto\" => $ListaCampos_NombreCompleto, \"ListaCampos_NombreSimple\"=>$ListaCampos_NombreSimple	,\"ListaTablas_NombreSimple\" => $ListaTablas_NombreSimple, \"ListaCampos_PermitirEdicion\" => $ListaCampos_PermitirEdicion);\n		return $Resultados;\n	}\n\n\n########################################################################\n########################################################################\n/*\n	Function: PCO_CargarInforme\n	Genera el codigo HTML correspondiente a un informe de la aplicacion y hace los llamados necesarios para la diagramacion por pantalla de los diferentes objetos que lo componen.\n\n	Variables de entrada:\n\n		informe - ID unico del informe que se desea cargar\n		en_ventana - Indica si el informe debe ser cargado en una ventana o directamente sobre el escritorio de aplicacion\n		formato - Determina el formato en el cual es generado el informe como HTM o XLS (Alpha)\n		estilo - Determina el estilo CSS utilizado para presentar el informe, debe existir dentro de las hojas de estilo de la plantilla\n		embebido - Determina si el informe es presentado dentro de otro objeto o no, como por ejemplo un formulario\n\n	(start code)\n		SELECT * FROM \".$TablasCore.\"informe WHERE id=\'$informe\'\n		SELECT * FROM \".$TablasCore.\"informe_campos WHERE informe=\'$informe\'\n		SELECT * FROM \".$TablasCore.\"informe_tablas WHERE informe=\'$informe\'\n		SELECT * FROM \".$TablasCore.\"informe_condiciones WHERE informe=\'$informe\' ORDER BY peso\n	(end)\n\n	Salida:\n\n		HTML, CSS y Javascript asociado al formulario\n\n	Ver tambien:\n		<PCO_CargarFormulario> | <PCO_ConstruirConsultaInforme>\n*/\n    //Funcion para compatibilidad hacia atras.  Desaparecera en la version 18.9\n    function cargar_informe($informe,$en_ventana=1,$formato=\"htm\",$estilo=\"Informes\",$embebido=0)\n    { echo \"ERROR: Llamado a funcion obsoleta del framework cargar_informe().  En su lugar utilice PCO_CargarInforme() \"; }\nfunction PCO_CargarInforme($informe,$en_ventana=1,$formato=\"htm\",$estilo=\"Informes\",$embebido=0,$anular_acciones=0,$anular_piepagina=0,$anular_encabezado=0,$SQLPuro=\"\")\n	{\n		global $ConexionPDO,$ArchivoCORE,$TablasCore,$Nombre_Aplicacion,$PCO_ValorBusquedaBD,$PCO_CampoBusquedaBD;\n		// Carga variables de sesion por si son comparadas en alguna condicion.  De todas formas pueden ser cargadas por el usuario en el diseno del informe\n		global $PCOSESS_LoginUsuario,$Nombre_usuario,$Descripcion_usuario,$Nivel_usuario,$Correo_usuario,$LlaveDePasoUsuario,$PCO_FechaOperacion;\n		// Carga variables de definicion de tablas\n		global $ListaCamposSinID_replicasbd,$ListaCamposSinID_informe,$ListaCamposSinID_informe_campos,$ListaCamposSinID_informe_tablas,$ListaCamposSinID_informe_condiciones,$ListaCamposSinID_informe_boton;\n		global $MULTILANG_Editar,$MULTILANG_Informes,$MULTILANG_Exportar,$MULTILANG_TotalRegistros,$MULTILANG_ContacteAdmin,$MULTILANG_ObjetoNoExiste,$MULTILANG_ErrorTiempoEjecucion,$MULTILANG_Informes,$MULTILANG_IrEscritorio,$MULTILANG_ErrorDatos,$MULTILANG_InfErrTamano,$MULTILANG_MonCommSQL;\n		global $IdiomaPredeterminado;\n        global $PCO_InformesListaColumnasDT,$PCO_InformesRecuperacionAJAX,$PCO_InformesIdCache,$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        global $ModoDepuracion,$ModoDesarrolladorPractico;\n        global $PCO_InformesGraficosSinDatos,$PCOVAR_ConteoRegistrosUltimoInforme;\n        global $PCO_FuncionesJSInternasFORM;\n        \n        //Determina si el usuario es un disenador de aplicacion para mostrar el ID de objeto a manera informativa y un boton de salto a edicion\n        $BotonSaltoEdicion=\'\n                    <a class=\"btn btn-default btn-xs\" href=\"index.php?PCO_Accion=PCO_EditarInforme&informe=\'.$informe.\'\">\n                        <div><i class=\"fa fa-pencil-square\"></i> \'.$MULTILANG_Editar.\' \'.$MULTILANG_Informes.\' <i>[ID=\'.$informe.\']</i></div>\n                    </a>\';\n\n        if ($SQLPuro==\"\")\n            {\n        		if (PCO_EsAdministrador($_SESSION[\'PCOSESS_LoginUsuario\']) && $informe>=0)\n        		    $ComplementoIdObjetoEnTitulo=\"  $BotonSaltoEdicion\";\n\n        		// Busca datos del informe\n        		$consulta_informe=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe.\" FROM \".$TablasCore.\"informe WHERE id=? \",\"$informe\");\n        		$registro_informe=$consulta_informe->fetch();\n        		$Identificador_informe=$registro_informe[\"id\"];\n\n        		//Carga cualquier script PRE para el informe\n        		if ($registro_informe[\"pre_script\"]!=\"\")\n        		    {\n        		        //Evalua si el codigo ya inicia con <?php y sino lo agrega\n        		        $ComplementoInicioScript=\"\";\n        		        if (substr(trim($registro_informe[\"pre_script\"]),0,5)!=\'<?php\')\n        		            $ComplementoInicioScript=\"<?php\\n\";\n        		        PCO_EvaluarCodigo($ComplementoInicioScript.$registro_informe[\"pre_script\"],1,\"Detalles: PRE-Code Rep ID=\".$informe);\n        		    }\n\n        		//Prepara script POST para el informe (se carga mas abajo pero deja la cadena lista)\n        		if ($registro_informe[\"post_script\"]!=\"\")\n        		    {\n        		        //Evalua si el codigo ya inicia con <?php y sino lo agrega\n        		        $ComplementoInicioScript=\"\";\n        		        if (substr(trim($registro_informe[\"post_script\"]),0,5)!=\'<?php\')\n        		            $ComplementoInicioScript=\"<?php\\n\";\n        		        $CadenaPOSTScriptPHP=$ComplementoInicioScript.$registro_informe[\"post_script\"];\n        		    }\n\n        		//Prepara JavaSCRIPT para el informe (se carga mas abajo pero deja la cadena lista)\n        		if (trim($registro_informe[\"javascript\"])!=\"\")\n        		    {\n                        $JavaScriptInforme=PCO_ReemplazarVariablesPHPEnCadena(trim($registro_informe[\"javascript\"]));\n        		    }\n            }\n\n        //Determina si se deben ocultar elementos por banderas o porque el informe asi lo obliga\n        $ComplementoAnulacionPiePagina=\'\';\n        if ($anular_piepagina==1 || $registro_informe[\"ocultar_piepagina\"]==1) $ComplementoAnulacionPiePagina=\' style=\"display:none; visibility:hidden;\" \';\n        $ComplementoAnulacionEncabezado=\'\';\n        if ($anular_encabezado==1 || $registro_informe[\"ocultar_encabezado\"]==1) $ComplementoAnulacionEncabezado=\' style=\"display:none; visibility:hidden;\" \';\n        if ($anular_acciones==0 && $registro_informe[\"anular_acciones\"]==1) $anular_acciones=1;\n\n        if ($SQLPuro==\"\")\n            {\n                //Si el informe usa una conexion externa busca su configuracion\n                if($registro_informe[\"conexion_origen_datos\"]!=\"\")\n                    {\n        		        $registro_conexiones=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_replicasbd.\" FROM \".$TablasCore.\"replicasbd WHERE nombre=\'\".$registro_informe[\"conexion_origen_datos\"].\"\' \")->fetch();\n                    	global ${$registro_conexiones[\"nombre\"]};\n                    	$NombreConexionExtra=${$registro_conexiones[\"nombre\"]};\n                    }\n        		//Si no encuentra informe presenta error\n        		if ($registro_informe[\"id\"]==\"\") PCO_Mensaje($MULTILANG_ErrorTiempoEjecucion,$MULTILANG_ObjetoNoExiste.\" \".$MULTILANG_ContacteAdmin.\"<br>(\".$MULTILANG_Informes.\" $informe)\", \'\', \'fa fa-times fa-5x icon-red texto-blink\', \'alert alert-danger alert-dismissible\');\n            }\n\n		//Identifica si el informe requiere un formulario de filtrado previo\n		if ($registro_informe[\"formulario_filtrado\"]!=\"\")\n			{\n				//Determina si solicita el informe desde el formulario de filtrado apropiado, sino redirecciona a este\n				global $PCO_FormularioActivo;\n				if ($registro_informe[\"formulario_filtrado\"]!=$PCO_FormularioActivo)\n					{\n						echo \'<form name=\"precarga_form_filtro\" action=\"\'.$ArchivoCORE.\'\" method=\"POST\" target=\"_self\">\n							<input type=\"Hidden\" name=\"PCO_Accion\" value=\"PCO_CargarObjeto\">\n							<input type=\"Hidden\" name=\"PCO_InformeFiltro\" value=\"\'.$registro_informe[\"id\"].\'\">\n							<input type=\"Hidden\" name=\"PCO_Objeto\" value=\"frm:\'.$registro_informe[\"formulario_filtrado\"].\':1\">\n							<input type=\"Hidden\" name=\"Presentar_FullScreen\" value=\"\'.@$Presentar_FullScreen.\'\">\n							<input type=\"Hidden\" name=\"Precarga_EstilosBS\" value=\"\'.@$Precarga_EstilosBS.\'\">\n							</form>\n						<script type=\"\" language=\"JavaScript\"> document.precarga_form_filtro.submit();  </script>\';\n						die();\n					}\n			}\n\n		//Si hay variables de filtro definidas busca su valor en el contexto global\n		if($registro_informe[\"variables_filtro\"]!=\"\")\n			{\n				$arreglo_variables_filtro = @explode(\",\",$registro_informe[\"variables_filtro\"]);\n				//Busca y convierte cada variable recibida en global\n				foreach ($arreglo_variables_filtro as $nombre_variable_filtro)\n					{\n						//if (isset(${$nombre_variable_filtro}))  // {Deprecated}\n							global ${$nombre_variable_filtro};\n					}\n			}\n\n		//Si no hay SQL explicito entonces Genera la consulta en SQL para el informe a partir de los parametros\n		if (strlen($registro_informe[\"consulta_sql\"])<5)\n		    {\n		        if ($SQLPuro==\"\")\n    		        $consulta=PCO_ConstruirConsultaInforme($informe,0); //Construye query del informe sin evitar campos ocultos (0)\n		        else\n		            $consulta=PCO_ReemplazarVariablesPHPEnCadena($SQLPuro);\n		    }\n		else\n		    $consulta=PCO_ReemplazarVariablesPHPEnCadena($registro_informe[\"consulta_sql\"]);\n\n		// Si el informe tiene formato_final = T (tabla de datos)\n		if ($registro_informe[\"formato_final\"]==\"T\" || $SQLPuro!=\"\")\n			{\n				$SalidaFinalInforme=\'\';\n				if ($en_ventana)\n					{\n						//Cuando es embebido (=1) no imprime el boton de retorno pues se asume dentro de un formulario\n						if (!$embebido)\n							echo \'<div align=center id=\"PCOContenedor_BotonEscritorio\"><button type=\"Button\" onclick=\"document.PCO_FormVerMenu.submit()\" class=\"btn btn-warning\"><i class=\"fa fa-home fa-fw\"></i> \'.$MULTILANG_IrEscritorio.\'</button></div><br>\';\n\n						$TituloVentanaInforme=PCO_ReemplazarVariablesPHPEnCadena($registro_informe[\"titulo\"]);\n						//Define si requiere o no boton de exportacion en la barra de titulo\n						if ($registro_informe[\"genera_pdf\"]!=\'N\' && $embebido!=1)\n							{\n							    //Formato nativo\n    				            if ($registro_informe[\"genera_pdf\"]==\'S\' || $registro_informe[\"genera_pdf\"]==\'A\')\n                                    {\n        								$TituloVentanaInforme=\'\n        								<a class=\"btn btn-primary btn-xs pull-right\" data-toggle=\"modal\" href=\"#myModalEXPORTACION\">\n        									<div><i class=\"fa fa-floppy-o fa-fw\"></i> \'.$MULTILANG_Exportar.\'</div>\n        								</a>\'.$TituloVentanaInforme;\n                                    }\n							}\n\n						//Define si requiere o no boton de exportacion en la barra de titulo\n					    //Formato CSV por AJAX - Solo genera el marco, el boton se agrega luego cuando se conozca el ID de la cache de informe (mas abajo)\n			            if ($registro_informe[\"genera_pdf\"]==\'C\' || $registro_informe[\"genera_pdf\"]==\'A\')\n                            {\n								$TituloVentanaInforme=\'<div id=\"PCO_MarcoBotonCSVInforme\'.$informe.\'\" class=\"pull-right\" style=\"margin-left:5px;\"></div>\'.$TituloVentanaInforme;\n                            }\n\n						//Carga la ventana con el informe\n						PCO_AbrirVentana($TituloVentanaInforme.$ComplementoIdObjetoEnTitulo,\'panel panel-info\',$registro_informe[\"ancho\"]);\n\n						//Agrega la descripcion del informe en caso de contar con ella\n						if ($registro_informe[\"descripcion\"]!=\'\')\n							{\n								 PCO_Mensaje(\'<i class=\"fa fa-flag fa-fw\"></i>\',PCO_ReemplazarVariablesPHPEnCadena($registro_informe[\"descripcion\"]), \'\', \'\', \'alert alert-success alert-dismissible\');\n							}\n					}\n\n				// Si se ha definido un tamano fijo entonces crea el marco\n				if ($registro_informe[\"ancho\"]!=\"\" && $registro_informe[\"alto\"]!=\"\")\n					echo \'<DIV style=\"DISPLAY: block; OVERFLOW: auto; POSITION: relative; WIDTH: \'.$registro_informe[\"ancho\"].\' !important; HEIGHT: \'.$registro_informe[\"alto\"].\' !important\">\';\n\n				//Genera enlaces a las opciones de descarga\n				if (($registro_informe[\"genera_pdf\"]==\'S\' || $registro_informe[\"genera_pdf\"]==\'A\')  && $embebido!=1)\n					include_once(\"core/marco_export.php\");\n\n					//DEPRECATED echo \'	<html>		<body leftmargin=\"0\" topmargin=\"0\" rightmargin=\"0\" bottommargin=\"0\" marginwidth=\"0\" marginheight=\"0\" style=\"font-size: 12px; font-family: Arial, Verdana, Tahoma;\">\';\n\n                    //Agrega titulo o encabezado si esta definido\n                    if ( $registro_informe[\"encabezado_html\"] != \'\' )\n                        $SalidaFinalInforme.= \'<div id=\"titulo-informe-ID\'.$registro_informe[\"id\"].\'\">\'.PCO_ReemplazarVariablesPHPEnCadena($registro_informe[\"encabezado_html\"]).\'</div>\';\n\n                    //Agrega clases para convertir la tabla a responsive si aplica\n                    $ComplementoResponsiveTabla=\'\';\n                    if ( $registro_informe[\"tabla_responsive\"] == \'S\' )\n                        $ComplementoResponsiveTabla= \'responsive nowrap\';\n\n					$SalidaFinalInforme.= \'<!--<div class=\"table-responsive\">-->\n											<table width=\"100%\" class=\"btn-xs table table-condensed table-hover order-column table-striped table-unbordered  \'.$ComplementoResponsiveTabla.\'  \'.$estilo.\' d-flex\" id=\"TablaInforme_\'.$registro_informe[\"id\"].\'\"><thead id=\"PCO_EncabezadosInforme_\'.$registro_informe[\"id\"].\'\" \'.$ComplementoAnulacionEncabezado.\'>\';\n\n					//Busca si tiene acciones (botones) para cada registro y los genera\n					if (!$anular_acciones)\n					    {\n    					    $cadena_generica_botones_principio=PCO_GenerarBotonesInforme($informe,1);\n    					    $cadena_generica_botones=PCO_GenerarBotonesInforme($informe);\n					    }\n					else\n					    {\n					        $cadena_generica_botones_principio=\'\';\n					        $cadena_generica_botones=\"\";\n					    }\n\n					//Si el informe tiene botones al comienzo entonces agrega columna adicional\n					if ($cadena_generica_botones_principio!=\"\")\n						{\n							$SalidaFinalInforme.= \'<th></th>\';\n						}\n\n					//Determina si el informe tiene o no campos ocultos\n					$PCO_ColumnasOcultas=PCO_DeterminarCamposOcultos($informe);\n\n					//Obtiene ColumnasVisibles, NumerosColumnasOcultas, NumeroColumnas dentro de EtiquetasConsulta\n					$EtiquetasConsulta=PCO_GenerarEtiquetasConsulta($consulta,$informe); //Enviar el informe para que se determinen tambien sus columnas ocultas\n\n					//Genera HTML con las columnas\n                    //Busca los campos definidos en el informe como visibles y luego determina si el campo tiene o no titulo arbitrario\n        			$ListaCampos_TitutloArbitrario=array();\n        			$consulta_titulosarbitrarios=PCO_EjecutarSQL(\"SELECT id,\".$ListaCamposSinID_informe_campos.\" FROM \".$TablasCore.\"informe_campos WHERE informe=? AND visible=1 ORDER BY peso,id\",\"$informe\");\n        			while ($registro_titulosarbitrarios = $consulta_titulosarbitrarios->fetch())\n        					$ListaCampos_TitutloArbitrario[]=$registro_titulosarbitrarios[\"titulo_arbitrario\"];\n				    $ConteoPosicionColumna=0;   //Utilizado para conocer la columna actual y luego buscar si tiene titulo arbitrario\n					$ListaColumnasInforme=\"\";   //Acumula las columnas para ser usadas luego en los DataTables (si aplica)\n					foreach($EtiquetasConsulta[0][\"ColumnasVisibles\"] as $EtiquetaColumna)\n					    {\n					        $TituloFinalColumna=$EtiquetaColumna;\n					        //Si la columna actual tiene un titulo arbitrario definido entonces lo agrega\n					        if (@$ListaCampos_TitutloArbitrario[$ConteoPosicionColumna]!=\"\")\n                                $TituloFinalColumna=PCO_ReemplazarVariablesPHPEnCadena($ListaCampos_TitutloArbitrario[$ConteoPosicionColumna]);\n						    $SalidaFinalInforme.= \'<th>\'.$TituloFinalColumna.\'</th>\';\n						    $ListaColumnasInforme.=$TituloFinalColumna.\',\';\n						    $ConteoPosicionColumna++;\n					    }\n					$ListaColumnasInforme=substr($ListaColumnasInforme, 0, -1);//Elimina la coma sobrante del informe\n					//Si el informe tiene botones al final entonces agrega columna adicional\n					if ($cadena_generica_botones!=\"\")\n						{\n							$SalidaFinalInforme.= \'<th></th>\';\n						}\n					$SalidaFinalInforme.= \'</tr></thead><tbody>\';\n\n					//Busca los campos y tablas reales del informe para construir luego los ID unicos\n					$CamposReales=PCO_CamposRealesInforme($informe);\n\n					// Imprime registros del resultado\n					$numero_filas=0;\n\n                    //Si el informe usa una conexion externa usa su configuracion\n                    if($registro_informe[\"conexion_origen_datos\"]!=\"\")\n                        $consulta_ejecucion=PCO_EjecutarSQL($consulta,\"\",${$registro_conexiones[\"nombre\"]});\n                    else\n                        $consulta_ejecucion=PCO_EjecutarSQL($consulta);\n                        \n                    //Asigna el total dde registros a variable global para posible uso fuera de la funcion\n                    $PCOVAR_ConteoRegistrosUltimoInforme=$consulta_ejecucion->rowCount();\n\n                    //Lleva informe a la cache siempre y cuando no sea un informe interno del framework\n                    $IdCacheInformes=0;\n                    PCO_EjecutarSQLUnaria(\"INSERT INTO {$TablasCore}informe_cache (informe,usuario,conexion,script_sql,columnas) VALUES(\'{$informe}\',\'{$PCOSESS_LoginUsuario}\',\'{$NombreConexionExtra}\',?,\'{$ListaColumnasInforme}\') \",\"{$consulta}\");\n                    $IdCacheInformes=PCO_ObtenerUltimoIDInsertado();\n\n                    //Ahora que se tiene una cache, determina si se requiere boton de exportacion CSV por AJAX y lo agrega\n		            if ($registro_informe[\"genera_pdf\"]==\'C\' || $registro_informe[\"genera_pdf\"]==\'A\')\n                        {\n                            echo \"<script language=\'JavaScript\'>\n                                $(\'#PCO_MarcoBotonCSVInforme{$informe}\').html(\'<a class=\\\"btn btn-success btn-xs pull-right\\\" href=\\\"core/ajax.php?PCO_Accion=PCO_ExportacionQueryCacheCSV&amp;IdRegistro_CacheSQL={$IdCacheInformes}\\\"> <i class=\\\"fa fa-file-excel-o fa-fw\\\"></i> {$MULTILANG_Exportar} CSV </a>\');\n                            </script>\";\n                        }\n\n					//Si el informe va a soportar datatable entonces lo agrega a las tablas que deben ser convertidas en el pageonload\n					if ($registro_informe[\"soporte_datatable\"]==\"S\")\n					    {\n						    @$PCO_InformesDataTable.=\"TablaInforme_\".$registro_informe[\"id\"].\"|\";\n						    @$PCO_InformesDataTablePaginaciones.=$registro_informe[\"tamano_paginacion\"].\"|\"; //Agrega tamano predefinido para la tabla\n						    @$PCO_InformesDataTableTotales.=$registro_informe[\"subtotales_columna\"].\"|\";\n						    @$PCO_InformesDataTableFormatoTotales.=$registro_informe[\"subtotales_formato\"].\"|\";\n						    @$PCO_InformesDataTableExrpotaCLP.=$registro_informe[\"exportar_dtclp\"].\"|\";\n						    @$PCO_InformesDataTableExrpotaCSV.=$registro_informe[\"exportar_dtcsv\"].\"|\";\n						    @$PCO_InformesDataTableExrpotaXLS.=$registro_informe[\"exportar_dtxls\"].\"|\";\n						    @$PCO_InformesDataTableExrpotaPDF.=$registro_informe[\"exportar_dtpdf\"].\"|\";\n						    @$PCO_InformesDataTableDefineCOLS.=$registro_informe[\"definir_cols\"].\"|\";\n            	            @$PCO_InformesIdCache.=$IdCacheInformes.\"|\";\n                    	    @$PCO_InformesListaColumnasDT.=$ListaColumnasInforme.\"|\";\n						    @$PCO_InformesDataTable_pane_activado.=$registro_informe[\"pane_activado\"].\"|\";\n						    @$PCO_InformesDataTable_pane_cascada.=$registro_informe[\"pane_cascada\"].\"|\";\n						    @$PCO_InformesDataTable_pane_colapsado.=$registro_informe[\"pane_colapsado\"].\"|\";\n						    @$PCO_InformesDataTable_pane_columnas.=$registro_informe[\"pane_columnas\"].\"|\";\n						    @$PCO_InformesDataTable_pane_subtotalesrelativos.=$registro_informe[\"pane_subtotalesrelativos\"].\"|\";\n						    @$PCO_InformesDataTable_pane_conteos.=$registro_informe[\"pane_conteos\"].\"|\";\n						    @$PCO_InformesDataTable_pane_controles.=$registro_informe[\"pane_controles\"].\"|\";\n						    @$PCO_InformesDataTable_pane_control_colapsar.=$registro_informe[\"pane_control_colapsar\"].\"|\";\n						    @$PCO_InformesDataTable_pane_control_ordenar.=$registro_informe[\"pane_control_ordenar\"].\"|\";\n					    }\n\n                    if ($registro_informe[\"usar_ajax\"]==0)\n                        {\n                            //Define banderas para determinar si el informe se recupera por AJAX o no posteriormente en marco_abajo\n                    	    if ($registro_informe[\"soporte_datatable\"]==\"S\")\n                    	        $PCO_InformesRecuperacionAJAX.=\"0\".\"|\";\n        \n        					//Procesa resultados solo si es diferente de 1 que es el valor retornado cuando hay errores evitando el fatal error del fetch(), rowCount() y demas metodos\n        					while($consulta_ejecucion!=\"1\" && $registro_datos_informe=$consulta_ejecucion->fetch())\n        						{\n        							$SalidaFinalInforme.= \'<tr>\';\n        \n        							//Si el informe tiene botones al comienzo los agrega\n        							if ($cadena_generica_botones_principio!=\"\")\n        								{\n        									//Transforma la cadena generica con los datos especificos del registro, toma por ahora el primer campo (OCULTO O NO)\n        									$cadena_botones_registro=str_replace(\"DELFRMVALVALOR\",$registro_datos_informe[0],$cadena_generica_botones_principio);\n        									$cadena_botones_registro=str_replace(\"DETFRMVALBASE\",$registro_datos_informe[0],$cadena_botones_registro);\n        									//Muestra los botones preparados para el registro\n        									$SalidaFinalInforme.= \'<td>\'.$cadena_botones_registro.\'</td>\';\n        								}\n        \n        							for ($i=0;$i<$EtiquetasConsulta[0][\"NumeroColumnas\"];$i++)\n        								{\n        									//Si no hay definidos numeros de columnas ocultas crea el arreglo vacio para compatibilidad PHP 8+\n        									if (@!isset($EtiquetasConsulta[0][\"NumerosColumnasOcultas\"]))\n        									    $EtiquetasConsulta[0][\"NumerosColumnasOcultas\"]=array();\n        									\n        									//Muestra la columna solo si no se trata de una de las ocultas\n        									if (@!in_array($i,$EtiquetasConsulta[0][\"NumerosColumnasOcultas\"]))\n        										{\n        											$ValorCampoIdentificador=$registro_datos_informe[0]; //Toma por ahora el primer campo (OCULTO O NO)\n        											$Nombre_CampoLlave=@$CamposReales[0][\"ListaCampos_NombreSimple\"][0]; //Toma por ahora el primer campo (OCULTO O NO)\n        											$Nombre_CampoEditable=@$CamposReales[0][\"ListaCampos_NombreSimple\"][$i];\n        											$Nombre_TablaEditable=@$CamposReales[0][\"ListaTablas_NombreSimple\"][$i];\n        											$IdentificadorDeCampoEditable=\"$Nombre_TablaEditable:$Nombre_CampoEditable:$Nombre_CampoLlave:$ValorCampoIdentificador\";\n        \n        											//Determina la activacion o no de la cadena de edicion del campo\n        											$CadenaActivadora_Edicion=\"\";\n        											if (@$CamposReales[0][\"ListaCampos_PermitirEdicion\"][$i]==1)\n        												$CadenaActivadora_Edicion=\' id=\"\'.$IdentificadorDeCampoEditable.\'\" contenteditable=\"true\" \';\n        \n        											$ValorVisibleFinal=$registro_datos_informe[$i];\n        											if ($ModoDesarrolladorPractico==1) $ValorVisibleFinal=PCO_ReemplazarVariablesPHPEnCadena($ValorVisibleFinal);\n        \n        											$SalidaFinalInforme.= \'\n        												<td \'.$CadenaActivadora_Edicion.\'>\'.$ValorVisibleFinal.\'</td>\';\n        										}\n        								}\n        \n        							//Si el informe tiene botones al final los agrega\n        							if ($cadena_generica_botones!=\"\")\n        								{\n        									//Transforma la cadena generica con los datos especificos del registro, toma por ahora el primer campo (OCULTO O NO)\n        									$cadena_botones_registro=str_replace(\"DELFRMVALVALOR\",$registro_datos_informe[0],$cadena_generica_botones);\n        									$cadena_botones_registro=str_replace(\"DETFRMVALBASE\",$registro_datos_informe[0],$cadena_botones_registro);\n        									//Muestra los botones preparados para el registro\n        									$SalidaFinalInforme.= \'<td>\'.$cadena_botones_registro.\'</td>\';\n        								}\n        \n        							$SalidaFinalInforme.= \'</tr>\';\n        							$numero_filas++;\n        						}\n                        }\n                    else\n                        {\n                            //Define banderas para determinar si el informe se recupera por AJAX o no posteriormente en marco_abajo\n                    	    if ($registro_informe[\"soporte_datatable\"]==\"S\")\n                    	        $PCO_InformesRecuperacionAJAX.=\"1\".\"|\";\n                        }\n\n					$SalidaFinalInforme.= \'</tbody>\';\n\n					//Si se desea tabla responsive oculta el pie de pagina (libreria datatables no soporta responsive con tfooter ni recupareacion ajax con tfooter)\n			        if ($registro_informe[\"tabla_responsive\"] == \'N\' &&  $registro_informe[\"usar_ajax\"]==\"0\")\n			            {\n        					$SalidaFinalInforme.= \'<tfoot id=\"PCO_PiePaginaInforme_\'.$registro_informe[\"id\"].\'\" \'.$ComplementoAnulacionPiePagina.\'>\';\n        					//Cuando es embebido (=1) no agrega los totales de registro\n        					//if (!$embebido)\n        					$CantidadColumnasSpan=$ConteoPosicionColumna-1;\n        					@$SalidaFinalInforme.= \'\n        						<tr>\n        						    <th colspan=\'.$CantidadColumnasSpan.\'>\n        							    <b>\'.$MULTILANG_TotalRegistros.\': </b>\'.$numero_filas.\'\n        						    </th>\n        						</tr>\';\n        					//Cierra pie de pagina, tabla y marco responsive para la tabla\n        					$SalidaFinalInforme.= \'</tfoot>\';\n			            }\n					\n					$SalidaFinalInforme.= \'\n							</table>\n							<!--</div>-->\';\n				// DEPRECATED $SalidaFinalInforme.= \'</body></html>\';\n\n				//Imprime el HTML generado para el informe\n				echo $SalidaFinalInforme;\n\n				// Si se ha definido un tamano fijo entonces cierra el marco\n				if ($registro_informe[\"ancho\"]!=\"\" && $registro_informe[\"alto\"]!=\"\")\n					echo \'</DIV>\';\n\n			} // Fin si informe es T (tabla)\n\n/*\n		//Verifica si es un informe grafico sin dimensiones\n		if ($registro_informe[\"formato_final\"]==\"G\" && ( $registro_informe[\"ancho\"]==\"\" || $registro_informe[\"alto\"]==\"\" ))\n			{\n				echo \'<form name=\"cancelarXTamano\" action=\"\'.$ArchivoCORE.\'\" method=\"POST\">\n					<input type=\"Hidden\" name=\"PCO_Accion\" value=\"PCO_VerMenu\">\n					<input type=\"Hidden\" name=\"PCO_ErrorTitulo\" value=\"\'.$MULTILANG_ErrorDatos.\'\">\n					<input type=\"Hidden\" name=\"PCO_ErrorDescripcion\" value=\"\'.$MULTILANG_InfErrTamano.\'\">\n					</form>\n					<script type=\"\" language=\"JavaScript\"> document.cancelarXTamano.submit();  </script>\';\n			}\n*/\n		// Si el informe tiene formato_final = G (grafico)\n		if ($registro_informe[\"formato_final\"]==\"G\")\n			{\n				// Si se ha definido un tamano fijo entonces crea el marco\n				if ($registro_informe[\"ancho\"]!=\"\" && $registro_informe[\"alto\"]!=\"\" && $registro_informe[\"ancho\"]!=\"0\" && $registro_informe[\"alto\"]!=\"0\")\n					echo \'<DIV style=\"DISPLAY: block; OVERFLOW: no; POSITION: relative; WIDTH: \'.$registro_informe[\"ancho\"].\' !important; HEIGHT: \'.$registro_informe[\"alto\"].\' !important\">\';\n\n				//Consulta el formato de grafico y datos de series para ponerlo en los campos\n				//Dado por: Tipo|Nombre1!NombreN|Etiqueta1!EtiquetaN|Valor1!ValorN|\n				$formato_base=explode(\"|\",$registro_informe[\"formato_grafico\"]);\n				$tipo_grafico=$formato_base[0];\n				$lista_nombre_series=explode(\"!\",$formato_base[1]);\n				$lista_etiqueta_series=explode(\"!\",$formato_base[2]);\n				$lista_valor_series=explode(\"!\",$formato_base[3]);\n	            //Carga detalles extendidos para el formato de grafico y los corrige en el caso de graficos viejos\n	            $barra_apilada=$formato_base[4];    if ($barra_apilada==\"\") $barra_apilada=\"false\";\n	            $ocultar_grilla=$formato_base[5];   if ($ocultar_grilla==\"\") $ocultar_grilla=\"false\";\n	            $ocultar_ejes=$formato_base[6];     if ($ocultar_ejes==\"\") $ocultar_ejes=\"false\";\n	            $unidades_pre=$formato_base[7];     if ($unidades_pre==\"\") $unidades_pre=\"\";\n	            $unidades_pos=$formato_base[8];     if ($unidades_pos==\"\") $unidades_pos=\"\";\n	            $barras_horizontales=\"false\";  //Asume barras verticales por defecto\n				if ($tipo_grafico==\"barrah\")  $barras_horizontales=\"true\";\n	            $tipo_grafico_circular=\"donut\";  //Asume barras verticales por defecto\n				if ($tipo_grafico==\"torta\" || $tipo_grafico==\"tortap\")  $tipo_grafico_circular=\"pie\";\n	            $presentar_porcentaje=\"false\";  //Asume que el grafico no es con porcentajes en tortas\n				if ($tipo_grafico==\"donap\" || $tipo_grafico==\"tortap\")  $presentar_porcentaje=\"true\";\n\n				$presentar_datalabels=\"false\";  //Asume que no se presentan las etiquetas con valores de datos\n				$cadenaubicacion_datalabels=\"\";\n				if($formato_base[9]!=\"false\" && $formato_base[9]!=\"\") $presentar_datalabels=\"true\";\n				if($formato_base[9]==\"true_outside\") $cadenaubicacion_datalabels=\"dataLabelsPosition: \'outside\',\";\n				if($formato_base[9]==\"true_inside\") $cadenaubicacion_datalabels=\"dataLabelsPosition: \'inside\',\";\n\n                $cadena_arreglo_colores=\"\";\n				if($formato_base[10]!=\"\") $cadena_arreglo_colores=\"colors: \".$formato_base[10].\",\";\n\n				//Elimina los nombres de tabla en caso de tener punto y usa los alias si los tiene\n				for ($i=0;$i<5;$i++)\n					{\n						//Elimina nombres de tabla encontrando el punto y seleccionando siguiente palabra\n						if (strpos($lista_etiqueta_series[$i], \".\"))\n							{\n								$tmp=explode(\".\",$lista_etiqueta_series[$i]);\n								$lista_etiqueta_series[$i]=$tmp[1];\n							}\n						if (strpos($lista_valor_series[$i], \".\"))\n							{\n								$tmp=explode(\".\",$lista_valor_series[$i]);\n								$lista_valor_series[$i]=$tmp[1];\n							}\n						// Prefiere los alias sobre los nombres de campo cuando encuentra un AS\n						if (strpos($lista_etiqueta_series[$i], \" AS \"))\n							{\n								$tmp=explode(\" AS \",$lista_etiqueta_series[$i]);\n								$lista_etiqueta_series[$i]=$tmp[1];\n							}\n						if (strpos($lista_valor_series[$i], \" AS \"))\n							{\n								$tmp=explode(\" AS \",$lista_valor_series[$i]);\n								$lista_valor_series[$i]=$tmp[1];\n							}\n					}\n				$nombre_serie_1=preg_replace(\'~[^a-zA-Z0-9_]~\', \'\', str_replace ( \" \" , \"_\", $lista_nombre_series[0] ) );\n				$nombre_serie_2=preg_replace(\'~[^a-zA-Z0-9_]~\', \'\', str_replace ( \" \" , \"_\", $lista_nombre_series[1] ) );\n				$nombre_serie_3=preg_replace(\'~[^a-zA-Z0-9_]~\', \'\', str_replace ( \" \" , \"_\", $lista_nombre_series[2] ) );\n				$nombre_serie_4=preg_replace(\'~[^a-zA-Z0-9_]~\', \'\', str_replace ( \" \" , \"_\", $lista_nombre_series[3] ) );\n				$nombre_serie_5=preg_replace(\'~[^a-zA-Z0-9_]~\', \'\', str_replace ( \" \" , \"_\", $lista_nombre_series[4] ) );\n				$campo_etiqueta_serie_1=$lista_etiqueta_series[0];\n				$campo_etiqueta_serie_2=$lista_etiqueta_series[1];\n				$campo_etiqueta_serie_3=$lista_etiqueta_series[2];\n				$campo_etiqueta_serie_4=$lista_etiqueta_series[3];\n				$campo_etiqueta_serie_5=$lista_etiqueta_series[4];\n				$campo_valor_serie_1=$lista_valor_series[0];\n				$campo_valor_serie_2=$lista_valor_series[1];\n				$campo_valor_serie_3=$lista_valor_series[2];\n				$campo_valor_serie_4=$lista_valor_series[3];\n				$campo_valor_serie_5=$lista_valor_series[4];\n				// CREA OBJETO SEGUN TIPO DE GRAFICO\n				$TipoObjetoGraficoMorris     = \"Morris.Area\";  //Por defecto define tipo Area para cualquiera de los definidos sin compatibilidad conocida\n				if ($tipo_grafico==\"area\")\n                    $TipoObjetoGraficoMorris = \"Morris.Area\";\n				if ($tipo_grafico==\"barra\" || $tipo_grafico==\"barrah\" || $tipo_grafico==\"barrav\" || $tipo_grafico==\"barrah_multiples\" || $tipo_grafico==\"barrav_multiples\")\n					$TipoObjetoGraficoMorris = \"Morris.Bar\";\n				if ($tipo_grafico==\"linea\" || $tipo_grafico==\"linea_multiples\")\n					$TipoObjetoGraficoMorris = \"Morris.Line\";\n				if ($tipo_grafico==\"dona\"  || $tipo_grafico==\"donap\" || $tipo_grafico==\"torta\" || $tipo_grafico==\"tortap\")\n					$TipoObjetoGraficoMorris = \"Morris.Donut\";\n\n				//Define la cadena de llaves para el grafico\n				$CadenaLlaves=\"\'$nombre_serie_1\'\";                //\'Operaciones\',\'Usuarios\',\'UsoAPI\'\n				if ($nombre_serie_2!=\"\") $CadenaLlaves.=\",\'$nombre_serie_2\'\";\n				if ($nombre_serie_3!=\"\") $CadenaLlaves.=\",\'$nombre_serie_3\'\";\n				if ($nombre_serie_4!=\"\") $CadenaLlaves.=\",\'$nombre_serie_4\'\";\n				if ($nombre_serie_5!=\"\") $CadenaLlaves.=\",\'$nombre_serie_5\'\";\n\n				//Define la cadena de etiquetas para el grafico\n				$CadenaEtiquetas=\"\'$nombre_serie_1\'\";     //\'Operaciones\',\'Usuarios\',\'UsoAPI\'\n				if ($nombre_serie_2!=\"\") $CadenaEtiquetas.=\",\'$nombre_serie_2\'\";\n				if ($nombre_serie_3!=\"\") $CadenaEtiquetas.=\",\'$nombre_serie_3\'\";\n				if ($nombre_serie_4!=\"\") $CadenaEtiquetas.=\",\'$nombre_serie_4\'\";\n				if ($nombre_serie_5!=\"\") $CadenaEtiquetas.=\",\'$nombre_serie_5\'\";\n            ?>\n            <?php\n                //Determina si se debe o no crear cadena para el tooltipo con titulo del informe\n                $CadenaComplementoToolTipTitulo=\"\";\n                if ( $registro_informe[\"tooltip_titulo\"] == \'S\' )\n                    $CadenaComplementoToolTipTitulo=\'title=\"\'.PCO_ReemplazarVariablesPHPEnCadena($registro_informe[\"titulo\"]).\'\" data-toggle=\"tooltip\"\';\n\n                //Agrega titulo o encabezado si esta definido\n                if ( $registro_informe[\"encabezado_html\"] != \'\' )\n                    echo \'<div id=\"titulo-informe-ID\'.$registro_informe[\"id\"].\'\">\'.$registro_informe[\"encabezado_html\"].\'</div>\';\n            ?>\n                <div <?php echo $CadenaComplementoToolTipTitulo; ?> id=\"marco-informe-grafico-ID<?php echo $registro_informe[\"id\"]; ?>\" style=\"height: auto !important;\"></div>\n                <script language=\"JavaScript\">\n                    //Genera el codigo Morris para el grafico\n                    $(function() {\n                        <?php echo $TipoObjetoGraficoMorris; ?>({\n                            //Nombre del marco que tiene el grafico\n                            element: \'marco-informe-grafico-ID<?php echo $registro_informe[\"id\"]; ?>\',\n                            data: [\n                            <?php\n                                //Inicia la generacion del arreglo con los datos\n                                //Si el informe usa una conexion externa usa su configuracion\n                                if($registro_informe[\"conexion_origen_datos\"]!=\"\")\n                                    $resultado_consulta=PCO_EjecutarSQL($consulta,\"\",${$registro_conexiones[\"nombre\"]});\n                                else\n                                    $resultado_consulta=PCO_EjecutarSQL($consulta);\n\n                                $cadena_datos=\"\";\n                                while ($registro_consulta = $resultado_consulta->fetch())\n                                    {\n                                        //Crea series de datos para los graficos de Barra, Linea o area que utilizan los mismos parametros\n                                        if ($TipoObjetoGraficoMorris!=\"Morris.Donut\")\n                                            {\n                                                $cadena_datos.= \"\n                                                    {\";\n                                                //Agrega datos al arreglo del grafico segun las series disponibles\n        								        if ($nombre_serie_1 != \"\")\n        								            {\n        								                $NombreVisibleCampo=$registro_consulta[$campo_etiqueta_serie_1];\n        								                $ValorVisibleCampo=$registro_consulta[$campo_valor_serie_1];\n                                                        $cadena_datos.= \"\n                                                        \".$nombre_serie_1.\": \".$ValorVisibleCampo.\",\n                                                        etiqueta_ejex: \'$NombreVisibleCampo\'\";\n        								            }\n        								        if ($nombre_serie_2 != \"\")\n        								            {\n        								                $NombreVisibleCampo=$registro_consulta[$campo_etiqueta_serie_2];\n        								                $ValorVisibleCampo=$registro_consulta[$campo_valor_serie_2];\n                                                        $cadena_datos.= \",\n                                                        \".$nombre_serie_2.\": \".$ValorVisibleCampo;\n        								            }\n        								        if ($nombre_serie_3 != \"\")\n        								            {\n        								                $NombreVisibleCampo=$registro_consulta[$campo_etiqueta_serie_3];\n        								                $ValorVisibleCampo=$registro_consulta[$campo_valor_serie_3];\n                                                        $cadena_datos.= \",\n                                                        \".$nombre_serie_3.\": \".$ValorVisibleCampo;\n        								            }\n        								        if ($nombre_serie_4 != \"\")\n        								            {\n        								                $NombreVisibleCampo=$registro_consulta[$campo_etiqueta_serie_4];\n        								                $ValorVisibleCampo=$registro_consulta[$campo_valor_serie_4];\n                                                        $cadena_datos.= \",\n                                                        \".$nombre_serie_4.\": \".$ValorVisibleCampo;\n        								            }\n        								        if ($nombre_serie_5 != \"\")\n        								            {\n        								                $NombreVisibleCampo=$registro_consulta[$campo_etiqueta_serie_5];\n        								                $ValorVisibleCampo=$registro_consulta[$campo_valor_serie_5];\n                                                        $cadena_datos.= \",\n                                                        \".$nombre_serie_5.\": \".$ValorVisibleCampo;\n        								            }\n                                                $cadena_datos.= \"\n                                                    },\";\n                                            }\n                                        //Crea series de datos para graficos tipo dona\n                                        if ($TipoObjetoGraficoMorris==\"Morris.Donut\")\n                                            {\n                                                $cadena_datos.= \"\n                                                    {\";\n        								                $NombreVisibleCampo=$registro_consulta[$campo_etiqueta_serie_1];\n        								                $ValorVisibleCampo=$registro_consulta[$campo_valor_serie_1];\n                                                        $cadena_datos.= \"\n                                                        label: \'\".$NombreVisibleCampo.\"\', value: \".$ValorVisibleCampo;\n                                                $cadena_datos.= \"\n                                                    },\";\n                                            }\n                                    }\n                                $cadena_datos = substr($cadena_datos, 0, -1);\n                                if ($cadena_datos!=\"\")\n                                    echo $cadena_datos;\n                                if ($cadena_datos==\"\")\n                                    $PCO_InformesGraficosSinDatos.=\'marco-informe-grafico-ID\'.$registro_informe[\"id\"].\'|\'; //Si no tiene datos lo lleva al arreglo para cambiar luego su valor html y evitar el NaN\n                            ?>\n                            ],\n                            xkey: [\'etiqueta_ejex\'],\n                            ykeys: [<?php echo $CadenaLlaves; ?>],\n                            labels: [<?php echo $CadenaEtiquetas; ?>],\n                            pointSize: 2,\n                            hideHover: \'auto\',\n                            resize: true,\n                            stacked: <?php echo $barra_apilada; ?>,\n                            preUnits: \'<?php echo $unidades_pre; ?>\',\n                            postUnits: \'<?php echo $unidades_pos; ?>\',\n                            grid: <?php echo $ocultar_grilla; ?>,\n                            horizontal: <?php echo $barras_horizontales; ?>,\n                            <?php echo $cadena_arreglo_colores; ?>\n\n                            dataLabels: <?php echo $presentar_datalabels; ?>,\n                            <?php echo $cadenaubicacion_datalabels; ?>  // EJ: dataLabelsPosition: \'outside\', //inside\n\n                            showPercentage: <?php echo $presentar_porcentaje; ?>,\n                            donutType: \'<?php echo $tipo_grafico_circular; ?>\',\n                            <?php\n                                //Agrega las unidades para los tipos de grafico Donut\n                                if ($TipoObjetoGraficoMorris==\"Morris.Donut\")\n                                    echo \"formatter: function (value, data) { return \'$unidades_pre\'+ (value) + \'$unidades_pos\'; },\";\n                            ?>\n                            axes: <?php echo $ocultar_ejes; ?>\n                        });\n                    });\n                </script>\n            <?php\n			// Si se ha definido un tamano fijo entonces cierra el marco\n			if ($registro_informe[\"ancho\"]!=\"\" && $registro_informe[\"alto\"]!=\"\" && $registro_informe[\"ancho\"]!=\"0\" && $registro_informe[\"alto\"]!=\"0\")\n				echo \'</DIV>\';\n\n			} // Fin si informe es G (grafico)\n\n		if ($en_ventana) PCO_CerrarVentana();\n\n        //Si el usuario es admin le muestra el query generador.\n        if (PCO_EsAdministrador(@$PCOSESS_LoginUsuario) && $ModoDepuracion)\n            PCO_Mensaje($MULTILANG_MonCommSQL, $consulta, \'\', \'fa fa-fw fa-2x fa-database\', \'alert alert-info alert-dismissible \');\n\n		//Ejecuta script POST para el informe\n		if ($CadenaPOSTScriptPHP!=\"\")\n		    {\n		        PCO_EvaluarCodigo($CadenaPOSTScriptPHP,1,\"Detalles: POST-Code Rep ID=\".$informe);\n		    }\n\n		//Ejecuta script POST para el informe llevandolo a la misma cadena de formularios que se agrega en marco_abajo\n		if ($JavaScriptInforme!=\"\")\n		    {\n        	    $PCO_FuncionesJSInternasFORM .= \'<script type=\"text/javascript\">\n        	    \'.$JavaScriptInforme.\'\n        		</script>\';\n        	}\n	}','A'),(1162,'mod/app_ventas/index.php','2025-02-07 15:05:00','rafael',247,11089,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $ventaMecanico = PCO_EjecutarSQL(\"\n        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)\n        FROM app_ventas_detalle vd, app_ventas v, app_productos p\n        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = \'$id\' AND v.id_mecanico <> 0 GROUP BY vd.id_venta\n    \")->fetchColumn();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico=\'$ventaMecanico\' WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje\");\n        calcularTotalVenta($id);\n        \n        /* $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}\n\nif($PCO_Accion == \"VENTA_generarLiquidacionMecanicos\") {\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social\n        FROM app_mecanicos m,app_ventas v\n        WHERE m.id = v.id_mecanico AND v.fecha >= \'$fecha_inicio 00:00:00\' AND v.fecha <= \'$fecha_fin 23:59:59\' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0\n        GROUP BY v.id_mecanico\n    \")->fetchAll();\n    foreach ($ventas as $venta) {\n        $valor_novedad = PCO_EjecutarSQL(\"\n            SELECT  \n                SUM(case when tipo_novedad=\'Abonar\' then valor_novedad else 0 end) as abonar,\n                SUM(case when tipo_novedad=\'Debitar\' then valor_novedad else 0 end) as debitar\n            FROM app_novedades_mecanicos\n            WHERE fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\'\n                AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n            GROUP BY id_mecanico\n        \")->fetch();\n\n        PCO_EjecutarSQLUnaria(\"\n            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) \",\n            $venta[\"id_mecanico\"].\"$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_\".$venta[\"Total\"].\"$_SeparadorCampos_\".$valor_novedad[\'abonar\'].\"$_SeparadorCampos_\".$valor_novedad[\'debitar\'].\"$_SeparadorCampos_\".$venta[\"seguridad_social\"].\"$_SeparadorCampos_$PCOSESS_LoginUsuario\"\n        );\n        \n        $idLiq = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_liquidacion_mecanicos_enc\n            WHERE id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND fecha=\'$PCO_FechaOperacionGuiones\'\n            ORDER BY id desc LIMIT 1\n        \")->fetchColumn();\n\n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_novedades_mecanicos \n            SET id_liquidacion=\'$idLiq\'\n            WHERE \n                fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\' AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n        \n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_ventas \n            SET id_liquidacion=\'$idLiq\'\n            WHERE app_ventas.fecha >= \'$fecha_inicio 00:00:00\' AND app_ventas.fecha <= \'$fecha_fin 23:59:59\' AND app_ventas.estado = 1 AND id_mecanico=\'\".$venta[\'id_mecanico\'].\" AND id_liquidacion=0\n        \");\n    }\n    PCO_CargarFormulario(14);\n}\n\nif($PCO_Accion == \"VENTAS_verLiquidacion\") {\n    $liq = PCO_EjecutarSQL(\"\n        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,\n            CONCAT(\'$\',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) total\n        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m \n        WHERE l.id_mecanico = m.id AND l.id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.*, c.nombre_completo\n        FROM app_ventas v, app_clientes c\n        WHERE v.id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n\n    $novedades = PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_novedades_mecanicos\n        WHERE id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n    \n    include \'liquidacion_mecanicos.php\';\n}','A'),(1163,'mod/app_ventas/index.php','2025-02-07 15:08:00','rafael',247,11089,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $ventaMecanico = PCO_EjecutarSQL(\"\n        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)\n        FROM app_ventas_detalle vd, app_ventas v, app_productos p\n        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = \'$id\' AND v.id_mecanico <> 0 GROUP BY vd.id_venta\n    \")->fetchColumn();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico=\'$ventaMecanico\' WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje\");\n        calcularTotalVenta($id);\n        \n        /* $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}\n\nif($PCO_Accion == \"VENTA_generarLiquidacionMecanicos\") {\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social\n        FROM app_mecanicos m,app_ventas v\n        WHERE m.id = v.id_mecanico AND v.fecha >= \'$fecha_inicio 00:00:00\' AND v.fecha <= \'$fecha_fin 23:59:59\' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0\n        GROUP BY v.id_mecanico\n    \")->fetchAll();\n    foreach ($ventas as $venta) {\n        $valor_novedad = PCO_EjecutarSQL(\"\n            SELECT  \n                SUM(case when tipo_novedad=\'Abonar\' then valor_novedad else 0 end) as abonar,\n                SUM(case when tipo_novedad=\'Debitar\' then valor_novedad else 0 end) as debitar\n            FROM app_novedades_mecanicos\n            WHERE fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\'\n                AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n            GROUP BY id_mecanico\n        \")->fetch();\n\n        PCO_EjecutarSQLUnaria(\"\n            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) \",\n            $venta[\"id_mecanico\"].\"$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_\".$venta[\"Total\"].\"$_SeparadorCampos_\".$valor_novedad[\'abonar\'].\"$_SeparadorCampos_\".$valor_novedad[\'debitar\'].\"$_SeparadorCampos_\".$venta[\"seguridad_social\"].\"$_SeparadorCampos_$PCOSESS_LoginUsuario\"\n        );\n        \n        $idLiq = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_liquidacion_mecanicos_enc\n            WHERE id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND fecha=\'$PCO_FechaOperacionGuiones\'\n            ORDER BY id desc LIMIT 1\n        \")->fetchColumn();\n\n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_novedades_mecanicos \n            SET id_liquidacion=\'$idLiq\'\n            WHERE \n                fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\' AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n        \n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_ventas \n            SET id_liquidacion=\'$idLiq\'\n            WHERE app_ventas.fecha >= \'$fecha_inicio 00:00:00\' AND app_ventas.fecha <= \'$fecha_fin 23:59:59\' AND app_ventas.estado = 1 AND id_mecanico=\'\".$venta[\'id_mecanico\'].\" AND id_liquidacion=0\n        \");\n    }\n    PCO_CargarFormulario(14);\n}\n\nif($PCO_Accion == \"VENTAS_verLiquidacion\") {\n    $liq = PCO_EjecutarSQL(\"\n        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,\n            CONCAT(\'$\',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) total\n        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m \n        WHERE l.id_mecanico = m.id AND l.id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.*, c.nombre_completo\n        FROM app_ventas v, app_clientes c\n        WHERE v.id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n\n    $novedades = PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_novedades_mecanicos\n        WHERE id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n    \n    include \'liquidacion_mecanicos.php\';\n}','A'),(1164,'mod/app_ventas/index.php','2025-02-07 15:09:00','rafael',247,11127,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $ventaMecanico = PCO_EjecutarSQL(\"\n        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)\n        FROM app_ventas_detalle vd, app_ventas v, app_productos p\n        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = \'$id\' AND v.id_mecanico <> 0 GROUP BY vd.id_venta\n    \")->fetchColumn();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico=\'$ventaMecanico\' WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje\");\n        calcularTotalVenta($id);\n        \n        /* $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}\n\nif($PCO_Accion == \"VENTA_generarLiquidacionMecanicos\") {\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social\n        FROM app_mecanicos m,app_ventas v\n        WHERE m.id = v.id_mecanico AND v.fecha >= \'$fecha_inicio 00:00:00\' AND v.fecha <= \'$fecha_fin 23:59:59\' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0\n        GROUP BY v.id_mecanico\n    \")->fetchAll();\n    foreach ($ventas as $venta) {\n        $valor_novedad = PCO_EjecutarSQL(\"\n            SELECT  \n                SUM(case when tipo_novedad=\'Abonar\' then valor_novedad else 0 end) as abonar,\n                SUM(case when tipo_novedad=\'Debitar\' then valor_novedad else 0 end) as debitar\n            FROM app_novedades_mecanicos\n            WHERE fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\'\n                AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n            GROUP BY id_mecanico\n        \")->fetch();\n\n        PCO_EjecutarSQLUnaria(\"\n            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) \",\n            $venta[\"id_mecanico\"].\"$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_\".$venta[\"Total\"].\"$_SeparadorCampos_\".$valor_novedad[\'abonar\'].\"$_SeparadorCampos_\".$valor_novedad[\'debitar\'].\"$_SeparadorCampos_\".$venta[\"seguridad_social\"].\"$_SeparadorCampos_$PCOSESS_LoginUsuario\"\n        );\n        \n        $idLiq = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_liquidacion_mecanicos_enc\n            WHERE id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND fecha=\'$PCO_FechaOperacionGuiones\' and usuario = \'$PCOSESS_LoginUsuario\'\n            ORDER BY id desc LIMIT 1\n        \")->fetchColumn();\n\n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_novedades_mecanicos \n            SET id_liquidacion=\'$idLiq\'\n            WHERE \n                fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\' AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n        \n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_ventas \n            SET id_liquidacion=\'$idLiq\'\n            WHERE app_ventas.fecha >= \'$fecha_inicio 00:00:00\' AND app_ventas.fecha <= \'$fecha_fin 23:59:59\' AND app_ventas.estado = 1 AND id_mecanico=\'\".$venta[\'id_mecanico\'].\" AND id_liquidacion=0\n        \");\n    }\n    PCO_CargarFormulario(14);\n}\n\nif($PCO_Accion == \"VENTAS_verLiquidacion\") {\n    $liq = PCO_EjecutarSQL(\"\n        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,\n            CONCAT(\'$\',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) total\n        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m \n        WHERE l.id_mecanico = m.id AND l.id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.*, c.nombre_completo\n        FROM app_ventas v, app_clientes c\n        WHERE v.id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n\n    $novedades = PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_novedades_mecanicos\n        WHERE id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n    \n    include \'liquidacion_mecanicos.php\';\n}','A'),(1165,'mod/app_ventas/index.php','2025-02-07 15:09:00','rafael',247,11127,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $ventaMecanico = PCO_EjecutarSQL(\"\n        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)\n        FROM app_ventas_detalle vd, app_ventas v, app_productos p\n        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = \'$id\' AND v.id_mecanico <> 0 GROUP BY vd.id_venta\n    \")->fetchColumn();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico=\'$ventaMecanico\' WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje\");\n        calcularTotalVenta($id);\n        \n        /* $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}\n\nif($PCO_Accion == \"VENTA_generarLiquidacionMecanicos\") {\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social\n        FROM app_mecanicos m,app_ventas v\n        WHERE m.id = v.id_mecanico AND v.fecha >= \'$fecha_inicio 00:00:00\' AND v.fecha <= \'$fecha_fin 23:59:59\' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0\n        GROUP BY v.id_mecanico\n    \")->fetchAll();\n    foreach ($ventas as $venta) {\n        $valor_novedad = PCO_EjecutarSQL(\"\n            SELECT  \n                SUM(case when tipo_novedad=\'Abonar\' then valor_novedad else 0 end) as abonar,\n                SUM(case when tipo_novedad=\'Debitar\' then valor_novedad else 0 end) as debitar\n            FROM app_novedades_mecanicos\n            WHERE fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\'\n                AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n            GROUP BY id_mecanico\n        \")->fetch();\n\n        PCO_EjecutarSQLUnaria(\"\n            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) \",\n            $venta[\"id_mecanico\"].\"$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_\".$venta[\"Total\"].\"$_SeparadorCampos_\".$valor_novedad[\'abonar\'].\"$_SeparadorCampos_\".$valor_novedad[\'debitar\'].\"$_SeparadorCampos_\".$venta[\"seguridad_social\"].\"$_SeparadorCampos_$PCOSESS_LoginUsuario\"\n        );\n        \n        $idLiq = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_liquidacion_mecanicos_enc\n            WHERE id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND fecha=\'$PCO_FechaOperacionGuiones\' and usuario = \'$PCOSESS_LoginUsuario\'\n            ORDER BY id desc LIMIT 1\n        \")->fetchColumn();\n\n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_novedades_mecanicos \n            SET id_liquidacion=\'$idLiq\'\n            WHERE \n                fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\' AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n        \n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_ventas \n            SET id_liquidacion=\'$idLiq\'\n            WHERE app_ventas.fecha >= \'$fecha_inicio 00:00:00\' AND app_ventas.fecha <= \'$fecha_fin 23:59:59\' AND app_ventas.estado = 1 AND id_mecanico=\'\".$venta[\'id_mecanico\'].\" AND id_liquidacion=0\n        \");\n    }\n    PCO_CargarFormulario(14);\n}\n\nif($PCO_Accion == \"VENTAS_verLiquidacion\") {\n    $liq = PCO_EjecutarSQL(\"\n        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,\n            CONCAT(\'$\',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) total\n        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m \n        WHERE l.id_mecanico = m.id AND l.id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.*, c.nombre_completo\n        FROM app_ventas v, app_clientes c\n        WHERE v.id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n\n    $novedades = PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_novedades_mecanicos\n        WHERE id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n    \n    include \'liquidacion_mecanicos.php\';\n}','A'),(1166,'mod/app_ventas/index.php','2025-02-07 15:09:00','rafael',247,11127,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $ventaMecanico = PCO_EjecutarSQL(\"\n        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)\n        FROM app_ventas_detalle vd, app_ventas v, app_productos p\n        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = \'$id\' AND v.id_mecanico <> 0 GROUP BY vd.id_venta\n    \")->fetchColumn();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico=\'$ventaMecanico\' WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje\");\n        calcularTotalVenta($id);\n        \n        /* $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}\n\nif($PCO_Accion == \"VENTA_generarLiquidacionMecanicos\") {\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social\n        FROM app_mecanicos m,app_ventas v\n        WHERE m.id = v.id_mecanico AND v.fecha >= \'$fecha_inicio 00:00:00\' AND v.fecha <= \'$fecha_fin 23:59:59\' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0\n        GROUP BY v.id_mecanico\n    \")->fetchAll();\n    foreach ($ventas as $venta) {\n        $valor_novedad = PCO_EjecutarSQL(\"\n            SELECT  \n                SUM(case when tipo_novedad=\'Abonar\' then valor_novedad else 0 end) as abonar,\n                SUM(case when tipo_novedad=\'Debitar\' then valor_novedad else 0 end) as debitar\n            FROM app_novedades_mecanicos\n            WHERE fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\'\n                AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n            GROUP BY id_mecanico\n        \")->fetch();\n\n        PCO_EjecutarSQLUnaria(\"\n            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) \",\n            $venta[\"id_mecanico\"].\"$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_\".$venta[\"Total\"].\"$_SeparadorCampos_\".$valor_novedad[\'abonar\'].\"$_SeparadorCampos_\".$valor_novedad[\'debitar\'].\"$_SeparadorCampos_\".$venta[\"seguridad_social\"].\"$_SeparadorCampos_$PCOSESS_LoginUsuario\"\n        );\n        \n        $idLiq = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_liquidacion_mecanicos_enc\n            WHERE id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND fecha=\'$PCO_FechaOperacionGuiones\' AND usuario = \'$PCOSESS_LoginUsuario\'\n            ORDER BY id desc LIMIT 1\n        \")->fetchColumn();\n\n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_novedades_mecanicos \n            SET id_liquidacion=\'$idLiq\'\n            WHERE \n                fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\' AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n        \n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_ventas \n            SET id_liquidacion=\'$idLiq\'\n            WHERE app_ventas.fecha >= \'$fecha_inicio 00:00:00\' AND app_ventas.fecha <= \'$fecha_fin 23:59:59\' AND app_ventas.estado = 1 AND id_mecanico=\'\".$venta[\'id_mecanico\'].\" AND id_liquidacion=0\n        \");\n    }\n    PCO_CargarFormulario(14);\n}\n\nif($PCO_Accion == \"VENTAS_verLiquidacion\") {\n    $liq = PCO_EjecutarSQL(\"\n        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,\n            CONCAT(\'$\',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) total\n        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m \n        WHERE l.id_mecanico = m.id AND l.id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.*, c.nombre_completo\n        FROM app_ventas v, app_clientes c\n        WHERE v.id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n\n    $novedades = PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_novedades_mecanicos\n        WHERE id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n    \n    include \'liquidacion_mecanicos.php\';\n}','A'),(1167,'mod/app_ventas/index.php','2025-02-07 15:15:00','rafael',247,11128,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $ventaMecanico = PCO_EjecutarSQL(\"\n        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)\n        FROM app_ventas_detalle vd, app_ventas v, app_productos p\n        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = \'$id\' AND v.id_mecanico <> 0 GROUP BY vd.id_venta\n    \")->fetchColumn();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico=\'$ventaMecanico\' WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje\");\n        calcularTotalVenta($id);\n        \n        /* $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}\n\nif($PCO_Accion == \"VENTA_generarLiquidacionMecanicos\") {\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social\n        FROM app_mecanicos m,app_ventas v\n        WHERE m.id = v.id_mecanico AND v.fecha >= \'$fecha_inicio 00:00:00\' AND v.fecha <= \'$fecha_fin 23:59:59\' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0\n        GROUP BY v.id_mecanico\n    \")->fetchAll();\n    foreach ($ventas as $venta) {\n        $valor_novedad = PCO_EjecutarSQL(\"\n            SELECT  \n                SUM(case when tipo_novedad=\'Abonar\' then valor_novedad else 0 end) as abonar,\n                SUM(case when tipo_novedad=\'Debitar\' then valor_novedad else 0 end) as debitar\n            FROM app_novedades_mecanicos\n            WHERE fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\'\n                AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n            GROUP BY id_mecanico\n        \")->fetch();\n\n        PCO_EjecutarSQLUnaria(\"\n            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) \",\n            $venta[\"id_mecanico\"].\"$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_\".$venta[\"Total\"].\"$_SeparadorCampos_\".$valor_novedad[\'abonar\'].\"$_SeparadorCampos_\".$valor_novedad[\'debitar\'].\"$_SeparadorCampos_\".$venta[\"seguridad_social\"].\"$_SeparadorCampos_$PCOSESS_LoginUsuario\"\n        );\n        \n        $idLiq = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_liquidacion_mecanicos_enc\n            WHERE id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND fecha=\'$PCO_FechaOperacionGuiones\' AND usuario = \'$PCOSESS_LoginUsuario\'\n            ORDER BY id desc LIMIT 1\n        \")->fetchColumn();\n\n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_novedades_mecanicos \n            SET id_liquidacion=\'$idLiq\'\n            WHERE \n                fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\' AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n        \n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_ventas \n            SET id_liquidacion=\'$idLiq\'\n            WHERE app_ventas.fecha >= \'$fecha_inicio 00:00:00\' AND app_ventas.fecha <= \'$fecha_fin 23:59:59\' AND app_ventas.estado = 1 AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n    }\n    PCO_CargarFormulario(14);\n}\n\nif($PCO_Accion == \"VENTAS_verLiquidacion\") {\n    $liq = PCO_EjecutarSQL(\"\n        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,\n            CONCAT(\'$\',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) total\n        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m \n        WHERE l.id_mecanico = m.id AND l.id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.*, c.nombre_completo\n        FROM app_ventas v, app_clientes c\n        WHERE v.id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n\n    $novedades = PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_novedades_mecanicos\n        WHERE id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n    \n    include \'liquidacion_mecanicos.php\';\n}','A'),(1168,'mod/app_ventas/index.php','2025-02-07 15:21:00','rafael',247,11150,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $ventaMecanico = PCO_EjecutarSQL(\"\n        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)\n        FROM app_ventas_detalle vd, app_ventas v, app_productos p\n        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = \'$id\' AND v.id_mecanico <> 0 GROUP BY vd.id_venta\n    \")->fetchColumn();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico=\'$ventaMecanico\' WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje\");\n        calcularTotalVenta($id);\n        \n        /* $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}\n\nif($PCO_Accion == \"VENTA_generarLiquidacionMecanicos\") {\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social\n        FROM app_mecanicos m,app_ventas v\n        WHERE m.id = v.id_mecanico AND v.fecha >= \'$fecha_inicio 00:00:00\' AND v.fecha <= \'$fecha_fin 23:59:59\' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0\n        GROUP BY v.id_mecanico\n    \")->fetchAll();\n    foreach ($ventas as $venta) {\n        $valor_novedad = PCO_EjecutarSQL(\"\n            SELECT  \n                SUM(case when tipo_novedad=\'Abonar\' then valor_novedad else 0 end) as abonar,\n                SUM(case when tipo_novedad=\'Debitar\' then valor_novedad else 0 end) as debitar\n            FROM app_novedades_mecanicos\n            WHERE fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\'\n                AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n            GROUP BY id_mecanico\n        \")->fetch();\n\n        PCO_EjecutarSQLUnaria(\"\n            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) \",\n            $venta[\"id_mecanico\"].\"$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_\".$venta[\"Total\"].\"$_SeparadorCampos_\".$valor_novedad[\'abonar\'].\"$_SeparadorCampos_\".$valor_novedad[\'debitar\'].\"$_SeparadorCampos_\".$venta[\"seguridad_social\"].\"$_SeparadorCampos_$PCOSESS_LoginUsuario\"\n        );\n        \n        $idLiq = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_liquidacion_mecanicos_enc\n            WHERE id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND fecha=\'$PCO_FechaOperacionGuiones\' AND usuario = \'$PCOSESS_LoginUsuario\'\n            ORDER BY id desc LIMIT 1\n        \")->fetchColumn();\n\n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_novedades_mecanicos \n            SET id_liquidacion=\'$idLiq\'\n            WHERE \n                fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\' AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n        \n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_ventas \n            SET id_liquidacion=\'$idLiq\'\n            WHERE app_ventas.fecha >= \'$fecha_inicio 00:00:00\' AND app_ventas.fecha <= \'$fecha_fin 23:59:59\' AND app_ventas.estado = 1 AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n    }\n    PCO_CargarFormulario(14);\n}\n\nif($PCO_Accion == \"VENTAS_verLiquidacion\") {\n    $liq = PCO_EjecutarSQL(\"\n        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,\n            CONCAT(\'$\',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) total\n        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m \n        WHERE l.id_mecanico = m.id AND l.id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.*, c.nombre_completo\n        FROM app_ventas v, app_clientes c\n        WHERE v.id_cliente=c.id AND v.id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n\n    $novedades = PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_novedades_mecanicos\n        WHERE id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n    \n    include \'liquidacion_mecanicos.php\';\n}','A'),(1169,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:25:00','rafael',447,10677,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <!--<tr>\n            <td><span>SUBTOTAL</span></td>\n            <th><span data-prefix>$</span><span>\' . number_format($factura[\"valor_sin_recargo\"], 0, \',\', \'.\') . \'</span></th>\n         </tr>-->\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1170,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:26:00','rafael',453,10914,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <!--<tr>\n            <td><span>SUBTOTAL</span></td>\n            <th><span data-prefix>$</span><span>\' . number_format($factura[\"valor_sin_recargo\"], 0, \',\', \'.\') . \'</span></th>\n         </tr>-->\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1171,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:27:00','rafael',454,10923,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <!--<tr>\n            <td><span>SUBTOTAL</span></td>\n            <th><span data-prefix>$</span><span>\' . number_format($factura[\"valor_sin_recargo\"], 0, \',\', \'.\') . \'</span></th>\n         </tr>-->\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1172,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:27:00','rafael',454,10923,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <!--<tr>\n            <td><span>SUBTOTAL</span></td>\n            <th><span data-prefix>$</span><span>\' . number_format($factura[\"valor_sin_recargo\"], 0, \',\', \'.\') . \'</span></th>\n         </tr>-->\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1173,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:27:00','rafael',455,10932,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <!--<tr>\n            <td><span>SUBTOTAL</span></td>\n            <th><span data-prefix>$</span><span>\' . number_format($factura[\"valor_sin_recargo\"], 0, \',\', \'.\') . \'</span></th>\n         </tr>-->\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1174,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:27:00','rafael',455,10932,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <!--<tr>\n            <td><span>SUBTOTAL</span></td>\n            <th><span data-prefix>$</span><span>\' . number_format($factura[\"valor_sin_recargo\"], 0, \',\', \'.\') . \'</span></th>\n         </tr>-->\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1175,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:27:00','rafael',454,10923,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <!--<tr>\n            <td><span>SUBTOTAL</span></td>\n            <th><span data-prefix>$</span><span>\' . number_format($factura[\"valor_sin_recargo\"], 0, \',\', \'.\') . \'</span></th>\n         </tr>-->\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1176,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:28:00','rafael',455,10931,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n    <br>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <!--<tr>\n            <td><span>SUBTOTAL</span></td>\n            <th><span data-prefix>$</span><span>\' . number_format($factura[\"valor_sin_recargo\"], 0, \',\', \'.\') . \'</span></th>\n         </tr>-->\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1177,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:29:00','rafael',456,10927,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$sub_total = $liq[\'valor_venta\'];\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n    <br>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <tr>\n            <td><span>SUBTOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $sub_total ?></span></th>\n         </tr>\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1178,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:30:00','rafael',456,10927,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$sub_total = $liq[\'valor_venta\'];\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n    <br>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <tr>\n            <td><span>SUBTOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $sub_total ?></span></th>\n         </tr>\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1179,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:30:00','rafael',456,10978,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$sub_total = $liq[\'valor_venta\'];\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n    <br>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <tr>\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>SUBTOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $sub_total ?></span></th>\n         </tr>\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1180,'mod/app_ventas/index.php','2025-02-07 15:31:00','rafael',248,11217,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $ventaMecanico = PCO_EjecutarSQL(\"\n        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)\n        FROM app_ventas_detalle vd, app_ventas v, app_productos p\n        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = \'$id\' AND v.id_mecanico <> 0 GROUP BY vd.id_venta\n    \")->fetchColumn();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico=\'$ventaMecanico\' WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje\");\n        calcularTotalVenta($id);\n        \n        /* $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}\n\nif($PCO_Accion == \"VENTA_generarLiquidacionMecanicos\") {\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social\n        FROM app_mecanicos m,app_ventas v\n        WHERE m.id = v.id_mecanico AND v.fecha >= \'$fecha_inicio 00:00:00\' AND v.fecha <= \'$fecha_fin 23:59:59\' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0\n        GROUP BY v.id_mecanico\n    \")->fetchAll();\n    foreach ($ventas as $venta) {\n        $valor_novedad = PCO_EjecutarSQL(\"\n            SELECT  \n                SUM(case when tipo_novedad=\'Abonar\' then valor_novedad else 0 end) as abonar,\n                SUM(case when tipo_novedad=\'Debitar\' then valor_novedad else 0 end) as debitar\n            FROM app_novedades_mecanicos\n            WHERE fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\'\n                AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n            GROUP BY id_mecanico\n        \")->fetch();\n\n        PCO_EjecutarSQLUnaria(\"\n            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) \",\n            $venta[\"id_mecanico\"].\"$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_\".$venta[\"Total\"].\"$_SeparadorCampos_\".$valor_novedad[\'abonar\'].\"$_SeparadorCampos_\".$valor_novedad[\'debitar\'].\"$_SeparadorCampos_\".$venta[\"seguridad_social\"].\"$_SeparadorCampos_$PCOSESS_LoginUsuario\"\n        );\n        \n        $idLiq = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_liquidacion_mecanicos_enc\n            WHERE id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND fecha=\'$PCO_FechaOperacionGuiones\' AND usuario = \'$PCOSESS_LoginUsuario\'\n            ORDER BY id desc LIMIT 1\n        \")->fetchColumn();\n\n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_novedades_mecanicos \n            SET id_liquidacion=\'$idLiq\'\n            WHERE \n                fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\' AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n        \n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_ventas \n            SET id_liquidacion=\'$idLiq\'\n            WHERE app_ventas.fecha >= \'$fecha_inicio 00:00:00\' AND app_ventas.fecha <= \'$fecha_fin 23:59:59\' AND app_ventas.estado = 1 AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n    }\n    PCO_CargarFormulario(14);\n}\n\nif($PCO_Accion == \"VENTAS_verLiquidacion\") {\n    $liq = PCO_EjecutarSQL(\"\n        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,\n            CONCAT(\'$\',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) total,\n            CONCAT(\'$\',FORMAT(l.valor_venta,2,\'de_DE\')) subTotal\n        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m \n        WHERE l.id_mecanico = m.id AND l.id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.*, c.nombre_completo\n        FROM app_ventas v, app_clientes c\n        WHERE v.id_cliente=c.id AND v.id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n\n    $novedades = PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_novedades_mecanicos\n        WHERE id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n    \n    include \'liquidacion_mecanicos.php\';\n}','A'),(1181,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:31:00','rafael',456,10978,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$sub_total = $liq[\'subTotal\'];\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n    <br>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <tr>\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>SUBTOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $sub_total ?></span></th>\n         </tr>\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1182,'mod/app_ventas/index.php','2025-02-07 15:32:00','rafael',249,11318,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $ventaMecanico = PCO_EjecutarSQL(\"\n        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)\n        FROM app_ventas_detalle vd, app_ventas v, app_productos p\n        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = \'$id\' AND v.id_mecanico <> 0 GROUP BY vd.id_venta\n    \")->fetchColumn();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico=\'$ventaMecanico\' WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje\");\n        calcularTotalVenta($id);\n        \n        /* $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}\n\nif($PCO_Accion == \"VENTA_generarLiquidacionMecanicos\") {\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social\n        FROM app_mecanicos m,app_ventas v\n        WHERE m.id = v.id_mecanico AND v.fecha >= \'$fecha_inicio 00:00:00\' AND v.fecha <= \'$fecha_fin 23:59:59\' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0\n        GROUP BY v.id_mecanico\n    \")->fetchAll();\n    foreach ($ventas as $venta) {\n        $valor_novedad = PCO_EjecutarSQL(\"\n            SELECT  \n                SUM(case when tipo_novedad=\'Abonar\' then valor_novedad else 0 end) as abonar,\n                SUM(case when tipo_novedad=\'Debitar\' then valor_novedad else 0 end) as debitar\n            FROM app_novedades_mecanicos\n            WHERE fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\'\n                AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n            GROUP BY id_mecanico\n        \")->fetch();\n\n        PCO_EjecutarSQLUnaria(\"\n            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) \",\n            $venta[\"id_mecanico\"].\"$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_\".$venta[\"Total\"].\"$_SeparadorCampos_\".$valor_novedad[\'abonar\'].\"$_SeparadorCampos_\".$valor_novedad[\'debitar\'].\"$_SeparadorCampos_\".$venta[\"seguridad_social\"].\"$_SeparadorCampos_$PCOSESS_LoginUsuario\"\n        );\n        \n        $idLiq = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_liquidacion_mecanicos_enc\n            WHERE id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND fecha=\'$PCO_FechaOperacionGuiones\' AND usuario = \'$PCOSESS_LoginUsuario\'\n            ORDER BY id desc LIMIT 1\n        \")->fetchColumn();\n\n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_novedades_mecanicos \n            SET id_liquidacion=\'$idLiq\'\n            WHERE \n                fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\' AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n        \n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_ventas \n            SET id_liquidacion=\'$idLiq\'\n            WHERE app_ventas.fecha >= \'$fecha_inicio 00:00:00\' AND app_ventas.fecha <= \'$fecha_fin 23:59:59\' AND app_ventas.estado = 1 AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n    }\n    PCO_CargarFormulario(14);\n}\n\nif($PCO_Accion == \"VENTAS_verLiquidacion\") {\n    $liq = PCO_EjecutarSQL(\"\n        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,\n            CONCAT(\'$\',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) total,\n            CONCAT(\'$\',FORMAT(l.valor_venta,2,\'de_DE\')) subTotal,\n            CONCAT(\'$\',FORMAT((l.valor_novedad_debitar + l.seguridad_social),2,\'de_DE\')) otrosCostos\n        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m \n        WHERE l.id_mecanico = m.id AND l.id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.*, c.nombre_completo\n        FROM app_ventas v, app_clientes c\n        WHERE v.id_cliente=c.id AND v.id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n\n    $novedades = PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_novedades_mecanicos\n        WHERE id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n    \n    include \'liquidacion_mecanicos.php\';\n}','A'),(1183,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:33:00','rafael',461,11240,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$otrosCostos = $liq[\'otrosCostos\'];\n$sub_total = $liq[\'subTotal\'];\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n    <br>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <tr>\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>SUBTOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $sub_total ?></span></th>\n         </tr>\n         <tr>\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>Total cobros</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $otrosCostos ?></span></th>\n         </tr>\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1184,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:33:00','rafael',461,11240,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$otrosCostos = $liq[\'otrosCostos\'];\n$sub_total = $liq[\'subTotal\'];\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n    <br>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <tr>\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>SUBTOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $sub_total ?></span></th>\n         </tr>\n         <tr>\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL COBROS</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $otrosCostos ?></span></th>\n         </tr>\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1185,'mod/app_ventas/index.php','2025-02-07 15:34:00','rafael',249,11343,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $ventaMecanico = PCO_EjecutarSQL(\"\n        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)\n        FROM app_ventas_detalle vd, app_ventas v, app_productos p\n        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = \'$id\' AND v.id_mecanico <> 0 GROUP BY vd.id_venta\n    \")->fetchColumn();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico=\'$ventaMecanico\' WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje\");\n        calcularTotalVenta($id);\n        \n        /* $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}\n\nif($PCO_Accion == \"VENTA_generarLiquidacionMecanicos\") {\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social\n        FROM app_mecanicos m,app_ventas v\n        WHERE m.id = v.id_mecanico AND v.fecha >= \'$fecha_inicio 00:00:00\' AND v.fecha <= \'$fecha_fin 23:59:59\' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0\n        GROUP BY v.id_mecanico\n    \")->fetchAll();\n    foreach ($ventas as $venta) {\n        $valor_novedad = PCO_EjecutarSQL(\"\n            SELECT  \n                SUM(case when tipo_novedad=\'Abonar\' then valor_novedad else 0 end) as abonar,\n                SUM(case when tipo_novedad=\'Debitar\' then valor_novedad else 0 end) as debitar\n            FROM app_novedades_mecanicos\n            WHERE fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\'\n                AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n            GROUP BY id_mecanico\n        \")->fetch();\n\n        PCO_EjecutarSQLUnaria(\"\n            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) \",\n            $venta[\"id_mecanico\"].\"$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_\".$venta[\"Total\"].\"$_SeparadorCampos_\".$valor_novedad[\'abonar\'].\"$_SeparadorCampos_\".$valor_novedad[\'debitar\'].\"$_SeparadorCampos_\".$venta[\"seguridad_social\"].\"$_SeparadorCampos_$PCOSESS_LoginUsuario\"\n        );\n        \n        $idLiq = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_liquidacion_mecanicos_enc\n            WHERE id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND fecha=\'$PCO_FechaOperacionGuiones\' AND usuario = \'$PCOSESS_LoginUsuario\'\n            ORDER BY id desc LIMIT 1\n        \")->fetchColumn();\n\n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_novedades_mecanicos \n            SET id_liquidacion=\'$idLiq\'\n            WHERE \n                fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\' AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n        \n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_ventas \n            SET id_liquidacion=\'$idLiq\'\n            WHERE app_ventas.fecha >= \'$fecha_inicio 00:00:00\' AND app_ventas.fecha <= \'$fecha_fin 23:59:59\' AND app_ventas.estado = 1 AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n    }\n    PCO_CargarFormulario(14);\n}\n\nif($PCO_Accion == \"VENTAS_verLiquidacion\") {\n    $liq = PCO_EjecutarSQL(\"\n        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,\n            CONCAT(\'$\',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) total,\n            CONCAT(\'$\',FORMAT(l.valor_venta + l.valor_novedad_abonar,2,\'de_DE\')) subTotal,\n            CONCAT(\'$\',FORMAT((l.valor_novedad_debitar + l.seguridad_social),2,\'de_DE\')) otrosCostos\n        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m \n        WHERE l.id_mecanico = m.id AND l.id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.*, c.nombre_completo\n        FROM app_ventas v, app_clientes c\n        WHERE v.id_cliente=c.id AND v.id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n\n    $novedades = PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_novedades_mecanicos\n        WHERE id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n    \n    include \'liquidacion_mecanicos.php\';\n}','A'),(1186,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:35:00','rafael',461,11243,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$otrosCostos = $liq[\'otrosCostos\'];\n$sub_total = $liq[\'subTotal\'];\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n    <br>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <tr>\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>SUBTOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $sub_total ?></span></th>\n         </tr>\n         <tr>\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL COBROS</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo \"-$otrosCostos\" ?></span></th>\n         </tr>\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1187,'mod/app_ventas/liquidacion_mecanicos.php','2025-02-07 15:35:00','rafael',461,11241,'<?php\n\n @session_start();\n\nif(!isset($_SESSION[\'PCOSESS_SesionAbierta\'])) {\n	echo \'<head><title>Error</title><style type=\"text/css\"> body { background-color: #000000; color: #7f7f7f; font-family: sans-serif,helvetica; } </style></head><body><table width=\"100%\" height=\"100%\" border=0><tr><td align=center>&#9827; Acceso no autorizado !</td></tr></table></body>\';\n	die();\n}\n\n$otrosCostos = $liq[\'otrosCostos\'];\n$sub_total = $liq[\'subTotal\'];\n$total = $liq[\'total\'];\n// $codigobarra = $factura[\"codigo_gs1\"]; // \"7709998678439\";\n// $BarcodeParent = \"(415)$codigobarra(8020)\" . $factura[\"id\"] . \"(3900)$totalBr(96)$fechaSinRecargoBr\";\n\n$descargar = 0;\n/* if ($PCO_Accion == \"FACTURAS_descargarFactura\")\n    $descargar = 1; */\n\n?>\n\n<html>\n\n<head>\n   <meta charset=\"utf-8\">\n   <title>Factura</title>\n   <style>\n      * {\n         border: 0;\n         box-sizing: content-box;\n         color: inherit;\n         font-family: Verdana;\n         font-size: inherit;\n         font-style: inherit;\n         font-weight: inherit;\n         line-height: inherit;\n         list-style: none;\n         margin: 0;\n         padding: 0;\n         text-decoration: none;\n         vertical-align: top;\n      }\n\n      /* heading */\n\n      h1 {\n         font: bold 100% sans-serif;\n         letter-spacing: 0.5em;\n         text-align: center;\n         text-transform: uppercase;\n      }\n\n      /* table */\n\n      table {\n         font-size: 75%;\n         table-layout: fixed;\n         width: 100%;\n      }\n\n      table {\n         border-collapse: separate;\n         border-spacing: 3px;\n      }\n\n      th,\n      td {\n         border-width: 1px;\n         padding: 0.5em;\n         position: relative;\n         text-align: center;\n      }\n\n      th,\n      td {\n         border-radius: 0.25em;\n         border-style: solid;\n      }\n\n      th {\n         background: #1f60a0;\n         color: #fff;\n         border-color: #BBB;\n      }\n\n      td {\n         border-color: #DDD;\n      }\n\n      /* page */\n\n      html {\n         font: 16px/1 \"Open Sans\", sans-serif;\n         overflow: auto;\n         padding: 0.5in;\n      }\n\n      html {\n         background: #999;\n         cursor: default;\n      }\n\n      body {\n         box-sizing: border-box;\n         height: 11in;\n         margin: 0 auto;\n         overflow: hidden;\n         padding: 0.5in;\n         width: 8.5in;\n      }\n\n      body {\n         background: #FFF;\n         border-radius: 1px;\n         box-shadow: 0 0 1in -0.25in rgba(0, 0, 0, 0.5);\n      }\n\n      /* header */\n\n      header {\n         margin: 0 0 3em;\n      }\n\n      header:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      header h1 {\n         background: #000;\n         border-radius: 0.25em;\n         color: #FFF;\n         margin: 0 0 1em;\n         padding: 0.5em 0;\n      }\n\n      header address {\n         float: left;\n         font-size: 75%;\n         font-style: normal;\n         line-height: 1.25;\n         margin: 0 1em 1em 0;\n      }\n\n      header address p {\n         margin: 0 0 0.25em;\n      }\n\n      header span,\n      header img {\n         display: block;\n         float: right;\n      }\n\n      header span {\n         margin: 0 0 1em 1em;\n         max-height: 25%;\n         max-width: 60%;\n         position: relative;\n      }\n\n      header img {\n         max-height: 100%;\n         max-width: 100%;\n      }\n\n      header input {\n         cursor: pointer;\n         -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n         height: 100%;\n         left: 0;\n         opacity: 0;\n         position: absolute;\n         top: 0;\n         width: 100%;\n      }\n\n      /* article */\n\n      article,\n      article address,\n      table.meta,\n\n      article:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      article h1 {\n         clip: rect(0 0 0 0);\n         position: absolute;\n      }\n\n      article address {\n         float: left;\n         font-size: 125%;\n      }\n\n      /* table meta & balance */\n\n      table.meta,\n      table.balance {\n         float: right;\n         width: 36%;\n      }\n\n      table.meta:after,\n      table.balance:after {\n         clear: both;\n         content: \"\";\n         display: table;\n      }\n\n      /* table meta */\n\n      table.meta th {\n         width: 40%;\n      }\n\n      table.meta td {\n         width: 60%;\n      }\n\n      table.inventory {\n         margin: 0 0 1.3em;\n      }\n      /* table items */\n\n      table.inventory {\n         clear: both;\n         width: 100%;\n      }\n\n      table.inventory th {\n         font-weight: bold;\n         text-align: center;\n      }\n\n      table.inventory td:nth-child(1) {\n         width: 26%;\n      }\n\n      table.inventory td:nth-child(2) {\n         width: 38%;\n      }\n\n      table.inventory td:nth-child(3) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(4) {\n         text-align: center;\n         width: 12%;\n      }\n\n      table.inventory td:nth-child(5) {\n         text-align: center;\n         width: 12%;\n      }\n\n      /* table balance */\n\n      table.balance th {\n         width: 60%;\n         text-align: center;\n      }\n\n      table.balance td {\n         width: 60%;\n         text-align: center;\n      }\n\n      /* aside */\n\n      aside h1 {\n         border: none;\n         border-width: 0 0 1px;\n         margin: 0 0 1em;\n      }\n\n      aside h1 {\n         border-color: #999;\n         border-bottom-style: solid;\n      }\n\n      /* javascript */\n\n      @media print {\n         * {\n            -webkit-print-color-adjust: exact;\n         }\n\n         html {\n            background: none;\n            padding: 0;\n         }\n\n         body {\n            box-shadow: none;\n            margin: 0;\n         }\n\n         span:empty {\n            display: none;\n         }\n      }\n\n      @page {\n         margin: 0;\n      }\n   </style>\n    <link rel=\"stylesheet\" href=\"inc/pdfLib/all.min.css\">\n    <script type=\"text/javascript\" src=\"inc/pdfLib/html2pdf.bundle.min.js\"></script>\n    <script type=\"text/javascript\" src=\"inc/bwip/bwip-js-min.js\"></script>\n    \n            <!--<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\">-->\n            <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js\"\n              integrity=\"sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==\"\n              crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>-->\n</head>\n<body id=\"Invoices\">\n\n   <article>\n      <BR>\n      <BR>\n      <BR>\n      <table class=\"meta\">\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha inicio</span></th>\n            <td><span><?php echo $liq[\"fecha_inicio\"] ?></span></td>\n         </tr>\n        <tr>\n            <th style=\"width: 120px !important;\"><span>Fecha fin</span></th>\n            <td><span><?php echo $liq[\"fecha_fin\"] ?></span></td>\n         </tr>\n      </table>\n      <address>\n         <!--<p style=\"color:#14406b; font-size: 18px; font-weight: bold;\">AUTONORTE</p>\n         <p style=\"font-size: 12px;\">NIT: 811018300-6</p>\n         <p style=\"font-size: 12px;\">CLL 21 # 8-78 San Jerónimo, Ant</p> -->\n         <BR>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Nombre: </span><?php echo $liq[\"nombre_completo\"] ?><br>\n            <span style=\"font-weight: bold;\">Dirección: </span><?php echo  $liq[\"direccion\"] ?><br>\n         </p>\n      </address>\n\n      <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Valor venta</span></th>\n               <th><span>Valor abono</span></th>\n               <th><span>Valor débito</span></th>\n               <th><span>Seguridad social</span></th>\n            </tr>\n         </thead>\n         <tbody>\n            <tr>\n               <td><span><?php echo $liq[\"valor_venta\"] ?></span></td>\n               <td><span><?php echo  $liq[\"valor_novedad_abonar\"] ?></span></td>\n               <td><span><?php echo $liq[\"valor_novedad_debitar\"] ?></span></td>\n               <td><span><?php echo  $liq[\"seguridad_social\"] ?></span></td>\n            </tr>\n         </tbody>\n      </table>\n      <?php \n        if (count($ventas)) {\n    ?>\n    <br>\n         <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Ventas: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>N. Factura</span></th>\n               <th><span>Fecha</span></th>\n               <th><span>Cliente</span></th>\n               <th><span>Placa</span></th>\n               <th><span>Forma de Pago</span></th>\n               <th><span>Total</span></th>\n               <th><span>Total Mecánico</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($ventas as $venta) {\n             ?>\n            <tr>\n               <td><span><?php echo  $venta[\"id\"] ?></span></td>\n               <td><span><?php echo  $venta[\"fecha\"] ?></span></td>\n               <td><span><?php echo  $venta[\"nombre_completo\"] ?></span></td>\n               <td><span><?php echo  $venta[\"placa\"] ?></span></td>\n               <td><span><?php echo  $venta[\"forma_pago\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total\"] ?></span></td>\n               <td><span><?php echo  $venta[\"total_mecanico\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         <br>\n               <?php \n        if (count($novedades)) {\n    ?>\n    <br>\n        <p style=\"font-size: 14px;\">\n            <span style=\"font-weight: bold;\">Novedades: </span>\n         </p>\n        <table class=\"inventory\">\n         <thead>\n            <tr>\n               <th><span>Fecha</span></th>\n               <th><span>Tipo novedad</span></th>\n               <th><span>Valor novedad</span></th>\n            </tr>\n         </thead>\n         <tbody>\n         <?php\n         foreach ($novedades as $novedad) {\n             ?>\n            <tr>\n               <td><span><?php echo  $novedad[\"tipo_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"valor_novedad\"] ?></span></td>\n               <td><span><?php echo  $novedad[\"fecha\"] ?></span></td>\n            </tr>\n        <?php\n         }\n      }\n         ?>\n         </tbody>\n      </table>\n         </tbody>\n      </table>\n\n      <table class=\"balance\" style=\"font-size: 11px;\">\n         <tr>\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>SUBTOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $sub_total ?></span></th>\n         </tr>\n         <tr>\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL COBROS</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $otrosCostos ?></span></th>\n         </tr>\n         <tr style=\"color: #fff; font-size: 12px;\">\n            <td style=\"background-color: #1f60a0; font-weight: bold;\"><span>TOTAL</span></td>\n            <th style=\"background-color: #14406b;\"><span><?php echo $total ?></span></th>\n         </tr>\n       \n            \n        </tr>\n         </tr>\n      </table>\n      </div>\n   </article>\n\n</body>\n</html>','A'),(1188,'mod/app_ventas/index.php','2025-02-07 15:36:00','rafael',249,11344,'<?php\n\nfunction calcularTotalVenta($id, $returnArr = \"\") {\n    $venta = PCO_EjecutarSQL(\"\n        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva\n        FROM app_ventas_detalle\n        WHERE id_venta = \'$id\' GROUP BY id_venta\n    \")->fetch();\n    $ventaMecanico = PCO_EjecutarSQL(\"\n        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)\n        FROM app_ventas_detalle vd, app_ventas v, app_productos p\n        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = \'$id\' AND v.id_mecanico <> 0 GROUP BY vd.id_venta\n    \")->fetchColumn();\n    $total = $venta[\"total\"] ? $venta[\"total\"] : 0;\n    $iva = $venta[\"iva\"] ? $venta[\"iva\"] : 0;\n    PCO_EjecutarSQLUnaria(\"UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico=\'$ventaMecanico\' WHERE id = $id \");\n    if($returnArr)\n        return $venta;\n    return \'\"total\": \' . $total . \', \"iva\": \' . $iva;\n}\n\nif($PCO_Accion == \"VENTA_ingresarRealizarVenta\") {\n    $ventaAbierta = PCO_EjecutarSQL(\"\n        SELECT id, id_cliente, total, iva, placa\n        FROM app_ventas\n        WHERE id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $id_venta = $ventaAbierta[\"id\"] || \"\";\n    if($id_venta) {\n        $total = number_format($ventaAbierta[\"total\"], 2);\n        $iva = number_format($ventaAbierta[\"iva\"], 2);\n        $id_cliente = $ventaAbierta[\"id_cliente\"];\n    }\n\n    PCO_CargarFormulario(8, 1, \"id\", $id_venta);\n}\n\nif($PCO_Accion == \"VENTA_agregarProductoCrearOC\") {\n        //crear cliente en caso de que no llegue id_cliente\n        if(!$id_cliente) {\n            PCO_EjecutarSQLUnaria(\"INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) \",\n                \"$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono\"\n            );\n            // $id_cliente = PCO_ObtenerUltimoIDInsertado();\n            $id_cliente = PCO_EjecutarSQL(\"\n                SELECT id\n                FROM app_clientes\n                WHERE numero_documento=\'$numero_documento\' AND telefono=\'$telefono\' AND \'$nombre_completo\'\n            \")->fetchColumn();\n        }\n        $todayMysql = date(\"Y-m-d H:i:s\");\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) \", \"$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta\");\n        $id = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_ventas\n            WHERE fecha=\'$todayMysql\' AND usuario=\'$PCOSESS_LoginUsuario\' AND id_cliente = \'$id_cliente\'\n        \")->fetchColumn();\n        // $id = PCO_ObtenerUltimoIDInsertado();\n\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva, inventario\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje\");\n        calcularTotalVenta($id);\n        \n        /* $total = number_format($result[\"total\"], 2);\n        $iva = number_format($result[\"iva\"], 2); */\n\n        echo \'<script type=\"text/javascript\">\n        	document.FRMBASEINFORME.PCO_Accion.value=\"PCO_CargarObjeto\";\n        	document.FRMBASEINFORME.PCO_Objeto.value=\"frm:8:1:id:\'.$id.\'\";\n        	document.FRMBASEINFORME.Precarga_EstilosBS.value=\"1\";\n        	document.FRMBASEINFORME.Presentar_FullScreen.value=\"0\";\n        	document.FRMBASEINFORME.target=\"_self\";\n        	document.FRMBASEINFORME.submit();\n    	 </script>\';\n    }\n}\n\nif($PCO_Accion == \"VENTA_agregarProducto\") {\n    $producto = PCO_EjecutarSQL(\"\n        SELECT id, precio_venta, iva\n        FROM app_productos\n        WHERE id = \'$id_producto\'\n    \")->fetch();\n    if($producto[\"id\"]) {\n        $existe = PCO_EjecutarSQL(\"\n            SELECT count(id)\n            FROM app_ventas_detalle\n            WHERE id_venta = $id AND id_producto = \'$id_producto\'\n        \")->fetchColumn();\n        if($existe > 0) {\n            print_r(\'{\"success\": false, \"msg\": \"El producto ya se ha ingresado\"}\');\n            die();\n        }\n        /* if($producto[\"inventario\"] < $cantidad) {\n            print_r(\'{\"success\": false, \"msg\": \"La cantidad digitada supera la del invetario\"}\');\n            die();\n        } */\n        // $inventarioNew = $producto[\"inventario\"] - $cantidad;\n        // PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) \", \n            \"$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_\" . $producto[\"iva\"].\"$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje\");\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se ha encontrado el producto seleccionado\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_consultarTotalVenta\") {\n    if($id) {\n        $result = calcularTotalVenta($id);\n        print_r(\'{\"success\": true, \"id\": \' . $id . \', \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se encontro la venta\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_eliminarProducto\") {\n\n    if($id_venta_detalle && $id_venta) {\n        $producto = PCO_EjecutarSQL(\"\n            SELECT p.inventario, vd.cantidad, p.id\n            FROM app_ventas_detalle vd, app_productos p\n            WHERE vd.id_producto = p.id AND vd.id = \'$id_venta_detalle\'\n        \")->fetch();\n        //Restablecemos el inventario\n        $inventarioNew = $producto[\"inventario\"] + $producto[\"cantidad\"];\n        PCO_EjecutarSQLUnaria(\"UPDATE app_productos SET inventario = $inventarioNew WHERE id = \" . $producto[\"id\"]);\n        PCO_EjecutarSQLUnaria(\"DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle\");\n        $result = calcularTotalVenta($id_venta);\n        print_r(\'{\"success\": true, \"msg\": \"Se ha eliminado el producto exitosamente\", \' . $result . \'}\');\n        die();\n    }\n    print_r(\'{\"success\": false, \"msg\": \"No se pudo eliminar el producto\"}\');\n    die();\n}\n\nif($PCO_Accion == \"VENTA_actualizarProductoVenta\") {\n    if($id) {\n        PCO_EjecutarSQLUnaria(\"UPDATE app_ventas_detalle SET cantidad=\'$cantidad\', precio=\'$precio\' WHERE id = \'$id\'\");\n        echo 1;\n        die();\n    }\n    echo 0;\n    die();\n}\n\nif($PCO_Accion == \"VENTA_imprimirFactura\") {\n    if($PCO_Valor)\n        $id = $PCO_Valor;\n    if($id) {\n        include_once \"imprimirFactura.php\";\n    }\n}\n\nif($PCO_Accion == \"VENTA_generarLiquidacionMecanicos\") {\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social\n        FROM app_mecanicos m,app_ventas v\n        WHERE m.id = v.id_mecanico AND v.fecha >= \'$fecha_inicio 00:00:00\' AND v.fecha <= \'$fecha_fin 23:59:59\' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0\n        GROUP BY v.id_mecanico\n    \")->fetchAll();\n    foreach ($ventas as $venta) {\n        $valor_novedad = PCO_EjecutarSQL(\"\n            SELECT  \n                SUM(case when tipo_novedad=\'Abonar\' then valor_novedad else 0 end) as abonar,\n                SUM(case when tipo_novedad=\'Debitar\' then valor_novedad else 0 end) as debitar\n            FROM app_novedades_mecanicos\n            WHERE fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\'\n                AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n            GROUP BY id_mecanico\n        \")->fetch();\n\n        PCO_EjecutarSQLUnaria(\"\n            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) \",\n            $venta[\"id_mecanico\"].\"$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_\".$venta[\"Total\"].\"$_SeparadorCampos_\".$valor_novedad[\'abonar\'].\"$_SeparadorCampos_\".$valor_novedad[\'debitar\'].\"$_SeparadorCampos_\".$venta[\"seguridad_social\"].\"$_SeparadorCampos_$PCOSESS_LoginUsuario\"\n        );\n        \n        $idLiq = PCO_EjecutarSQL(\"\n            SELECT id\n            FROM app_liquidacion_mecanicos_enc\n            WHERE id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND fecha=\'$PCO_FechaOperacionGuiones\' AND usuario = \'$PCOSESS_LoginUsuario\'\n            ORDER BY id desc LIMIT 1\n        \")->fetchColumn();\n\n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_novedades_mecanicos \n            SET id_liquidacion=\'$idLiq\'\n            WHERE \n                fecha >= \'$fecha_inicio\' AND fecha <= \'$fecha_fin\' AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n        \n        PCO_EjecutarSQLUnaria(\"\n            UPDATE app_ventas \n            SET id_liquidacion=\'$idLiq\'\n            WHERE app_ventas.fecha >= \'$fecha_inicio 00:00:00\' AND app_ventas.fecha <= \'$fecha_fin 23:59:59\' AND app_ventas.estado = 1 AND id_mecanico=\'\".$venta[\'id_mecanico\'].\"\' AND id_liquidacion=0\n        \");\n    }\n    PCO_CargarFormulario(14);\n}\n\nif($PCO_Accion == \"VENTAS_verLiquidacion\") {\n    $liq = PCO_EjecutarSQL(\"\n        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,\n            CONCAT(\'$\',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) total,\n            CONCAT(\'$\',FORMAT(l.valor_venta + l.valor_novedad_abonar,2,\'de_DE\')) subTotal,\n            CONCAT(\'$\',FORMAT((-l.valor_novedad_debitar - l.seguridad_social),2,\'de_DE\')) otrosCostos\n        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m \n        WHERE l.id_mecanico = m.id AND l.id=\'$PCO_Valor\'\n    \")->fetch();\n\n    $ventas = PCO_EjecutarSQL(\"\n        SELECT v.*, c.nombre_completo\n        FROM app_ventas v, app_clientes c\n        WHERE v.id_cliente=c.id AND v.id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n\n    $novedades = PCO_EjecutarSQL(\"\n        SELECT *\n        FROM app_novedades_mecanicos\n        WHERE id_liquidacion=\".$liq[\'id\'].\"\n    \")->fetchAll();\n    \n    include \'liquidacion_mecanicos.php\';\n}','A'),(1189,'core_formulario[8].javascript','2025-02-07 15:41:00','rafael',396,14359,'const { \n    id_cliente, id_producto, cantidad, numero_documento, telefono, nombre_completo, hora_inicio, hora_fin, guaje,\n    id, idClienteDB, total_fake, dinero_entregado, devuelta, tipo_venta, id_mecanico, placa, tipo_pago, precio, estado\n} = document.datos;\n\nconst lavado = 1;\nconst producto = 2;\nconst servicio = 3;\n\nconst formatter = (n, d = 2) => new Intl.NumberFormat(\'es-MX\').format(n);\n\nfunction isMobileDevice() {\n  return /Mobi|Android|iPhone|iPad|iPod|Windows Phone/i.test(navigator.userAgent);\n}\n\nfunction actualizarInforme() {\n    $(\'#informeCompra\').html(PCO_ObtenerContenidoAjax(0, \'index.php\',\n        \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=inf:11:0&id=\' + id.value)\n    );\n}\n\nfunction cargarDatosFE(resp) {\n    const { total, iva } = resp;\n    total_fake.value = formatter(total).replace(\'$\',\'\');\n    // iva_fake.value = formatter(iva).replace(\'$\',\'\');\n    /* if(!id.value && resp.id)\n        id.value = resp.id; */\n    actualizarInforme();\n}\n\nfunction calcularTiempo() {\n    const horaInicio = $(\'#hora_inicio\').val();\n    const horaFin = $(\'#hora_fin\').val();\n    if (!horaInicio || !horaFin) return;\n    const hiMom = moment(horaInicio, \"hh:mm:ss\");\n    const hfMom = moment(horaFin, \"hh:mm:ss\");\n    const duration = moment.duration(hfMom.diff(hiMom));\n    const minutes = duration.asHours() || 0;\n    $(\'#cantidad\').val((minutes).toFixed(2));\n}\n\nfunction consultarTotalVenta() {\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_consultarTotalVenta\' +\n            \'&id=\' + id.value\n        )\n    );\n    if(resp.success) {\n        cargarDatosFE(resp);\n    }\n    else {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n    }    \n}\n\nfunction FrmAutoRun()\n    {\n        document.title = \"Realizar venta\";\n        $(\'#PCOContenedor_id_mecanico\').hide();\n        $(\'#PCOContenedor_hora_inicio\').hide();\n        $(\'#PCOContenedor_hora_fin\').hide();\n        $(\'#PCOContenedor_guaje\').hide();\n        $(\'#PCOContenedor_factura_pagada\').hide();\n        \n  $(\'#PCOContenedor_firma\').hide();\n\n        if($(\'#id\').val()) {\n            //$(\'#add_product\').hide();\n            $(\'#PCOContenedor_clientesSubForm\').hide();\n            // $(\'#id_cliente\').val(idClienteDB.value);\n            // PCOJS_ActualizarComboBox(\'id_cliente\');\n           actualizarInforme();\n          if($(\'#id_cliente\').val() == 1) {\n                $(\'#PCOContenedor_placa\').show();\n            } else {\n                $(\'#PCOContenedor_placa\').hide();\n            }\n            onChangeTipoProducto();\n            consultarTotalVenta();\n        }\n        else {\n            $(\'#finalizar_venta\').hide();\n            $(\'#btn_update\').hide();\n            $(\'#PCOContenedor_placa\').hide();\n        }\n        \n        if (isMobileDevice()) {\n          $(\'#CANVAS_firma\').width(280);\n          $(\'#CANVAS_firma\').height(180);\n        }\n    }\n\n function onchangeCliente(){\n    $(\'#PCOContenedor_placa\').show();\n    if($(\'#id_cliente\').val() == 1) {\n        $(\'#PCOContenedor_placa\').show();\n    } \n} \n\nfunction agregarProducto() {\n    if(validarDatosCompra()) {\n        if(!id.value) {\n            document.datos.PCO_Accion.value = \'VENTA_agregarProductoCrearOC\';\n            document.datos.Precarga_EstilosBS.value = 1;\n            document.datos.Presentar_FullScreen.value = 0;\n            document.datos.target = \'_self\';\n        	document.datos.submit();\n        }\n        else {\n            const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n                \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_agregarProducto\' +\n                    \'&id=\' + id.value + \n                    \'&id_cliente=\' + id_cliente.value +\n                    \'&id_producto=\' + id_producto.value +\n                    \'&cantidad=\' + cantidad.value +\n                    \'&precioVenta=\' + precio.value +\n                    \'&nombre_completo=\' + nombre_completo.value +\n                    \'&telefono=\' + telefono.value +\n                    \'&hora_inicio=\' + hora_inicio.value +\n                    \'&hora_fin=\' + hora_fin.value +\n                    \'&guaje=\' + guaje.value +\n                    \'&numero_documento=\' + numero_documento.value\n                )\n            );\n            if(resp.success) {\n                cargarDatosFE(resp);\n                $(\'#finalizar_venta\').show();\n                $(\'#id_producto\').val(\'\');\n                PCOJS_ActualizarComboBox(\'id_producto\');\n                $(\'#precio\').val(\'\');\n                $(\'#cantidad\').val(\'1\');\n            }\n            else {\n                PCOJS_MostrarMensaje(\"Aviso del sistema\", resp.msg);\n            }\n        }\n    }\n}\n\nfunction mostrarMensajePopUp(TituloPopUp, Mensaje) {\n    $(\'#modalMensajeTitulo\').html(TituloPopUp);\n	$(\'#modalMensajeCuerpo\').html(Mensaje);\n\n    //Retira cualquier clase preexistente o remanente de cualquier personalizacion previa y agrega las clases base\n    $(\"#modalMensaje\").removeClass();\n    $( \"#modalMensaje\" ).addClass( \"modal\" );\n    $( \"#modalMensaje\" ).addClass( \"fade\" );\n    $( \"#modalMensaje\" ).addClass( \"oculto_impresion\" );\n\n    //Agrega las clases personalizadas por el usuario\n    /* if (ClasesAdicionales!=\"\")\n        $( \"#modalMensaje\" ).addClass( ClasesAdicionales ); */\n\n	// Se muestra el cuadro modal\n	$(\'#modalMensaje\').modal(\'show\');\n\n	//Hacer que la ventana este siempre por encima\n	$(\"#modalMensaje\").css(\"z-index\", \"1500\");\n}\n\nfunction editProduct() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent,cant,prec] = product.split(\'|\');\n    /* PCOJS_MostrarMensajeCargando(\"Editar producto\", PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    )); */\n    mostrarMensajePopUp(\'Editar producto\', PCO_ObtenerContenidoAjax(0, \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:7:1\'+\n        \'&id2=\' + idVent +\n        \'&cantidad2=\' + cant +\n        \'&precio2=\' + prec\n    ));\n\n}\n\nfunction finalizarEdicionProducto() {\n    $(\'#modalMensaje\').modal(\'hide\');\n	$(\'#modalMensaje\').hide();\n    consultarTotalVenta();\n    actualizarInforme();\n}\n\nfunction actualizarProducto2()\n    {\n        if(!$(\'#id2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Venta\", \"No estas trabajando sobre una venta\");\n            return;\n        }\n        if(!$(\'#cantidad2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Cantidad\", \"La cantidad es obligatoria\");\n            return;\n        }\n        if(!$(\'#precio2\').val()) {\n            PCOJS_MostrarMensaje(\"Alerta Precio\", \"El precio es obligatorio\");\n            return;\n        }\n        const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n            \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_actualizarProductoVenta\' +\n                \'&id=\' + $(\'#id2\').val() + \n                \'&id_producto=\' + $(\'#id_producto2\').val()  +\n                \'&cantidad=\' + $(\'#cantidad2\').val() +\n                \'&precio=\' + $(\'#precio2\').val()\n            )\n        );\n        finalizarEdicionProducto();\n    }\n\nfunction finalizarCompra() {\n    /*if(tipo_pago.value != \'Credito\' && dinero_entregado.value < total_fake.value) {\n        PCOJS_MostrarMensaje(\"Editar producto\", \"El valor a pagar es menor al total!\");\n        return;\n    }*/\n    estado.value = 1;\n    //Actualiza\n        /*document.datos.PCO_Accion.value = \'PCO_ActualizarDatosFormulario\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n    //Abre la venta para imprimirla\n        /*document.datos.PCO_Accion.value = \'VENTA_imprimirFactura\';\n        document.datos.id_registro_datos.value = id.value;\n        document.datos.Precarga_EstilosBS.value = 0;\n        document.datos.Presentar_FullScreen.value = 1;\n    	document.datos.target = \'_blank\';\n    	document.datos.submit();*/\n\n    document.datos.PCO_Accion.value=\'PCO_ActualizarDatosFormulario\';\n    PCOJS_ValidarCamposYProcesarFormulario(\'datos\');\n}\n\nfunction eliminar_producto() {\n    const product = document.FRMBASEINFORME.PCO_Valor.value;\n    const [idVent] = product.split(\'|\');\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=VENTA_eliminarProducto\' +\n            \'&id_venta=\' + id.value +\n            \'&id_venta_detalle=\' + idVent\n        )\n    );\n    cargarDatosFE(resp);\n}\n\nfunction validarDatosCompra() {\n    if(!id_cliente.value && !nombre_completo.value && !numero_documento.value && !telefono.value && id_cliente.value != 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar o ingresar un cliente!\");\n        return false;\n    }\n    if(!cantidad.value || isNaN(cantidad.value) || cantidad.value < 1) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una cantidad válida!\");\n        return false;\n    }\n    if(!id_producto.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un producto\");\n        return false;\n    }\n    if(id_cliente.value == 1 && !placa.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes ingresar una placa\");\n        return false;\n    }\n    if(tipo_venta.value == servicio && !id_mecanico.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un mecánico\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && (!hora_inicio.value || !hora_fin.value)) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar una hora inicio y hora fin\");\n        return false;\n    }\n    if(tipo_venta.value == lavado && !guaje.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes seleccionar un guaje\");\n        return false;\n    }\n    if(!precio.value) {\n        PCOJS_MostrarMensaje(\"Aviso del sistema\", \"Debes agregar un precio al producto\");\n        return false;\n    }\n    return true;\n}\n\nconst convertToInt = (n) => parseInt(n.replace(/,/g, \"\"));\n\nfunction calcularDevuelta() {\n    devuelta.value = \'\';\n    if(dinero_entregado.value && total_fake.value) {\n        dinero_entregado.value = dinero_entregado.value.replace(/\\D/g, \"\")\n            .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n        const diff = convertToInt(dinero_entregado.value) - convertToInt(total_fake.value);\n        //console.log({diff});\n        devuelta.value = formatter(diff).replace(\'$\', \'\');\n    }\n}\n/*\n        $(event.target).val(function (index, value ) {\n            return value.replace(/\\D/g, \"\")\n                        .replace(/([0-9])([0-9]{2})$/, \'$1.$2\')\n                        .replace(/\\B(?=(\\d{3})+(?!\\d)\\.?)/g, \",\");\n*/\n\nconst origenListaOpciones = ({ PCO_TablaConsulta, PCO_ListaCamposRetorno, PCO_ListaCamposBusqueda, PCO_CondicionFiltrado }) => ({\n      values: \"a, b, c\",\n      ajax: {\n        url: \"index.php\",\n        type: \"POST\",\n        dataType: \"json\",\n        data: {\n          q: \"{{{q}}}\",\n          PCO_Accion: \"PCO_ObtenerOpcionesAjaxSelect\",\n          Presentar_FullScreen: \"1\",\n          PCO_TablaConsulta,\n          PCO_ListaCamposRetorno,\n          PCO_ListaCamposBusqueda,\n          PCO_CondicionFiltrado\n        }\n      },\n      minLength: 3,\n      locale: {\n        emptyTitle: \"Seleccione y digite para buscar\",\n        statusInitialized: \"Empiece a digitar para recuperar registros\",\n        statusSearching: \"Cargando...\",\n        currentlySelected: \"Actualmente seleccionado(s):\",\n        errorText: \"No se pueden recuperar registros\",\n        statusTooShort: \"Ingrese al menos tres caracteres\",\n        statusNoResults: \"No se encuentran resultados\",\n        searchPlaceholder: \"Buscar...\"\n      },\n      log: 0,\n      preprocessData: (data) => data.length ? data.map(({ T: text, V: value, S: subtext, I: icon }) => ({\n        text,\n        value,\n        data: {\n          subtext,\n          icon,\n        }\n        })) : []\n});\n\nfunction onChangeTipoProducto() {\n    $(\'#PCOContenedor_id_mecanico\').hide();\n    if(tipo_venta.value == servicio) $(\'#PCOContenedor_id_mecanico\').show();\n\n    $(\'#PCOContenedor_hora_inicio\').hide();\n    $(\'#PCOContenedor_hora_fin\').hide();\n    $(\'#PCOContenedor_guaje\').hide();\n    if(tipo_venta.value == lavado) {\n        $(\'#PCOContenedor_hora_fin\').show();\n        $(\'#PCOContenedor_hora_inicio\').show();\n        $(\'#PCOContenedor_guaje\').show();\n    }\n\n    // const filtradoProductos = tipo_venta.value == 2 ? \" AND inventario>0\" : \"\";\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            PCO_CondicionFiltrado: \"AND tipo_producto=\"+tipo_venta.value,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n}\n\nfunction getProduct() {\n    if(!id_producto.value || tipo_venta.value != lavado) return;\n    const resp = JSON.parse(PCO_ObtenerContenidoAjax(0,\n        \'index.php\', \'Presentar_FullScreen=1&Precarga_EstilosBS=0&PCO_Accion=PRODUCTOS_getProductById\' +\n            \'&id=\' + $(\'#id_producto\').val()\n        )\n    );\n    $(\'#precio\').val(resp.precio_venta || \"\")\n}\n\nfunction onchangeTipoPago() {\n    $(\'#PCOContenedor_factura_pagada\').hide();\n    $(\'#PCOContenedor_firma\').hide();\n    if(tipo_pago.value == \"Credito\") {\n        $(\'#PCOContenedor_factura_pagada\').show();\n        $(\'#PCOContenedor_firma\').show();\n    }\n}\n\n$(\'#DatePicker_hora_inicio\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n$(\'#DatePicker_hora_fin\').on(\'dp.change\', function(e){ calcularTiempo(); });\n\n\n/* $(document).ready(() => {\n    $(\"#id_producto\").selectpicker().ajaxSelectPicker(\n        origenListaOpciones({ \n            PCO_TablaConsulta: \"app_productos\",\n            PCO_ListaCamposRetorno: \"id,CONCAT(codigo,\' | \',nombre,\' | \',precio_venta)\",\n            PCO_ListaCamposBusqueda: \"codigo,nombre\",\n            // PCO_CondicionFiltrado: \"tipo_producto=\"+$(\'#tipo_venta\').val()+filtradoProductos,\n        }));\n    $(\"#id_producto\").trigger(\"change\");\n});*/','B'),