/** * * @param resource $conn * Recurso que contiene la conexión SQL. * @param string $tabla * @return array Error SQL si lo hay, NULL si todo correcto. */ function crearTablaDis($conn, $tabla) { global $farmacia; $respError = new respuestaError(); $sql = "CREATE TABLE [dbo].[{$tabla}](\r\n\t\t\t[idReceta] [int] IDENTITY(1,1) NOT NULL,\r\n\t\t\t[farmacia] [varchar](10) NULL,\r\n\t\t\t[idDispensable] [int] NULL,\r\n\t\t\t[codigoNacionalPrescrito] [varchar](7) NULL,\r\n\t\t\t[codigoNacional] [varchar](7) NULL,\r\n\t\t\t[envases] [int] NULL,\r\n\t\t\t[dni] [varchar](50) NULL,\r\n\t\t\t[contenido] [varchar](50) NULL,\r\n\t\t\t[pvpComer] [money] NULL,\r\n\t\t\t[pvpCalculado] [money] NULL,\r\n\t\t\t[aportacionProducto] [int] NULL,\r\n\t\t\t[codigoAportacion] [varchar](50) NULL,\r\n\t\t\t[idActoDispensacion] [int] NULL,\r\n\t\t\t[idDispensacion] [int] NULL,\r\n\t\t\t[farmaceutico] [varchar](12) NULL,\r\n\t\t\t[fechaGrabacion] [datetime] NULL,\r\n\t\t\t[fechaAnulacion] [datetime] NULL,\r\n\t\t\t[fechaFirma] [datetime] NULL,\r\n\t\t\t[origen] [varchar](25) NULL,\r\n\t\t\t[firma] [text] NULL,\r\n\t\t\t[firmaFacturacion] [text] NULL,\r\n\t\t\t[validado] [char](1) NOT NULL,\r\n\t\t\t[firmado] [char](1) NOT NULL,\r\n\t\t\t[borrado] [char](1) NOT NULL\r\n\t) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]\r\n\tALTER TABLE [dbo].[{$tabla}] ADD CONSTRAINT [DF_" . $tabla . "_fechaGrabacion] DEFAULT (getdate()) FOR [fechaGrabacion]\r\n\tALTER TABLE [dbo].[{$tabla}] ADD DEFAULT ('1') FOR [validado]\r\n\tALTER TABLE [dbo].[{$tabla}] ADD DEFAULT ('0') FOR [firmado]\r\n\tALTER TABLE [dbo].[{$tabla}] ADD DEFAULT ('0') FOR [borrado]"; $stmt = sqlsrv_query($conn, $sql); if ($stmt === false) { if (($errors = sqlsrv_errors()) != null) { $SQLSTATE = $errors[0]["SQLSTATE"]; $Cerror = $errors[0]["code"]; $Merror = utf8_encode($errors[0]["message"]); if ($farmacia == FARMACIA_DEBUG or strlen(FARMACIA_DEBUG) == 0) { if (DEBUG & DEBUG_ERROR_SQL) { $mensaje = "--[" . date("c") . "] Farmacia: {$farmacia} código: {$Cerror} mensaje: {$Merror} \n"; $mensaje .= "--Error en el fichero: " . __FILE__ . ", en la línea: " . __LINE__; error_log($mensaje . $sql . "\r\n", 3, DIRECTORIO_LOG . __FUNCTION__ . "_" . date("YmdH") . ".log"); } } return $respError->errorSQL($SQLSTATE, $Cerror, $Merror, $tipoPeticion, $farmacia); } } return null; }
/** * * @param resource $conn * Recurso que contiene la conexión SQL. * @param string $tabla * @return array Error SQL si lo hay, NULL si todo correcto. */ function crearTablaAudi($conn, $tabla) { global $farmacia; $respError = new respuestaError(); $sql = "CREATE TABLE {$tabla} (\n\t\tid int IDENTITY (1, 1) NOT NULL,\n\t\tCN varchar (300) NULL,\n\t\tnumeroFarmacia char (10) NULL,\n\t\tfechaHora datetime NULL,\n\t\tpreguntaSOAP text NULL,\n\t\ttiempoRespuesta int NULL,\n\t\ttipoPeticion varchar (50) NULL,\n\t\tversion char (8) NUll,\n\t\tnombreServidor varchar (100) NULL\n\t\tCONSTRAINT [PK_{$tabla}] PRIMARY KEY CLUSTERED([ID]) ON [PRIMARY])\n\t\tALTER TABLE [dbo].[{$tabla}] ADD CONSTRAINT [DF_" . $tabla . "_fechaHora] DEFAULT (getdate()) FOR [fechaHora]"; $stmt = sqlsrv_query($conn, $sql); if ($stmt === false) { if (($errors = sqlsrv_errors()) != null) { $SQLSTATE = $errors[0]["SQLSTATE"]; $Cerror = $errors[0]["code"]; $Merror = utf8_encode($errors[0]["message"]); if ($farmacia == FARMACIA_DEBUG or strlen(FARMACIA_DEBUG) == 0) { if (DEBUG & DEBUG_ERROR_SQL) { $mensaje = "--[" . date("c") . "] Farmacia: {$farmacia} código: {$Cerror} mensaje: {$Merror} \n"; $mensaje .= "--Error en el fichero: " . __FILE__ . ", en la línea: " . __LINE__; error_log($mensaje . $sql . "\r\n", 3, DIRECTORIO_LOG . __FUNCTION__ . "_" . date("YmdH") . ".log"); } } return $respError->errorSQL($SQLSTATE, $Cerror, $Merror, $tipoPeticion, $farmacia); } } return null; }
/** * * @param resource $conn * Recurso que contiene la conexión SQL. * @param string $tabla * @return array Error SQL si lo hay, NULL si todo correcto. */ function crearTablaDis($conn, $tabla) { global $farmacia; $respError = new respuestaError(); $sql = "CREATE TABLE [dbo].[{$tabla}](\n\t\t\t\t[id] [int] IDENTITY(1,1) NOT NULL,\n\t\t\t\t[farmacia] [varchar](10) NULL,\n\t\t\t\t[sistema] [varchar](10) NULL,\n\t\t\t\t[idtx] [varchar](20) NULL,\n\t\t\t\t[CIP] [varchar](20) NULL,\n\t\t\t\t[identificacion] [varchar](250) NULL,\n\t\t\t\t[DNI] [varchar](15) NULL,\n\t\t\t\t[codfarmacia] [varchar](10) NULL,\n\t\t\t\t[codColegiado] [varchar](15) NULL,\n\t\t\t\t[numColegiado] [varchar](15) NULL,\n\t\t\t\t[TSI] [varchar](15) NULL,\n\t\t\t\t[id_Receta] [varchar](25) NULL,\n\t\t\t\t[PVPCalculadoAport] [money] NULL,\n\t\t\t\t[PVPTotal] [money] NULL,\n\t\t\t\t[euros_Receta] [varchar](4) NULL,\n\t\t\t\t[envases] [int] NULL,\n\t\t\t\t[codNacional] [varchar](8) NULL,\n\t\t\t\t[PVPComerEnv] [money] NULL,\n\t\t\t\t[aportacionProducto] [float] NULL,\n\t\t\t\t[check_Atep] [varchar](4) NULL,\n\t\t\t\t[indicador_Euro] [varchar](4) NULL,\n\t\t\t\t[check_Objecion] [varchar](4) NULL,\n\t\t\t\t[check_Visado] [varchar](4) NULL,\n\t\t\t\t[fechaXML] [varchar](25) NULL,\n\t\t\t\t[fechaGrabacion] [datetime] NULL,\n\t\t\t CONSTRAINT [PK_{$tabla}] PRIMARY KEY CLUSTERED \n\t\t\t\t(\n\t\t\t\t\t[id] ASC\n\t\t\t\t)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]\n\t\t\t\t\t\t) ON [PRIMARY]\n\tALTER TABLE [dbo].[{$tabla}] ADD CONSTRAINT [DF_" . $tabla . "_fechaGrabacion] DEFAULT (getdate()) FOR [fechaGrabacion]"; $stmt = sqlsrv_query($conn, $sql); if ($stmt === false) { if (($errors = sqlsrv_errors()) != null) { $SQLSTATE = $errors[0]["SQLSTATE"]; $Cerror = $errors[0]["code"]; $Merror = utf8_encode($errors[0]["message"]); if ($farmacia == FARMACIA_DEBUG or strlen(FARMACIA_DEBUG) == 0) { if (DEBUG & DEBUG_ERROR_SQL) { $mensaje = "--[" . date("c") . "] Farmacia: {$farmacia} código: {$Cerror} mensaje: {$Merror} \n"; $mensaje .= "--Error en el fichero: " . __FILE__ . ", en la línea: " . __LINE__; error_log($mensaje . $sql . "\r\n", 3, DIRECTORIO_LOG . __FUNCTION__ . "_" . date("YmdH") . ".log"); } } return $respError->errorSQL($SQLSTATE, $Cerror, $Merror, $tipoPeticion, $farmacia); } } return null; }
/** * Inserta un registro en la tabla de auditoría, si no existe la tabla la crea. * Si hay algún error al insertar, crea un fichero log_error. * * @param resource $conn * Recurso que contiene la conexión SQL * @param int $farmacia * Número de farmacia con cuatro dígitos. * @param string $pregunta * Texto request o response a auditar. * @param string $tipoPeticion * Nombre del método que se va a auditar. * @param int $tiempoRespuesta * En el caso que sea una respuesta, el cálculo del tiempo * transcurrido entre la petición y la respuesta. * @return array Error SQL si lo hay, NULL si todo correcto. */ function auditar($conn, $farmacia, $pregunta, $tipoPeticion, $tiempoRespuesta = 0) { $pregunta = cambiarComilla(utf8_decode($pregunta)); $respError = new respuestaError(); /*require_once 'include/chilkat_9_5_0.php'; $gzip = new CkGzip(); $success = $gzip->UnlockComponent('ANTONIZIP_C45PQWhK4Pwf'); if ($success != true) { print $gzip->lastErrorText() . "\n"; exit(); } //print strlen(base64_encode($pregunta)) . "\n"; //print $pregunta . "\n"; //$preguntaArray = new CkByteData(); //$preguntaArray->appendStr($pregunta); //$gzip->CompressString($pregunta, "UTF-8", $preguntaArray); //print $preguntaArray->getSize() . "\n"; //$pregunta2 = $gzip->CompressStringENC($pregunta); //$pregunta2 = $gzip->uncompressStringENC(base64_encode($pregunta)); //print $pregunta2 . "\n";*/ //TODO poner en la auditoría de Dephi el deflate para poder ver los resultados, mientras no este hecho hay que dejarlo comentado //$pregunta = zlib_encode($pregunta, ZLIB_ENCODING_GZIP); //$pregunta = gzcompress($pregunta, 9); //$pregunta = gzdeflate($pregunta, 9); // El que más comprime. Este funciona. //$pregunta = gzencode($pregunta, 9); // El que menos comprime. $tabla = PREFIJO_TABLA_AUDITORIA . date("ym"); if (!($existeTabla = existeTabla($conn, $tabla, COMPOROBAR_TABLA))) { // La tabla no existe if ($crearTablaAudi = crearTablaAudi($conn, $tabla) != null) { return $crearTablaAudi; } } $CN = CN . " SERIALNUMBER: " . $_SERVER["CERT_SERIALNUMBER"]; $tiempoRespuesta = intval($tiempoRespuesta); $parametros = array($CN, $farmacia, base64_encode($pregunta), $tipoPeticion, $tiempoRespuesta, VERSION, $_SERVER["COMPUTERNAME"]); $sql = "insert into {$tabla}\n\t\t(CN\n\t\t,numeroFarmacia\n\t\t,preguntaSOAP\n\t\t,tipoPeticion\n\t\t,tiempoRespuesta\n\t\t,version\n\t\t,nombreServidor)\n\tvalues\n\t\t(?\n\t\t,?\n\t\t,?\n\t\t,?\n\t\t,?\n\t\t,?\n\t\t,?)"; // Insertar el registro en la tabla ////////////////////////////////////////////////////// if ($farmacia == FARMACIA_DEBUG or strlen(FARMACIA_DEBUG) == 0 or $farmacia == "err") { if (DEBUG & DEBUG_QUERY) { $mensaje = "--[" . date("c") . "] Farmacia: {$farmacia} \n"; $mensaje .= "--Query hecha en el fichero: " . __FILE__ . ", en la línea: " . __LINE__ . "\n"; error_log($mensaje . verQuery($sql, $parametros) . "\r\n", 3, DIRECTORIO_LOG . __FUNCTION__ . "_" . date("YmdH") . ".log"); } } $stmt = sqlsrv_query($conn, $sql, $parametros); if ($stmt === false) { if (($errors = sqlsrv_errors()) != null) { $SQLSTATE = $errors[0]["SQLSTATE"]; $Cerror = $errors[0]["code"]; $Merror = utf8_encode($errors[0]["message"]); if ($farmacia == FARMACIA_DEBUG or strlen(FARMACIA_DEBUG) == 0 or $farmacia == "err") { if (DEBUG & DEBUG_ERROR_SQL) { $mensaje = "--[" . date("c") . "] Farmacia: {$farmacia} código: {$Cerror} mensaje: {$Merror}" . "\n"; $mensaje .= "--Error en el fichero: " . __FILE__ . ", en la línea: " . __LINE__ . "\n"; error_log($mensaje . verQuery($sql, $parametros) . "\r\n", 3, DIRECTORIO_LOG . __FUNCTION__ . "_" . date("YmdH") . ".log"); } } sqlsrv_close($conn); return $respError->errorSQL($SQLSTATE, $Cerror, $Merror, $tipoPeticion, $farmacia); } } // Salir con el valor de resultado a NULL ////////////////////////////////////////////////////// sqlsrv_free_stmt($stmt); //return $respError->errorSQL("SQLSTATE", "Cerror", "Merror", $tipoPeticion, $farmacia); return NULL; }