lunes, 30 de noviembre de 2015

Usando condicionales IF -Else en Plantillas RTF

XML Publisher apoya la construcción de programación común para el uso de condicionales IF - THEN - ELSE. Esto es muy útil cuando se necesita ejecutar o utilizar una condición y condicionalmente mostrar un resultado. Podemos utilizar la condición directamente escribiendo <?IF?> CONDICION <?END IF?>

Ejemplo:

<?if: PURCHASED_FLAG='N'?> No Activo <?end if?>

Para agregar la condicional Else podemos usar el siguiente formato:

<?xdofx:if element_condition then result1 else result2 end if?>

Por ejemplo, la siguiente declaración pone a prueba el valor del elemento AMOUNT. Si el valor es mayor que 500, mostrará la palabra Venta Mayor; si es menor , mostrará la palabra Venta Menor; caso sea igual saldrá Venta.

<?xdofx:if AMOUNT > 500 then ’Venta mayor’
else
if AMOUNT < 500 then ’Venta menor’
else ’Venta’  end if?>


Columnas de registro histórico(WHO)

La función de registro histórico o Record History (WHO) se caracteriza por dar información acerca de quién creó o actualizo una o varias  filas en tablas de Oracle E-Business Suite.  Si se     agrega columnas especiales WHO a las tablas y la lógica WHO a los formularios y procedimientos almacenados, los usuarios pueden realizar un seguimiento de los cambios realizados en sus datos. Al observar columnas WHO, los usuarios pueden diferenciar entre los cambios realizados por los formularios y los cambios realizados por los programas concurrentes.


Puede presentar las columnas WHO como campos ocultos en cada bloque de su formulario (que corresponden a las columnas de la tabla asociada). Usando la opción  FND_STANDARD.SET_WHO en PRE-UPDATE y PRE-INSERT para rellenar estos campos.

Adición de Columnas de registro histórico
En la siguiente tabla se muestran las columnas estándar utilizados para Historial (WHO), los atributos de la columna y descripciones, como también las fuentes de los valores. Establezca las columnas CREATED_BY y CREATION_DATE sólo cuando se inserta una fila (usando FND_STANDARD.SET_WHO en un formulario).


Cualquier tabla que puede ser actualizado por un programa concurrente también tiene columnas adicionales. La siguiente tabla muestra las columnas de procesamiento simultáneos utilizados para Historial cuando se actualiza por un programa.



Clases de Propiedades
Aplicar la clase de propiedad CREATION_OR_LAST_UPDATE_DATE a los campos CREATION_DATE  y LAST_UPDATE_DATE en los formularios. Estas clases de propiedades establecen los atributos correctos para estos campos, incluyendo el tipo de datos y el ancho. Aplicar la clase de propiedad TEXT_ITEM a los campos del formulario LAST_UPDATED_BY y CREATED_BY.


Insertar FND_STANDARD.SET_WHO en los triggers PRE-UPDATE y PRE-INSERT para a ni vel del bloque de consulta. Una vez guardado los cambios compilar y verificar colocándose en el formulario de la tabla en consulta e ir a Ayuda >> Registrar Historial.

viernes, 27 de noviembre de 2015

Acceso a Herramientas de Diagnóstico Oracle

La responsabilidad de Herramientas de Diagnóstico Oracle es una herramienta gratuita proporcionada por Oracle para facilitar la recopilación y análisis de información de un problema especifico del E-Business Suite o de alguna configuración existente. La herramienta de diagnóstico de Oracle es proporcionada para facilitar la recopilación y análisis de la información de a través de una prueba completa por responsabilidad.

Cuando se crea un nuevo usuario y se le da la opción de acceder a esta responsabilidad, recibe un error al intentar ejecutar una prueba de diagnostico:

Testgroup is secured and requires execution privileges




Un TestGroup es un Grupo de prueba relacionado, el cual puede tener una sensibilidad asignado (baja, media, alta) y las responsabilidades pueden tener los siguientes roles:

Super User: El Super Usuario puede ejecutar, configurar, visualizar informes y configurar la seguridad para todos los grupos de todas las aplicaciones

Aplicación Super User: El Super Usuario de Aplicaciones puede ejecutar, configurar los parámetros y ver los informes de todos los grupos de su aplicación. Puede ejecutar, configurar los ingresos y ver informes de los grupos de baja sensibilidad de otras aplicaciones


Application End UserEl Usuario Final de Aplicaciones puede ejecutar, configurar los parámetros y ver los informes de los grupos de baja sensibilidad de todas las aplicaciones

El acceso de un usuario en particular para las pruebas de diagnóstico se determina por las responsabilidades asignadas a ese usuario y los roles otorgados a las responsabilidades. Por lo general un usuario quien tiene la responsabilidad de Administrador del sistema puede acceder a realizar diagnósticos ya que contiene los privilegios necesarios. En caso se requiera dar acceso a una nueva responsabilidad se debe  configurar por un usuario que tenga la responsabilidad de el Administrador de Sistema.

Configuración de acceso a Herramientas de Diagnóstico Oracle 
Ingresar al Oracle y navegar a la responsabilidad de Herramienta de Diagnóstico de Oracle >> Herramienta de Diagnostico.  Una vez situado en el ambiente web Oracle Diagnostics ir a la opción Configuration y dar luego a la opción Security.



A continuación la región inferior le mostrara tres opciones a escoger. Para ello debe dar clic a la opción Application Super User.


A continuación la región inferior se actualizará mostrando una lista de valores el cual se debe escoger la aplicación System Administration (Es la aplicación donde se encuentra la responsabilidad a agregar permisos de Super Usuario).



Se actualizará la pagina web donde de la lista de Available Responsibilities debemos transferir una responsabilidad dentro de la lista Selected Responsibilities, para ello seleccionamos la responsabilidad a la que se quiere dar acceso y damos clic en el botón con el símbolo >.


Una vez que la  responsabilidad este dentro de la lista Selected Responsibilities, una vez confirmado dar clic al botón Save amos clic en el botón con el símbolo >.
Cerrar sesión y consultar con el usuario y la responsabilidad con la que se dio el acceso. Se podrá verificar que ya se puede ingresar los parámetros respectivos por por diagnostico.

viernes, 20 de noviembre de 2015

Creando asientos contables en Payables

Puede crear asientos contables en Payables de dos maneras:
  • Ejecutando el Proceso Contable de Payables.
  • Crear asientos contables para una sola transacción o lote.
Después de que el proceso se complete, Payables produce el Informe Proceso Contable de Cuentas a Pagar. El informe de excepciones muestra todas las transacciones que se encontraron con errores. En la ventana de Actualizar asientos contables, puede actualizar los asientos contables que se crearon con cuentas válidas. Para ello debe ir a una responsabilidad de Payables >> Contabilidad >> Actualizar Asientos Contables

Proceso Contable de Payables
Ejecutar este proceso por lotes para crear asientos contables en Payables. 


Después de que el proceso se ha completado, puede ver los nuevos asientos contables en la ventana de Visualizar Líneas ContablesPara ello debe ir a una responsabilidad de Payables >> Contabilidad >> Visualizar Líneas Contables. Aquí también puede actualizar el asiento dando clic al botón Actualizar Contabilidad.



Informe Proceso Contable de Cuentas a Pagar
Este informe es para revisar los asientos contables creados por el proceso Contable de Cuentas a Pagar. El informe consta de dos secciones:

Informe Auditoría Asientos Contables. El informe de auditoría establece, en detalle o resumen, una lista de asientos contables creados por el proceso de contabilidad.


Informe de Excepciones de Asientos Contables. El informe de excepción enumera con detalle todos los asientos contables que se crearon con un estado de error y una descripción de ese error. Se genera el informe sólo cuando el proceso contable se encuentra con asientos no validados.

Tenga en cuenta que si bien el proceso contable de Payables se somete a una clase de documento, el informe está organizado por categorías de asiento. Oracle General Ledger asocia cada uno de sus asientos contables con una categoría de asiento. Esta categoría se utiliza para indicar la finalidad o naturaleza de la transacción. Hay tres categorías de ingreso de transacciones de Oracle Payables.

Facturas de compras: Asignados a los asientos procedentes de los eventos contables de factura. Los eventos contables de factura pertenecen a la Clase de Documento Factura.

Pagos: Asignados a los asientos procedentes de los eventos contables de pago, excepto los Pagos Conciliados. Los eventos contables de  pago pertenecen a la Clase de Documento Pago.

Pagos Conciliados: Asignados a los asientos procedentes de los eventos contables de Pagos Conciliados. Los eventos contables de  pago pertenecen a la Clase de Documento Pago.

martes, 17 de noviembre de 2015

Query para obtener información de transacciones por Pedido de Movimientos

En Oracle Inventory podemos realizar pedidos de Movimiento de una organización de Inventarios a otro. Una vez aprobado y transaccionado se genera movimientos de material por la transacción, Las siguientes tablas se utilizan en el proceso de Pedidos de Movimiento.

MTL_TXN_REQUEST_HEADERS: Tabla donde se localiza la cabecera de los pedidos de movimientos donde se almacena el número de Pedido de movimiento en la columna (REQUEST_NUMBER). Tiene un estado, pero esto no se utiliza tanto como el estado de las líneas para conducir la funcionalidad.

MTL_TXN_REQUEST_LINES: Tabla donde se localiza las línea de los pedidos de Movimiento, este es el que impulsa más consultas y comprobaciones de estado del pedido de movimiento, ya que cada línea puede ser transaccionado de forma individual.

MTL_MATERIAL_TRANSACTIONS_TEMP: Tabla temporal de transacciones de material también llamado la tabla  de transacción temporal, esto retiene las asignaciones que actúan como reservas de inventario. Una asignación es donde tienes que elegir un artículo específico en el inventario hasta el lote, localizador, serial, revisión de movimiento, pero no se realiza en realidad el movimiento.

MTL_MATERIAL_TRANSACTIONS: Tabla que almacena un registro de cada transacción de materiales o de cada actualización de costos realizado en Inventarios. La columna move_order_line_id contiene el id d la línea del pedido de movimiento transaccionado.

1. Cuando se crea el pedido de movimiento se tiene los siguientes valores:
Quantity: 10
Quantity_Delivered: NULL
Quantity_Detailed: NULL
Required_ Quantity: NULL
Line_Status: 1 (Incompleto)

2. Cuando se aprueba el  pedido de movimiento se tiene los siguientes valores:
Quantity: 10
Quantity_Delivered: NULL
Quantity_Detailed: NULL
Required_ Quantity: NULL
Line_Status: 3 (Aprobado)

3. Cuando se asigna el  pedido de movimiento se tiene los siguientes valores:
Quantity: 10
Quantity_Delivered: NULL
Quantity_Detailed: 10
Required_ Quantity: NULL
Line_Status: 3 (Aprobado)

4. Cuando se transacciona el  pedido de movimiento se tiene los siguientes valores:
Quantity: 10
Quantity_Delivered: 10
Quantity_Detailed: 10
Required_ Quantity: NULL
Line_Status: 5 (Cerrado)

NOTA: Cuando un pedido de movimiento se asigna, se inserta un registro correspondiente en la tabla de pendientes MTL_MATERIAL_TRANSACTIONS_TEMP. Cuando el pedido de movimiento se transacciona, el registro se mueve de la tabla pendiente a la tabla histórica MTL_MATERIAL_TRANSACTIONS.

a) Ejemplo de consulta para enlazar pedidos de movimiento con la tabla pendientes:

SELECT mmtt.transaction_temp_id,
  tol.organization_id,
  toh.request_number,
  toh.header_id,
  tol.line_number,
  tol.line_id,
  tol.inventory_item_id,
  toh.description,
  toh.move_order_type,
  tol.line_status,
  tol.quantity,
  tol.quantity_delivered,
  tol.quantity_detailed
FROM mtl_txn_request_headers toh,
  mtl_txn_request_lines tol,
  mtl_material_transactions_temp mmtt
WHERE toh.header_id = tol.header_id
 AND toh.organization_id = tol.organization_id
 AND tol.line_id = mmtt.move_order_line_id;

b) Ejemplo de consulta que une MTL_MATERIAL_TRANSACTIONS a la orden de movimiento:

SELECT mmt.transaction_id,
  tol.organization_id,
  toh.request_number,
  toh.header_id,
  tol.line_number,
  tol.line_id,
  tol.inventory_item_id,
  toh.description,
  toh.move_order_type,
  tol.line_status,
  tol.quantity,
  tol.quantity_delivered,
  tol.quantity_detailed
FROM mtl_txn_request_headers toh,
  mtl_txn_request_lines tol,
  mtl_material_transactions mmt
WHERE toh.header_id = tol.header_id
 AND toh.organization_id = tol.organization_id
 AND tol.line_id = mmt.move_order_line_id
 AND toh.request_number = '&PedidoMovimiento';

La tabla de pedidos de movimientos (MTL_TXN_REQUEST_LINES) proporciona el estado del pedido en la columna de la LINE_STATUS como numérico. A continuación se enumeran los diferentes estados y de los códigos:

 1 Incompleto
 2 Aprobación Pendiente
 3 Aprobado
 4 No Aprobado
 5 Cerrado
 6 Cancelado
 7 Pre-Aprobado
 8 Parcialmente Aprobado
 9 Cancelado por Origen

Estos se pueden encontrar en el lookup MTL_TXN_REQUEST_STATUS:


Configurar MRC(Divisas Múltiples de Información)

Para configurar  MRC Divisas Múltiples de Información, primero debemos establecer las divisas con el cual se va a trabajar con los libros.  Para ello debemos ir a una responsabilidad de General Ledger >> Configuración >> Divisas >> Definir. Podemos utilizar las divisas ya definidas en esta pantalla para ello solo debemos marcar el campo Activado y grabar. Si fuera el caso ingresar la información de la nueva divisa en la pantalla.





Definir Juego de Libros de Información
Una vez definido las divisas debemos crear los tipos  de cambio , completado esta opción ya podemos crear el Juego de Libros Primario y el de información.  Cuando se crea el juego de libros por defecto  en la pestaña Divisas Múltiples de Información se marca como tipo Juego de Libros Primario. para crear nuestro segundo juego de libros de información debemos seleccionar el tipo juego de libros de Información. Para ello debemos ir a General Ledger >> Configuración >> Financiera >> Libros >> Definir.



Para utilizar MRC, debe definir  juego de libros de Información  y asociarlos con su juego de libros primario. Tener en cuenta que un  juego de libros de Información  es una entidad de información financiera que se asocia con un juego de libros primario. El  juego de libros de Información tiene el mismo plan de cuentas y calendario contable como el primario, pero por lo general tiene una moneda funcional diferente.

Una vez definido los juegos de libros, se deben crear las responsabilidades para asignar los datos del juego de libros de Información. Debe asignar los siguiente perfiles:

Nombre de Juego de Libros de GL
MRC: Informando Juego de Libros


No es obligatorio crear Responsabilidades de AP/AR en 10.5.2 como podemos comprobar la contabilidad en las responsabilidad asignadas a  juego de libros de Información y primaria en sí. Las responsabilidades auxiliares como AP, AR, PO, etc no requieren una responsabilidad separada para reflejar la datos del libro auxiliar. Después que los datos son contabilizados en AP y AR, se puede comprobar navegando en la pantalla Ver contabilidad y dando clic en el botón divisa alternativa

Luego de configurar los perfiles debemos definir el primer periodo para el Juego de Libros de Información para ello ir a General Ledger >> Configuración >> Abrir / Cerrar.  Los primeros períodos de calendario para el juego de libros no tiene que ser el mismo que el juego de libros de Información.

Asignar Juego de Libros de Información al Primario
La pantalla Asignar Juego de Libros de Información sirve para asignar cada juego de libros de información a su juego de libros primario. Tenga en cuenta las siguientes reglas:

Puede asignar hasta ocho juego de libros de información para un único juego de libros primario. La mayoría de organizaciones encontrarán la necesidad de asignar a más de tres.

Precaución: Si necesita asignar más de tres juego de libros de información a un juego de libros primario, esto  tendrá un impacto incremental en el rendimiento y el consumo de espacio en disco de su sistema.

Puede asignar el mismo juego de libros de información a más de un juego de libros primario, siempre que todos ellos tengan el mismo calendario y plan de cuentas.Esto se necesita para consolidar las transacciones de varios juegos de libros primarios en la misma moneda de reporte.

No se puede asignar un juego de libros primario a otro juego de libros primario o juego de libros de información.


Si utiliza la contabilidad base combinada de Oracle Payables, sólo es necesario asignar el juego de libros de información asociado al juego de libros primario de Oracle Payables. La relación de Payables para el juego de libros de información se realizará en el siguiente paso al definir las opciones de conversión de Payables.

Para asignar un juego de libros del información al primario debemos ir a  ir a General Ledger >> Configuración >> Financiera >> Libros >> Asignar.  Seleccione el el juego de libros primario de la lista de valores. En la lista de valores en la región inferior, seleccione el  Juego de Libros de Información que desea asignar al primario. 


Dar al botón Opciones de conversión para definir las opciones de conversión para cada combinación de Aplicación de Oracle y la unidad operativa para la que desea convertir las transacciones a su moneda funcional de informes para el juego de libros primario. Una vez terminado guardar los cambios, con esto ya ha configurado la funcionalidad de Divisas Múltiples de Información

viernes, 13 de noviembre de 2015

Cargar imagenes por XML Publisher

Para insertar imágenes en una plantilla rtf hay dos opciones. Uno es cargarlo por medio de una ruta en el servidor de aplicaciones donde se almacena la imagen que deseamos cargar a nuestra plantilla o almacenar la imagen en una tabla dentro de base de datos como un tipo Blob.

Cargar imagen por ruta
Debemos  insertar una imagen ficticia en su plantilla. Esta debe ser una imagen estática. Para eso basta con hacer clic en el vacío donde tenemos que insertar la imagen. Por ejemplo vamos a colocar la imagen en el lado izquierdo de la página. Coloque el cursor en algún lugar en el lado izquierdo de la página y ahora ve a la pestaña Insertar >> Ilustraciones >> Imagen.  Seleccione una de las imágenes y seleccione Insertar.



A partir de la imagen haga click derecho y seleccionar Tamaño. Ir a la pestaña texto alternativo.



Aquí debemos ingresar  la siguiente sintaxis para hacer referencia al directorio donde se ubica el archivo.

url:{'${XXTOP}/<IMAGE_NAME>'}

XXTOP es nuestro directorio basepath donde se ubica nuestra imagen, seguido del nombre exacto del archivo más su extensión. También es posible colocar toda la ruta completa  o indicar por medio de un valor el nombre del archivo:

Ejemplos:

url:{'/u02/oracle/testappl/xxtop/11.5.0/LOGOTIPOx.GIF'}
url:{'${XXTOP}/LOGOTIPOx.GIF'}
url: {concat{‘${XXTOP}’ , ‘ / ‘,IMAGE_FILE)}


Una vez colocado el texto, debemos dar cerrar. Podemos diseñar nuestra plantilla con la imagen ficticia, recordar que al momento de ejecutar el reporte la imagen sera modificado por la imagen a la cual le hemos colocado en el comando. previamente debemos subir la imagen al servidor de aplicaciones. La plantilla en este caso queda de la siguiente manera:



Extraer imagen por campo Blob 
Si almacena imágenes en Base de datos debe tener en cuenta que si desea enviarlo por  la estructura  XML tiene que realizar cierta codificación. A partir de la versión 5.6.2 del motor de datos XMLP  la extracción de imágenes blob se puede hacer directamente en el código XML. Puede obtener  y almacenar en un formato base64 el cual no tiene límite en el tamaño del BLOB,es decir que puede obtener más de 64 KB de datos en el formato codificado. Hay otros métodos para obtener los datos del blob, pero debe ser en formato base64.

Por ejemplo para realizar la conversión se ha optado por hacer la siguiente función.
  
FUNCTION GET_BASE64STRING( P_BLOB BLOB )
RETURN CLOB IS L_RESULTADO CLOB;

BEGIN
DBMS_LOB.CREATETEMPORARY(LOB_LOC => L_RESULTADO, CACHE => FALSE, DUR => 0);
WF_MAIL_UTIL.ENCODEBLOB (P_BLOB, L_RESULTADO);
  
RETURN L_RESULTADO; 
END GET_BASE64STRING; 
END XX_BASE64;

Terminado la función y colocado en un paquete podemos llamar al campo donde se encuentra nuestro BLOB de la siguiente manera:

XX_BASE64.get_base64String(IMAGEN_BLOB)

 La función dará como resultado una salida CLOB, tener en cuenta que debemos usar to_char para la versión de 5.6.2 del editor XML, los tipos CLOB están bien a partir del 5.6.3. en el caso de convertirlo a texto tenemos un límite de 4000 caracteres por lo que se debe tener en cuenta al momento de obtener los datos.

TO_CHAR(SUBSTR(XX_BASE64.get_base64String(IMAGEN_BLOB), 1, 4000))

En este caso se ha elaborado por plantilla de datos para enviar la información del oracle por medio de XML y mostrar por una plantilla rtf. A diferencia de Oracle Reports realizar el query y la forma de enviar los datos es mas fácil.



Para referenciar el campo en la plantilla, debemos colocar en el texto de ayuda lo siguiente:

<fo:instream-foreign-object content-type="image/jpg">   
<xsl:value-of select="IMAGEN"/>  
</fo:instream-foreign-object>   


Tener en cuenta que si en el xml solo hubiera una etiqueta con una imagen debe cambiarlo de la siguiente manera : <xsl:value-of select="//IMAGEN"/>  


La plantilla  tiene que saber el tipo de imagen, en este caso "image/jpg". El IMAGEN contiene los datos en Base64 los datos de imagen. 

Al ejecutar el reporte saldrá de la siguiente manera:




lunes, 9 de noviembre de 2015

Calificadores Flexfields



Un Calificador FlexField identifica un segmento particular de un FlexField clave. Por lo general, una aplicación necesita algún método de identificación de un segmento particular para algún propósito como la seguridad. Sin embargo, desde un FlexField clave puede ser personalizado de manera que los segmentos aparecen en cualquier orden, la aplicación necesita un mecanismo que no sea el nombre del segmento u orden segmento de utilizar para la identificación de segmento.

Por ejemplo, Oracle General Ledger tiene que ser capaz de identificar qué segmento en el FlexField Contable contiene información de balance y qué segmento contiene información de la cuenta natural. Ya que se puede personalizar el FlexField Contable de modo que los segmentos aparecen en cualquier orden con las instrucciones, Oracle General Ledger necesita el calificador FlexField para determinar qué segmento está utilizando para la información de cuenta natural. Al definir su FlexField Contable, debe especificar qué calificadores FlexField se aplican a qué segmentos.

Un segmento calificador  identifica un tipo particular de valor en un solo segmento de un FlexField clave. Cuando se define un valor de segmento para su segmento de cuenta natural en la ventana de valores de segmento, también debe asignar calificadores que determinan el tipo de cuenta (activos, pasivos, gastos, ingresos o propiedad), si se permite el presupuesto, si se permite la contabilización y otra información específica para el valor del segmento. 

Cuando cambia las Autorizaciones de Presupuesto o de Contabilización para los valores de segmento que ya se han definido, también debe hacer un cambio correspondiente a todas las cuentas que incluyen el valor en las combinaciones contables.

Puede ejecutar el Programa - Heredar Atributos de Valores de Segmentos para propagar estos cambios en todas las cuentas que contienen el valor del segmento modificado en lugar de cambiar todas las combinaciones individualmente en la ventana Cuentas contables.


Puede definir los siguientes calificadores de segmento para su FlexField Contable:

Tipo de cuenta: Define el tipo de cuenta para el valor de segmento de cuenta natural. Puede ingresar tipos de cuenta como Activo, Gasto, Pasivo, Propiedad e Ingresos

Autorizar Presupuestación: Indica si General Ledger debería permitir presupuesto detallado de las cuentas con este valor de segmento.

Autorizar Contabilización: Indica si General Ledger debería permitir la contabilización detallada del Flexfield contable con este valor de segmento.

Reconciliación: Indica si General Ledger debería permitir la reconciliación de cuentas naturales que deben equilibrar a cero. Puede activar o desactivar la reconciliación para un valor de segmento de cuenta o por combinaciones específicas.

Control de cuentas: Control de cuentas  son las cuentas de General Ledger  accede desde Oracle Payables, Receivablese Inventory, para  mostrar los saldos detallados. El calificador permite indicar que valores de segmento representan control de cuentas.


Otro Calificadores de Segmento: Puede definir calificadores  de segmentos adicionales que son utilizados por otras aplicaciones de Oracle y sus programas personalizados.