lunes, 31 de marzo de 2014

Visión General Oracle Treasury




Este modulo proporciona una visibilidad global de los flujos de caja operacionales, se integra con los bancos y los mercados financieros, y le permite pasar la información contable a la perfección a  Oracle General Ledger.

Se compone de los siguientes productos:
• Cash Flow Management
• Deal Management
• Risk Management

Oracle Treasury le permite administrar sus operaciones globales con una mayor eficiencia, rentabilidad y el control por ayudar a su organización a administrar la liquidez y el riesgo, simplificar la administración de Acciones y Bonos y mejorar la toma de decisiones.
Ahora vamos a profundizar en cada una de las áreas principales en más detalle.

Características importantes:

Gestión de Flujos de Efectivo (Cash Flow Management)
Treasury no está diseñado para sustituir Oracle Cash Management. Dicha solicitud aún existe y cumple la función de la previsión de efectivo, el posicionamiento efectivo, y la reconciliación de la cuenta bancaria reconciliación. El modulo tiene la intención de gestionar su cartera de inversiones incluyendo inversiones y préstamos. Asimismo, permite que usted maneje sus relaciones bancarias, transacciones entre las empresas y los bancos, y el pronóstico de efectivo a corto plazo y largo plazo. Además, puede  gestionar el efectivo de la compañía entre las empresas dentro de la misma entidad legal.

Gestión de Acuerdos (Deal Management)
Usted puede utilizar Treasury para gestionar sus transacciones financieras y ofertas, tanto a corto como a largo plazo incluyendo inversiones y préstamos. Esta capacidad de gestión permite a su organización a administrar mejor los resultados para lograr un mejor funcionamiento general de su proceso. Para Deal Management , Tesorería le permite :

  • Crear carpetas para gestionar sus trasnacciones de corto plazo y de largo plazo que son controlados a través de las tolerancias de los tipos de acuerdo.
  • Crear los productos que necesita para relacionarse con transacciones de Mercado de Valores En  Definir acciones y bonos.
  • Administrar el proceso de liquidación con terceros contratantes que utilizan EDI y otras tecnologías relacionadas .


Gestión de Riesgos(Risk Management)
Gestión de Riesgos es una parte cada vez mayor de las responsabilidades de tesorería corporativa. Puede establecer las políticas, límites, e identificar las exposiciones a la tasa de interés, los riesgos cambiarios, y las materias primas. Treasury le permite :
  • Definir la política de tipos de interés, junto con tipos de límites.
  • Establecer límites sobre la base de la contraparte, grupos de contrapartes, las transacciones financieras entre otros.
  • Establecer horarios y detalles de bolsa para manejar sus cuentas de corretaje y las relaciones.
  • Definir curvas de datos de mercado y los conjuntos de datos de modo que usted puede utilizar eso para hacer revaluaciones y marcar a las evaluaciones de mercado para ayudar a controlar sus riesgos.

viernes, 28 de marzo de 2014

Creación y mantenimiento de Proveedores



En un entorno multi-organizaciónes, el registro del Proveedor se comparte para todas las organizaciones y por lo tanto usted debe tomar las siguientes precauciones: Siempre Revisar si el proveedor  ya existe antes de  agregar un nuevo proveedor, ya que puede haber sido ya creado por otro organización .Si ya existe el proveedor, vaya directamente a la región de Sucursales y configurar todos los parámetros específicos de la organización a nivel de la Sucursal.

Ingresar / Actualizar  proveedores 
Configurar los  proveedores en una Responsabilidad de Payables>> Proveedores >>  Asiento para registrar información sobre las empresas y los individuos de los que se compran bienes y servicios.  Cuando ingresas  un proveedor que hace negocios desde varias sucursales,solo ingresar el proveedor sólo una vez, y las sucursales por cada ubicación. 

Una vez definidos los proveedores, se puede usar la importación / ingreso de facturas y crear Ordenes de compra. Por defecto  el matching con Ordenes de Compra se asociara durante el match de la factura del proveedor con su OC.


Estructura del Registro Proveedor 
Para cada proveedor, se puede crear un número ilimitado de sucursales con diferentes direcciones y contactos. Uno puede comprar de varios sitios diferentes, mientras que el envío de los pagos a un solo local. Definir las sucursales de proveedores se puede utilizar las siguientes opciones: 



1. Pago - se puede importar / ingresar facturas y realizar pagos para la sucursal
2. Pago primario - sucursal de pago por defecto para el ingreso de facturas y de importación. 
3. Compra - Para crear ordenes de compra para la sucursal. 
4. Solo PdC - Para crear solicitudes Internas(RFQs) para la sucursal. No se pueden crear Ordenes de Compra si este flag esta activado. Por lo general, una vez que  se haya completado,  se adjudica el contrato y para esa sucursal le quitamos el check para que podamos comenzar a subir las OP en su contra.
5. Tarjeta Abastecimiento - uno puede comprar bienes o servicios utilizando una tarjeta de adquisición(IProcurement).

Configuración de Sucursales
Recordemos el flujo de jerarquía de valor predeterminados. Los registros realizados a nivel de  la pantalla de Proveedores de forma predeterminada se registraran a nivel de la pantalla de Sucursales. 


La Información por defecto puede ser aceptada o usar otros valores específicos.  Ahora tener en cuenta que cada sucursal debe contener su código de impuesto por defecto. Una vez registrado podrá registrar la sucursal.



Introducción al PL/SQL



PL / SQL es una combinación de SQL junto con las características de procedimiento de lenguajes de programación .

Fue desarrollado por la Compañia Oracle a principios de los años 90 para mejorar las capacidades de SQL.

El  motor de PL / SQL :
Oracle utiliza un motor de PL / SQL para los procesos de las declaraciones dentro de la misma herramienta. Un código de PL / SQL puede ser almacenado en el sistema cliente ( del lado del cliente ) o en la de base de datos( del lado del servidor )  .


Un  bloque simple PL / SQL:
Cada programa PL/SQL consiste en sentencias de SQL y PL/SQL a partir de un bloque PL/SQL.

Este bloque consta de tres secciones :

  • La Sección de declaración (opcional).
  • La Sección de ejecución (obligatorio) .
  • La Sección de Excepción (opcional).

Sección de Declaración
La sección de declaración de un bloque PL / SQL se inicia con la palabra clave DECLARE . Esta sección es opcional y se utiliza para declarar los marcadores de posición como variables, constantes,registros y cursores , que se utilizan para manipular los datos de la sección de ejecución. Los marcadores de posición pueden ser cualquier variable, constantes y registros , que almacena datos en forma temporal . Los cursores también se declaran en esta sección.

Sección de Ejecución:
La sección de ejecución de un bloque PL / SQL se inicia con la palabra clave BEGIN y termina con END. Esta es una sección obligatoria y es la sección donde la lógica del programa está escrito para realizar cualquier tarea . Las construcciones de programa como bucles, sentencia condicional y sentencias SQL forman parte de la sección de ejecución.

Sección de Excepción:
La sección de excepción de un Bloque PL / SQL se inicia con la palabra EXCEPCION . Esta sección es opcional . Cualquier error en el programa se pueden manejar en esta sección , por lo que los bloques de PL / SQL termina correctamente. Si el  bloque contiene excepciones que no se pueden manejar , el bloque termina abruptamente con errores .

Cada afirmación en los tres apartados anteriores debe terminar con un punto y coma; . Los bloques se pueden anidar dentro de otros bloques PL / SQL. Se pueden agregar Comentarios  para documentar código .

DECLARE
     /*Declaracion de Variables*/
BEGIN
     /*Ejecución del programa*/
EXCEPTION
     /* Manejo de errores */
END;


jueves, 27 de marzo de 2014

Importar Asiento Diario de un lote fallado en GL_INTERFACE

Cada vez que se ejecuta el Programa Importar Asientos el programa Standard nos indica los errores que debemos corregir  durante la importación de líneas  en la tabla GL_INTERFACE de Oracle General Ledger (GL)


Daremos  el siguiente ejemplo:


Como podemos apreciar durante la importación obtuvimos dos lineas de Asientos con error el cual tiene como código de Error EC12. el Reporte como leyenda indica todos los errores condiciones durante la importación. para este caso si revisamos la leyenda  obtenemos que se debe a lo siguiente:

EC12 El importe ingresado debe ser igual al importe comprometido en la línea de asiento en moneda funcional.

Significa que los campos débito o crédito no contiene importes pero primero debemos analizar el caso. Para ello debemos ubicar las lineas en la tabla GL_INTERFACE con el objetivo de obtener el group_id, podría usar el siguiente script:

select * from apps.gl_interface
WHERE TRUNC(DATE_CREATED) = TO_DATE('24/03/2014','DD/MM/YYYY')
AND USER_JE_SOURCE_nAME='Cuentas a Pagar'
AND ACCOUNTING_DATE = TO_DATE('20/03/2014','DD/MM/YYYY')
AND status='EC12'


Luego de obtener el ID debemos ir a :
Responsabilidad de Contabilidad General(GL)>>Asientos>>Importar>>Corregir

y debemos colocar el ID de grupo, para facilitar la búsqueda indicar el origen de importación en este caso del modulo de Payables Cuentas por Pagar




Esta pantalla nos muestra aquellos lineas de asientos que contiene error. General Legder nos da la facilidad de poder corregir estos asientos y volverlos a importar. Analizando el registros llegamos a encontrar que proviene de un pago. En este caso la moneda funcional es en SOLES y se le ingresado una cuenta de redondeo. Dicha cuenta contiene el error


Para ello debemos ingresar la misma cantidad de redondeo en el campo débito ingresado. Finalmente le damos clic a Importar y debemos colocar la opción de importar grupo especifico. Con ello las léians ya corregidas seran improtadas al modulo de GL.








Visión General de Oracle General Ledger



El modulo de Contabilidad General conocido como Oracle General Ledger es el módulo central que  se ocupa de la información financiera de la empresa. Toda la información financiera  va a terminar en General Ledger, desde donde se hará el informe final. Este modulo se encargara de registrar asientos , analizar balances, manipular y comunicar la información.

General Ledger recibirá la información de todos los módulos de Oracle 

  1. Order Management
  2. Purchasing
  3. Receivables
  4. Payables
  5. HRMS
  6. Projects
  7. CRM etc.

Toda la información se registra, analiza y luego se informó por General Ledger

El ciclo contable básico de  General Ledger es 

  1. Abrir el período 
  2. recibir datos 
  3. Crear y reversar Asientos
  4. Postear Asientos 
  5. Revisión 
  6. Revalorizar 
  7. Consolidar 
  8. Conciliar 
  9. Ejecutar informes 
  10. Cerrar Período Contable 



Módulo de Contabilidad General registrará toda la información financiera en la forma de asientos diario. Se va a crear asientos diario para toda la información que viene a continuación, por cada Juego de libros. Tambien puede recibir información de otros sistemas de Oracle y otros



miércoles, 26 de marzo de 2014

Vision General de Oracle Discoverer



Oracle Discoverer  es una Herramienta de consultas para Business Intelligence. La cual proporciona soluciones de inteligencia y análisis de negocio, Oracle Discoverer es una herramienta destinada a la ayuda de toma de decisiones, que permite realizar análisis complejos de datos de la base de datos, de forma intuitiva y para cualquier tipo de usuario.

Discoverer permite a los usuarios realizar análisis ,informes y consultas adhoc y dinámicos ya sean a través de un navegador Web, o a través de una interfase cliente/servidor.

Los principales componentes son ;

Discoverer Administrator
Este componente  es de aplicación sólo para Windows que es el encargado de crear y mantener una visión orientada al negocio de  datos los datos realcionales. Proporciona asistentes y cuadros de diálogo a :
- Controlar el acceso a los datos
- Gestionar los datos de resumen
- Administrar la programación por lotes

Discoverer Destktop
Este componente es de sólo aplicación de Windows que permite a construir nuevas hojas de cálculo para analizar datos de fuentes de datos relacionales. Las hojas de trabajo que se crean en Discoverer Desktop se pueden utilizar en Discoverer Plus  y Discoverer Viewer 

Discoverer Plus:
Este componente se ejecuta a través de Internet o de una intranet y le permite :
- Crear nuevas hojas de cálculo y gráficos para obtener los datos que desea
- Analizar los datos
- Hojas de cálculo y gráficos de acciones con otras personas

Discoverer Viewer:
Este componente se ejecuta a través de Internet o de una intranet dentro de un navegador web. Sirve para analizar los datos de las  hojas de cálculo creadas en Discoverer Plus y Destktop. Usted puede personalizar las hojas de trabajo(Worksheets)  y guardar los cambios .



EUL- El Usuario final
Se trata de un conjunto de tablas de bases de datos que contienen información (metadatos) sobre las otras tablas y vistas de la base de datos. Que permiten al usuario final para centrarse en la cuestión de negocio en lugar de acceso a datos a cuestión. Cualquiera que sea el usuario administrador de Discoverer afecta sólo a los metadatos en el EUL y no en la base de datos. EUL es un colección de aproximadamente 50 tablas en la base de datos.

Componentes de Administrator
a) Área de Negocio: Es un contenedor de información relacionada, con la creación del área de negocio  podemos cargar la tabla de base de datos que contiene la información. 

b)Carpetas: Las tablas y las vistas que se cargan en el área de negocios se llaman carpetas. 

c)Elementos: Las columnas en las tablas y vistas que se cargan en el área de negocio  se denominan elementos. Podemos crear elementos calculados que realizan cálculos en varias 
columnas. Podemos utilizar las funciones disponibles en la base de datos.





Inventory API - Para asignar articulos a almacenes de inventarios

El día de hoy quiero compartir un script donde uso un API para asignar artículos a almacenes de inventarios. Es un ejemplo sencillo con un articulo pero puede utilizarse una tabla temporal que ayude cargar masivamente varios artículos. Sin duda es muy útil si necesita realizar una asignación a varios artículos y varios almacenes.

/* Script de API para asginar artiuclos de inventarios */
  
DECLARE
   g_user_id         fnd_user.user_id%TYPE     := NULL;
   l_appl_id         fnd_application.application_id%TYPE;
   l_resp_id         fnd_responsibility_tl.responsibility_id%TYPE;
   l_api_version     NUMBER  := 1.0;
   l_init_msg_list   VARCHAR2 (2)    := fnd_api.g_false;
   l_commit          VARCHAR2 (2)   := fnd_api.g_false;
   x_message_list    error_handler.error_tbl_type;
   x_return_status   VARCHAR2 (2);
   x_msg_count       NUMBER:= 0;
   l_error_msg       VARCHAR2(1000);
   l_organization_id   NUMBER  := 0;
   
BEGIN

   SELECT fa.application_id
     INTO l_appl_id
     FROM fnd_application fa
    WHERE fa.application_short_name = 'INV';

   SELECT fr.responsibility_id
     INTO l_resp_id
     FROM fnd_application fa, fnd_responsibility_tl fr
    WHERE fa.application_short_name = 'INV'
      AND fa.application_id = fr.application_id
      AND UPPER (fr.responsibility_name) = 'INVENTORY';
     
       SELECT organization_id
       into l_organization_id
        FROM mtl_parameters
        WHERE ORGANIZATION_CODE ='P7U';--almacén a asignar

   fnd_global.apps_initialize (g_user_id, l_resp_id, l_appl_id);
   
   FOR r1 IN (
            SELECT inventory_item_id FROM mtl_system_items_B
WHERE SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4='&inventory_item'
AND ORGANIZATION_ID IN ( SELECT organization_id
        FROM mtl_parameters
     WHERE master_organization_id = organization_id
       AND nvl(ATTRIBUTE11, 'N') = 'Y')        
            )---ejemplo cargamos un articulo, puede usar una tabla temporal
   LOOP
   --El API  se activa por cada articulo ingresado para asignar
 ego_item_pub.assign_item_to_org (p_api_version        => l_api_version,
                                  p_inventory_item_id  => r1.inventory_item_id,
                                    p_organization_id  => l_organization_id,
                                    x_return_status    => x_return_status,
                                    x_msg_count        => x_msg_count
                                   );
   COMMIT;
   
l_error_msg := 'Status: ' || x_return_status||' for inventory item id : '||r1.inventory_item_id;
   DBMS_OUTPUT.put_line (l_error_msg);
   
       IF (x_return_status <> fnd_api.g_ret_sts_success)
       THEN
          DBMS_OUTPUT.put_line ('Error Messages :');--Mensajes de errores del api
          error_handler.get_message_list (x_message_list => x_message_list);

          FOR j IN 1 .. x_message_list.COUNT
          LOOP
             DBMS_OUTPUT.put_line (x_message_list (j).MESSAGE_TEXT);
          END LOOP;
       END IF;
   END LOOP;
   DBMS_LOCK.SLEEP(6);   --se coloca una espera de 6 segundos para procesar
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line ('Exception Occured :');
      DBMS_OUTPUT.put_line (SQLCODE || ':' || SQLERRM);

END;