Herramientas de usuario

Herramientas del sitio


ada:howto:sicoferp:database:oracle:multiempresafondosfosemed

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

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]]
  
  
ada/howto/sicoferp/database/oracle/multiempresafondosfosemed.1658692825.txt.gz · Última modificación: 2022/07/24 20:00 por administraidor