Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
ada:howto:sicoferp:database:oracle:multiempresafondosfosemed [2022/07/24 20:00] administraidor creado |
ada:howto:sicoferp:database:oracle:multiempresafondosfosemed [2022/07/24 20:42] (actual) administraidor [Notas del Proceso] |
||
---|---|---|---|
Línea 17: | Línea 17: | ||
* Crear paquete donde se utilice el contexto por medio de un procedimiento almacenado. | * Crear paquete donde se utilice el contexto por medio de un procedimiento almacenado. | ||
* Crear Esquema donde se definan las tablas. | * Crear Esquema donde se definan las tablas. | ||
- | * Crear Esquema donde se definan vistas a la tablas con todas las comnas y aplica un filtro con el contexto definido. | + | * Crear Esquema donde se definan vistas a la tablas con todas las columnas y aplica un filtro con el contexto definido. |
==== Reglas del modelo ==== | ==== Reglas del modelo ==== | ||
* Las tablas van en un esquema diferente al esquema utilizado en los modelos uniempresa. Ejemplo: si el modelo uniempresa para presupuesto es PRESUP01 se debe crear un esquema PRESUP02 donde se almacenarán las tablas. | * Las tablas van en un esquema diferente al esquema utilizado en los modelos uniempresa. Ejemplo: si el modelo uniempresa para presupuesto es PRESUP01 se debe crear un esquema PRESUP02 donde se almacenarán las tablas. | ||
- | * Las vistas se crean en el esquema utilizado en los modelos uniempresa. Ejemplo si modelo uniempresa para presupuesto es PRESUP01 se debe crear en ese esquema las vistas. | + | * Las vistas se crean con la propiedad de actualización en el esquema utilizado en los modelos uniempresa. Ejemplo si modelo uniempresa para presupuesto es PRESUP01 se debe crear en ese esquema las vistas. |
* Los trigger se crean en el esquema de las vistas apuntando a las tablas del esquema. | * Los trigger se crean en el esquema de las vistas apuntando a las tablas del esquema. | ||
- | * Los paquuete se crean en el esquema de las vistas apuntando a las tablas del esquema. | + | * Los paquetes se crean en el esquema de las vistas apuntando a las tablas del esquema. |
* Los procedimientos y funciones se crean en el esquema de las vistas apuntando a las tablas del esquema. | * Los procedimientos y funciones se crean en el esquema de las vistas apuntando a las tablas del esquema. | ||
* Las secuencias se crean en el esquema de las vistas apuntando a las tablas del esquema. | * Las secuencias se crean en el esquema de las vistas apuntando a las tablas del esquema. | ||
Línea 30: | Línea 30: | ||
===== Modelo de actualización de Scripts ===== | ===== Modelo de actualización de Scripts ===== | ||
+ | A continuación se define el proceso de actualización según los siguientes tipos: | ||
+ | ==== Actualización de estructuras DDL/PLSQL ==== | ||
+ | Toda estructura DDL menos la modificación/agregacion de columnas en tablas se actualizan según las [[#Reglas del modelo|Reglas del modelo]] | ||
+ | ==== Actualización de estructuras DML ==== | ||
+ | Toda estructura DML (Insert,Update,Select,Delete) se ejecuta igual que los modelos uniempresa, sin embargo se debe ejecutar previamente el contexto según el siguiente script y empresa a afectar. | ||
+ | <code sql> | ||
+ | execute sicof.pkg_ctx_sicof.sp_nombre_variable('CODIGO_MEMPRESA','[Código de la Empresa]'); | ||
+ | </code> | ||
+ | ==== Actualización de estructuras DDL (Colummas en Tablas) ==== | ||
+ | Las actualización de tablas requiere que se ejecuten los siguientes pasos: | ||
+ | * Ejecutar el alter en la tabla. | ||
+ | * Ejecutar un script que genera un script de la vista que representa la tabla actualizada. | ||
+ | * Ejecutar el script que regenera la vista. | ||
- | ===== Solución ===== | + | === Ejemplo === |
+ | Se comparte el siguiente ejemplo de una actualización real del módulo de presupuesto. | ||
+ | <code sql> | ||
+ | --============================================================================== | ||
+ | -- Fecha: 3:27 p. m. domingo, 24 de julio de 2022 - carlos.torres@ada.co | ||
+ | -- Paso 1: Crear las columnas en la tabla | ||
+ | --============================================================================== | ||
+ | ALTER TABLE PRESUP02.FE_TIPO_FACTURA ADD (FECHA_FINAL_RESOLUCION DATE); | ||
+ | ALTER TABLE PRESUP02.FE_TIPO_FACTURA ADD (CLAVE_TECNICA VARCHAR2(256)); | ||
+ | |||
+ | --============================================================================== | ||
+ | -- Fecha: 3:27 p. m. domingo, 24 de julio de 2022 - carlos.torres@ada.co | ||
+ | -- Paso 2: Ejecutar el script que genera un script de la vista actualizada de la tabla | ||
+ | --============================================================================== | ||
+ | SELECT 'CREATE OR REPLACE FORCE VIEW ' || REPLACE(X.OWNER, '02', '01') || '.' || X.TABLE_NAME || ' AS SELECT * ' || | ||
+ | 'FROM ' || X.OWNER || '.' || X.TABLE_NAME || ' T ' || | ||
+ | 'WHERE t.codigo_mempresa IN (DECODE (SYS_CONTEXT (''CTX_SICOF'', ''CODIGO_MEMPRESA''),''9999999999'', ''-1'', SYS_CONTEXT (''CTX_SICOF'', ''CODIGO_MEMPRESA'')),''9999999999'') OR SYS_CONTEXT (''CTX_SICOF'', ''CODIGO_MEMPRESA'') = ''0'';' AS NEW_SYNTAX_SQL | ||
+ | FROM SYS.ALL_ALL_TABLES X | ||
+ | WHERE X.OWNER = 'PRESUP02'--aqui va el esquema de la tabla | ||
+ | AND X.TABLE_NAME = 'FE_TIPO_FACTURA ';--Aqui va el nombre de la tabla | ||
+ | |||
+ | --============================================================================== | ||
+ | -- Fecha: 3:28 p. m. domingo, 24 de julio de 2022 - carlos.torres@ada.co | ||
+ | -- Paso 3: Ejecutar el script de la vista actualizada contenido en la columna NEW_SYNTAX_SQL | ||
+ | -- del paso 2 | ||
+ | --============================================================================== | ||
+ | CREATE OR REPLACE FORCE VIEW PRESUP01.FE_TIPO_FACTURA | ||
+ | AS | ||
+ | SELECT * | ||
+ | FROM PRESUP02.FE_TIPO_FACTURA T | ||
+ | WHERE t.codigo_mempresa IN | ||
+ | (DECODE (SYS_CONTEXT ('CTX_SICOF', 'CODIGO_MEMPRESA'), | ||
+ | '9999999999', '-1', | ||
+ | SYS_CONTEXT ('CTX_SICOF', 'CODIGO_MEMPRESA')), | ||
+ | '9999999999') | ||
+ | OR SYS_CONTEXT ('CTX_SICOF', 'CODIGO_MEMPRESA') = '0'; | ||
+ | |||
+ | </code> | ||
+ | |||
+ | ==== Notas del Proceso ==== | ||
+ | * La [[#Actualización de estructuras DDL (Colummas en Tablas)|Actualización de estructuras DDL (Colummas en Tablas)]] sólo aplica para tablas que tienen el campo código_mempresa y tienen representación en tabla/vista. | ||
+ | * Toda sintáxis DML debe ejecutar previamente el seteo contexto. | ||
+ | * Si el seteo de contexto se ejecuta con el código_mempresa = 0 se aplicará la para todas las empresas, esto puede generar errores ya que los cambios aplicarán para todas la empresas generando configuraciones o información duplicada. | ||
[[ada:howto:sicoferp:database:oracle|←Volver atras]] | [[ada:howto:sicoferp:database:oracle|←Volver atras]] | ||