miércoles, 29 de abril de 2015

Raise Form_Trigger_Failure en Forms Personalization

La  declaración Raise Form_Trigger_Failure  es el uso para congelar un  programa cada vez que sea necesario. Normalmente, en las formurlarios de Oracle utilizamos esta declaración para congelar el formulario cada vez que se produjo un error. Esta declaración mayormente es útil cuando se hace  validaciones de por medio.

Podemos usar esta declaración para manejar un error si durante una validación falla y no queremos que se continúe el proceso.  Siempre se recomienda usar junto a esta excepción un mensaje para informar al usuario que se produjo un erro ya que de lo contrario no se mostrara mensaje alguno.

Agregar en forms Personalization
Primero debemos  agregar un menú en la opción de  Herramientas. Para personalizar debemos ir a Ayuda >> Diagnóstico >> Código Personalizado >> Personalizar. Crearemos una primer personalización a nivel de Función y usaremos el Evento Trigger WHEN-VALIDATE-RECORD


Luego debemos indicar un bloque a validar porl ocual debemos seleccionar uno en Objeto Trigger. Si fuera necesario podemos indicar una Condición para nuestra personalización. Pues bien ahora que tenemos creado nuestra condición antes de crear la excepción  podemos crear en Acciones un mensaje para mostrar en caso valida el evento en verdadero.

Posterior al mensaje creamos otra acción  y debemos escoger el Tipo de Acción Incorporado. Como Tipo Incorporado podemos seleccionar RAISE_FORM_TRIGGER_FAILURE. Con esto el formulario se congela al validar.


martes, 28 de abril de 2015

Tablas de Receivables



Receivables utiliza las siguientes tablas para almacenar sus cuentas de transacciones por cobrar:

RA_CUSTOMER_TRX_ALL
Esta  tabla almacena las cabeceras de  facturas, notas de débito, crédito y otras transacciones. Cada una de estas transacciones se almacena como un registro único, basado en la clave principal, Customer_trx_id. El número de transacción, fecha de transacción y el cliente de facturación se almacenan en las columnas Trx_number, Trx_date  y Bill_to_customer_id, respectivamente.

Información adicional almacenada en esta tabla incluye el  ship_to_customer_id , el número de secuencia, código de moneda y un flag que nos indica si la transacción esta completa o finalizada.  El tipo de transacción para la factura se almacena en la tabla RA_CUST_TRX_TYPES, pero se puede hacer referencia a través de la columna cust_trx_type_id.

RA_CUSTOMER_TRX_LINES_ALL
Esta  tabla almacena las lineas de  facturas, notas de débito, crédito y otras transacciones. Cada línea de transacción se almacena como un registro único, basado en la columna Customer_trx_line_id. La columna customer_trx_id es una clave externa a la tabla RA_CUSTOMER_TRX_ALL. 

La columna Line_type identifica el tipo de datos contenidos en el registro. Tipos de línea válidos son CHARGES, FREIGHT, LINE y TAX. Cualquier registro con un tipo de línea de TAX o de FREIGHT se refiere a la línea original de la factura a través de la columna  Link_to_cust_trx_line_id. La cantidad total de cada línea de transacción se almacena en la columna  extended_amount.

RA_CUST_TRX_LINE_SALESREPS_ALL
Esta tabla almacena las asignaciones por venta a credito de líneas de factura. Cada asignación se almacena como un registro único, basado en la clave principal, Cust_trx_line_salesrep_id. Si se basa sus distribuciones contables en créditos de ventas, estos se almacenan en la tabla RA_CUST_TRX_LINE_GL_DIST_ALL. La columna Sales_rep_id identifica al vendedor que recibe el crédito por esta transacción. La columna customer_trx_line_id es una clave externa a la tabla RA_CUSTOMER_TRX_LINES_ALL.

La columna Revenue_amount_split almacena la cantidad de la línea de factura asignado a este vendedor. La columna Non_revenue_amount_split almacena el importe de los fletes e impuestos de las  líneas. Si el crédito de ventas se obtuviera en base a un porcentaje de la línea de transacción en lugar de una cantidad específica, las columnas revenue_percent_split y non_revenue_percent_split almacenarían los porcentajes de las líneas de transacción asignadas a este vendedor.

 La columna prev_cust_trx_line_salesrep_id referencia a otro crédito de ventas a la que se está aplicando el registro actual.

RA_CUST_TRX_LINE_GL_DIST_ALL
Esta tabla almacena la distribución contable facturas, notas de débito, crédito y otras transacciones.  Cada distribución se almacena como un registro único, basado en la clave principal, cust_trx_line_gl_dist_id. La columna customer_trx_line_id es una clave externa a la tabla RA_CUSTOMER_TRX_LINES_ALL. La columna account_class describe el tipo de cuenta, mientras que la columna code_combination_id identifica la cuenta de GL. Clases de cuentas válidas son CHARGES, FREIGHT, REC, REV, SUSPENSE, TAX, UNBILL y UNEARN. 

El account_class, REC, representa la distribución de la cuenta por cobrar. La columna Amount para registros REC es igual a la suma de todas las líneas de factura. Por lo tanto, no existe un vínculo a RA_CUSTOMER_TRX_LINES_ALL y la COLUMNA customer_trx_line_id que sea nula para estos registros. El registro REC está vinculada a la tabla, RA_CUSTOMER_TRX_ALL, a través de la columna customer_trx_id. Para todas las demás clases de cuentas, los créditos están representados por números positivos y débitos están representados por números negativos.

AR_PAYMENT_SCHEDULES_ALL
Esta  tabla almacena toda la información del cronograma de pagos del cliente. El bañance de cada transacción se almacena como un registro único, basado en la clave principal, payment_schedule_id. La columna Class identifica el tipo de transacción y determina qué columnas AR actualiza  cuando se almacena una transacción. Para las transacciones de facturación, la tabla AR_PAYMENT_SCHEDULES_ALL  une a la tabla RA_CUSTOMER_TRX_ALL a través de la columna  customer_trx_id y guarda  NULL en la columna  cash_receipt_id. Para las operaciones de pago, la tabla AR_PAYMENT_SCHEDULES_ALL  une a la tabla  AR_CASH_RECEIPTS_ALL  a través de la columna cash_receipt_id y guarda  NULL en la columna  customer_trx_id.



La columna Status identifica si la transacción si está abierta o cerrada, mientras que la columna  trx_number almacena el número de transacción. La columna amount_applied almacena la suma de todas las transacciones aplicadas al saldo de la transacción seleccionada. La columna amount_due_original es igual, ya sea la suma de la columna extended_amount en la tabla RA_CUSTOMER_TRX_LINES_ALL para el customer_trx_id o la suma de la columna amount en la tabla AR_CASH_RECEIPTS_ALL  para el cash_receipt_id. La columna amount_due_remaining representa el saldo de la transacción seleccionada.

Para las columnas amount_due_original y amount_due_remaining, tales como facturas de débito, se almacenan como números y elementos de crédito, tales como notas de crédito y pagos positivos, se almacenan como números negativos. El balance actual de clientes se refleja en la suma de la columna de la amount_due_remaining para todos los cronogramas de pago confirmados para un cliente determinado.

AR_ADJUSTMENTS_ALL
Esta  tabla almacena la información sobre los ajustes en las  facturas. Cada ajuste se almacena como un registro único, basado en la clave principal, adjustment_id. La columna amount almacena el valor del ajuste.  AR utiliza el customer_trx_id y payment_schedule_id para vincular el ajuste a la operación ajustada y actualizar las columnas amount_due_remaining y amount_adjusted  del cronograma de pagos en la tabla AR_PAYMENT_SCHEDULES.

La columna type almacena una descripción de la operación a la que se aplica el ajuste. Los tipos válidos incluyen Charges Adjustments, Freight Adjustments, Invoice Adjustments, Line Adjustments y Tax Adjustments. La columna code_combination_id almacena la combinación contable asociado a la transacción de ajuste.


AR_RECEIVABLE_APPLICATIONS_ALL
Esta  tabla almacena las distribuciones para aplicaciones de recibos, nota de crédito y los cronogramas de las transacciones aplicadas. Cada distribución contable se almacena como un registro único, basado en la clave principal, receivable_application_id. La columna payment_schedule_id une el recibo o nota de crédito a su cronograma de pagos en la tabla AR_PAYMENT_SCHEDULES_ALL. La columna cash_receipt_id almacena el identificador del recibo de las transacciones de pago. Las columnas  applied_payment_schedule_id y applied_customer_trx_id hacen referencia a la operación a la que se aplica este registro.

La columna Status describe el estado de la transacción aplicada.  Para las notas de crédito, el estado será siempre APP para identificar la nota de crédito aplicada. Para las transacciones de recibos, los valores válidos son APP, UNAPP, UNID, REV, NSF, y STOP. La columna code_combination_id almacena la combinación contable para la transacción aplicada, en función del estado. La columna amount_applied almacena el importe del recibo o nota de crédito como un valor positivo.

AR_CREDIT_MEMO_AMOUNTS
Esta  tabla almacena  las fechas de GL y los importes de las notas de crédito a utilizar cuando se aplican a las facturas con reglas. Cada fecha de aplicación de nota de credito se almacena como un registro único, basado en la clave principal, credit_memo_amount_id. El customer_trx_line_id hace referencia a la línea de transacción a la que se aplica esta nota de crédito. La columna GL_DATE almacena la fecha en que la nota de crédito se debe aplicar a la factura y la columna columna amount la cantidad a aplicar.

AR_CASH_RECEIPTS_ALL
Esta  tabla almacena un registro único para cada recibo, sobre la base de la clave primaria, cash_receipt_id. La columna Status describe el estado de la recepción en relación con las facturas de clientes y saldos. Los Valores de estado válidos son:

UNID : El recibo no está identificado y no se  ha actualizado el saldo del cliente.
UNAPP : El recibo está identificado, pero el recibo no se ha aplicado por completo a una factura específica o se ha colocado en cuenta.
APP : Todo el importe del recibo se ha colocado en cuenta o se aplica a las facturas de clientes específicos.
REV:  El recibo se ha invertido.
NSF:  El recibo se ha invertido por falta de fondos.
STOP: El recibo se ha invertido por una suspensión de pago.

La columna type identifica el recibo como CASH o MISC para indicar si el recibo es un pago del cliente o un recibo varios (no relacionada con una actividad por cobrar). La columna amount almacena el importe neto de la factura, mientras que la columna receipt_number almacena numero de recibo.

AR_CASH_RECEIPT_HISTORY_ALL
Esta tabla almacena el estado actual y el historial de un recibo. Cada cambio de estado se almacena como una transacción única, basada en la clave principal, cash_receipt_history_id. La columna de estado describe qué etapa del ciclo de vida del recibo ha llegado. Los valores de estado válidos son:

APPROVED 
Esto sólo es válido para los recibos automáticos y significa que el recibo ha sido aprobado para la creación automática. Estos tipos de registro no son nunca postable.

CONFIRMED 
Esto sólo es válido para los recibos automáticos y significa que el recibo ha sido confirmado por el cliente.

REMITTED 
Esto es válido tanto para los recibos manuales y automáticas y significa el recibo ha sido remitido.

CLEARED
Esto es válido tanto para los recibos manuales y automáticas y significa que el recibo se ha liberado.

REVERSED
Esto es válido tanto para los recibos manuales y automáticas y significa que el recibo se ha invertido.

A medida que los recibos se mueve a través de su ciclo de vida, AR inserta un nuevo registro en AR_CASH_RECEIPTS_HISTORY con la columna de current_record_flag establecido en 'Y'. Receivables  también actualiza el registro previo relacionado con este recibo, estableciendo la current_record_flag a NULL y estableciendo el reversal_gl_date. La columna amount almacena la cantidad del recibo.

AR_MISC_CASH_DISTRIBUTIONS_ALL

Esta tabla almacena la distribución contable de los ingresos en efectivo diversos. Cada distribución se almacena como un registro único, basado en la clave principal, misc_cash_distribution_id. Las distribuciones están vinculadas al recibo por la columna cash_receipt_id. La columna code_combination_id almacena la combinación contable asignado a este recibo.

lunes, 27 de abril de 2015

Definir Tooltip en Oracle forms


Un Tooltip es un  texto de ayuda que debe aparecer como una sugerencia al colocar el cursor del mouse sobre cualquier elemento dentro de un bloque de Datos. Este tipo de descripción es de mucha utilidad para poder describir o dar un comentario adicional acerca a algún botón o campo que se coloca a nivel de un formulario.

Como Crear un Tooltip
Para crear una Tooltip debemos abrir el Form Builder y debemos ubicarnos en algún elemento de Bloque de Datos. Luego debemos editar sus propiedades. 


Debemos ubicarnos en la región de Ayuda(Help) donde debemos tener en cuenta dos campos. El campo Tooltip se debe colocar la descripción o mensaje que se visualizara al colocar el cursor sobre el elemento. El campo Tooltip Visual Attribute Group es un Atributo Visual para aplicar al Tooltip durante su ejecución.

Con esto el Tooltip ya esta creado y para hacerlo funcionar debemos grabar  y compilar el formulario para subirlo al EBS. Tan solo debemos colocar el cursor sobre el elemento y se podrá visualizar el mensaje que hemos agregado como Tooltip.


viernes, 24 de abril de 2015

Administrador de Workflow

Administrador de Workflow es un componente de Oracle Applications Manager que permite a los administradores de sistemas para la gestión de Oracle Workflow para  múltiples instancias de aplicaciones de  Oracle desde una única consola.



Al utilizar Oracle Workflow Manager, los administradores pueden controlar los servicios del sistema del Workflow, tales como correos de notificación y otros componentes de servicios. Los administradores también pueden controlar el procesamiento de elementos de trabajo y  pueden controlar el procesamiento de mensajes. Con esta capacidad pueden hacer seguimientos de los elementos de trabajo y mensajes de sucesos, un administrador del sistema puede identificar posibles cuellos de botella fácilmente. Este acceso se localiza en Administrador de Workflow >> Administrador de Workflow.

Servicios del sistema
La sección sistema de Workflow ofrece una visión de alto nivel sobre el estado del sistema. La página muestra la fecha y hora en que la información se actualizó por última vez. Para actualizar esta información, haga clic en el icono de actualización. Tener en cuenta que la información de estado del sistema se consulta directamente, por separado de los programas concurrentes de estadísticas de Oracle Workflow.


El estado de cada característica se muestra en UP(Activo) o Down(Desactivado) , de los cuales podemos encontrar:

Notification Mailers
Para gestionar los componentes del servicio del gestor de correo de notificación.

Agent Listeners
Para administrar los componentes del servicio de los receptores.

Service Components
Para gestionar todo tipo de componentes de servicio.

Background Engines
Para ver las solicitudes concurrentes en segundo plano del flujo de trabajo.

Purge
Para ver información resumida sobre las solicitudes concurrentes depurados en tiempos de ejecución del workflow y elementos de trabajo completado.

Control Queue Cleanup
Para ver flujo de trabajo de control de cola de  solicitudes simultáneas de limpieza.


Los iconos de estado representa lo siguiente:

Down
Al menos un componente de servicio de este tipo tiene el estado Detenido con un error o Sistema Desactivado. 

Up
Al menos un componente de servicio de este tipo tiene un estado de funcionamiento o suspendida, y no hay componentes con un estado Detenido  o Sistema Desactivado.

Unavailable
No hay componentes de servicio con el estado En ejecución, Suspendido, Detenido o Sistema Desactivado. En este caso puede ser que todavía no este configurado el sistema.


jueves, 23 de abril de 2015

XML Publisher - Error biblioteca de Objetos no es valida




Cuando se trabaja en Oracle BI Publisher es muy importante tener los macros habilitados para poder insertar nuestros campos de una Carga de Datos XML. Sin embargo hay ocasiones en que nos saldrá  el error : La Biblioteca de objetos no es válida o contiene referencias a definiciones de objeto que no se puede encontrar.

Este error se debe a un cambio en nuestro sistema. Esto se debe a una actualización del Windows correspondiente al Visual Basic. A mas detalle se debe al archivo .EXD el cual se crea para cada uno de los archivos de tiempo de ejecución del Visual Basic Designer. Cuando  se actualiza, estos archivos .EXD ya existen y por lo tanto, se produce este error al no poder generar uno nuevo. 

Para corregir el error, es necesario eliminar los archivos .EXD. Por lo general el archivo causante del problema  se llama MSComctlLib.exd. Ahora un método para poder borrar el archivo es la siguiente:

1. Hacer clic en Inicio, usando la opción Ejecutar, elegir la palabra %temp% y dar aceptar.
2. En la carpeta que se abre, elimine las carpetas Excel 8.0 y la carpeta VBE.
3. Regresar a Ejecutar y escribir %appdata%.
4. Buscar en el directorio el archivo  MSComctlLib.exd.eliminarlo.

miércoles, 22 de abril de 2015

Creando Puestos de Trabajo

Los Roles representan las formas en que diferentes grupos de empleados trabajan dentro de una organización. En Oracle HRMS puede utilizar funciones o puestos, o una combinación, para definir roles.

Trabajo: Un trabajo es una función genérica dentro de un Grupo Empresarial, que es independiente de cualquier organización, Por ejemplo un Consultor. También puede utilizar los trabajos para establecer los roles complementarios que un empleado puede contener, por ejemplo, vigilancia de incendios, o la salud y el oficial de seguridad. Usted puede distinguir estos roles complementarios de otros puestos de trabajo mediante el uso de grupos de trabajo.


Puesto: Un puesto es una ocurrencia específica de un puesto de trabajo, fija dentro de una organización. Por ejemplo, la posición de Gerente de Finanzas sería una instancia del trabajo de gerente en la organización financiera. La posición pertenece a la organización. Puede haber uno, muchos, o no titulares de un puesto en cualquier momento.


Definir un Puesto
Primero debe definir  la estructura del Flexfield de Puesto el cual debe adaptarse a las necesidades específicas de su organización. Para ello navegar a Administrador de Sistema >> Aplicación >> Flexfield >> Clave >> Segmentos.  Ubicar el flexfield Position Flexfield y agregar el número de segmentos así como el nombre y el orden de cada segmento. 




Luego ya podemos definir nuevos puestos a la organización. Para ello debemos navegar a Administrador de HRMS >> Estructuras de Trabajo >> Puesto >> Descripción.  Para agregar un Puesto debemos dar la opción de Nuevo. La pantalla  Puesto nos ubicara en la pestaña Detalles Puesto. Aquí debemos ingresar  un puesto vigente de acuerdo a nuestra estructura de Puesto. luego debemos seleccionar  el tipo de puesto. Las opciones son:

Titular Único: lo que significa que sólo se permite un empleado para ocupar el cargo en cualquier momento
Compartido:  Significa que puede haber varios titulares,
Agrupado: El puesto no trabaja bajos las fechas efectivas del sistema,por lo general se configurar para el sector publico. 
Ninguno: Se puede seleccionar si no necesita ninguno Tipo anterior.


También debe seleccionar si el puesto sera permanente o estacional. Si el puesto sólo se utiliza en una temporada cada año (por ejemplo, un vendedor para cierta campaña de ventas), seleccione la casilla Estacional. 



En la región Organización y Trabajo,seleccione la organización y trabajo para este puesto.  Puede configurar varios puesto que tienen el mismo trabajo en la misma organización pero cada nombre de Puesto debe ser único. Para activar el puesto Indica el el estado Activo. Con esto ya estará activo el puesto


Opcionalmente en la pestaña Información Contratación,  puede ingresar el  tiempo completo  que se asignará a este puesto. Si el Tipo de Puesto es Titular Unico, el campo FTE debe ser de 1,0 o menos. Puede ingresar el número de titulares que se han previsto para el puesto en el campo Nomina. Igualmente puede completar la información salarial del trabajador.


martes, 14 de abril de 2015

Parámetros ERRBUF y RETCODE

Cuando se crear  un paquete PL/SQL de un programa concurrente hay dos parámetros obligatorios. Estos son:

ERRBUF: Se devuelve el mensaje de error. Para programar si obtienes un error en bloque de excepción puede asignar el mensaje de error para este parámetro. Este mensaje de error se puede ver después de la ejecución del programa concurrente ir al botón de detalles para ver el mensaje de error.

RETCODE: Este parámetro devuelve el estado del programa concurrente. el cual puede tener tres variables constantes definidas, llamadas FINALIZADO, ADVERTENCIA y ERROR. Estos se establecen en 0, 1 y 2, respectivamente. Para devolver un valor al gestor de concurrente sobre la terminación. Los valores de retorno válidos para el parámetro retcode son los siguientes:

0 - FINALIZADO
1 – ADVERTENCIA
2 –ERROR

Al crear nuestro paquete debemos asignar variables constantes para hacer que el código sea más fácil de leer. El otro parámetro que se devuelve es el parámetro errbuf. Podemos asignar texto a este parámetro para que podamos devolver mensajes de error si alguno se producen en tiempo de ejecución por lo que se muestra en el archivo de registro.

lunes, 13 de abril de 2015

Estructuras Condicionales IF - ELSE

Cuando se crean programas , por lo general se necesita para tomar decisiones. Por ejemplo, si es el final del año fiscal, los bonos deben ser distribuidos a los empleados en función de sus salarios. Para calcular es necesario emplear una estructura de selección. Esto permite controlar el flujo del programa de la ejecución sobre la base de una condición. En términos de programación, esto significa que las declaraciones en el programa no se ejecutan secuencialmente. Más bien, un grupo de estados u otra se ejecuta, dependiendo de cómo se evalúa la condición.




Estructura condicional IF
Una instrucción IF tiene dos formas: IF-THEN  y IF-THEN-ELSE. Una instrucción IF-THEN le permite especificar sólo un grupo de acciones a tomar. En otras palabras, se toma este grupo de acciones sólo cuando una condición se evalúa como VERDADERO. Una instrucción IF-THEN-ELSE permite especificar dos grupos de acciones. El segundo grupo de acciones se toman cuando una condición se evalúa como FALSO o NULL.

IF-THEN
Una instrucción IF-THEN es el tipo más básico de un control condicional; que tiene la siguiente estructura:


IF CONDITION THEN
   STATEMENT 1; 

END IF;


La palabra reservada IF marca el comienzo de la instrucción. La palabra CONDITION determina la condicional y STATEMENT la acción a tomar luego de cumplir la condición. Cuando se ejecuta una instrucción IF-THEN, una condición se evalúa a verdadero o falso. Si la condición se evalúa como verdadero, se pasa el control a la primera sentencia  Si la condición se evalúa como falso, se pasa el control a la primera sentencia ejecutable después de la instrucción END IF.

IF-THEN-ELSE
Una instrucción IF-THEN especifica la secuencia de instrucciones que se ejecutarán si la condición se evalúa como VERDADERO. Cuando esta condición se evalúa como FALSO, no hay ninguna acción especial para tomar, excepto para proceder a la ejecución del programa.

Una instrucción IF-THEN-ELSE permite especificar dos grupos de declaraciones. Un grupo de instrucciones se ejecuta cuando la condición se evalúa como VERDADERO. Otro grupo de instrucciones se ejecuta cuando la condición se evalúa como FALSO. Esto se indica como sigue:

IF CONDITION THEN
   STATEMENT 1;
ELSE
   STATEMENT 2;

END IF;

Cuando la condición se evalúa como VERDADERO, el control pasa a la STATEMENT 1; cuando la condición se evalúa como FALSO, el control pasa a STATEMENT 2. 

Error APP-FND-01706 en Asignaciones de Secuencias

Hay ocasiones en que cuando uno intenta asignar Categoría de Secuencias  se produce el siguiente error:




El error APP-FND-01706 es causado por dos motivos. Primero es posible que la Categoría la cual se esta asignando ya existe en una secuencia diferente. Normalmente para evitar este problema uno debe asignar una secuencia y dar fecha Final para grabar. Una vez realizado  solo podrá asignar secuencias sin asignación.

Esto también puede ocurrir si el formulario de Definir Secuencias estar abierto mientras se quiere asignar una secuencia.En estos casos se sugiere primero no tener las dos pantallas de Definir y Asignar al mismo tiempo. 

viernes, 10 de abril de 2015

Ingresar Cantidades de Unidades de Producción

Puede ingresar o actualizar las cantidades de producción para la depreciación de activos bajo unidades de producción. Puede ingresar la información de producción en línea,  o puede cargar la información mediante la interface de producción. Oracle Assets utiliza esa información para calcular la depreciación de sus activos de  unidades de producción.

Para ello debe utilizar un programa de importación para exportar datos de su sistema de alimentación y llenar en la tabla FA_PRODUCCIÓN_INTERFACE. Luego ejecutar el programa Cargar Producción para mover la información de su producción en los Activos de Oracle. 





Dicho programa pide como parámetro un Libro Corporativo para el que desea cargar la información de producción. Si aún no ha ejecutado la depreciación para un período, puede actualizar o volver a cargar cantidades de producción de los mismos rangos de fechas. 

El modulo de Activos sobrescribe las cantidades de producción con la nueva producción si vuelve a cargar la misma información. Ejecute el Informe Historial de Producción para revisar el estado de todos los registros importados. Finalmente la pantalla Producción periódica sirve para revisar, cambiar  o cargar  información de su producción.

Ingresar cantidades de Producción
Navegar a una responsabilidad de Assets >> Producción >> Ingresar. Saldrá la pantalla encontrar Importes de Producción,dar clic al Botón Nuevo. Nos ubicaremos en la ventana de Producción Periódica.


En el campo Numero Activo debe colocar aquellos activos que estén dentro de un libro corporativo para la cual se  desea introducir la información de producción. Aquí solo podrá encontrar activos que tenga como método Unidad de Producción. Ingresar los datos de las fechas en que se depreció el activo y la producción total de un activo.

Si aún no ha ejecutado la depreciación para un período, puede actualizar las cantidades de producción si es necesario. Para ello al ingresar nuevamente solo debe clocar los parámetros de búsqueda y dar Encontrar.

miércoles, 8 de abril de 2015

Query para obtener Valores de Perfiles

El siguiente query devuelve los valores colocados de cada Perfil colocados en los diferentes niveles del EBS.

SELECT po.profile_option_name as Perfil,
       po.user_profile_option_name Perfil_usuario,
       decode(to_char(pov.level_id),
              '10001',
              'Sucursal',
              '10002',
              'Aplicacion',
              '10003',
              'Responsabilidad',
              '10005',
              'Servidor',
              '10006',
              'Organizacion',
              '10004',
              'Usuario',
              '???') as nivel,
       decode(to_char(pov.level_id),
              '10001',
              '',
              '10002',
              app.application_short_name,
              '10003',
              rsp.responsibility_key,
              '10005',
              svr.node_name,
              '10006',
              org.name,
              '10004',
              usr.user_name,
              '???') as contexto,
       pov.profile_option_value as valor
  FROM apps.fnd_profile_options_vl    po,
       apps.fnd_profile_option_values pov,
       apps.fnd_user                  usr,
       apps.fnd_application           app,
       apps.fnd_responsibility        rsp,
       apps.fnd_nodes                 svr,
       apps.hr_operating_units        org
 WHERE 1 = 1
   AND pov.application_id = po.application_id
   AND pov.profile_option_id = po.profile_option_id
   AND usr.user_id(+) = pov.level_value
   AND rsp.application_id(+) = pov.level_value_application_id
   AND rsp.responsibility_id(+) = pov.level_value
   AND app.application_id(+) = pov.level_value
   AND svr.node_id(+) = pov.level_value
   and org.organization_id(+) = pov.level_value
   and po.profile_option_name='&profile'

 ORDER BY 1, pov.level_id, 5