lunes, 29 de diciembre de 2014

Crear tabla en base a la consulta de otra tabla

Es posible crear una tabla de una consulta de columnas de otra tabla con el fin de crear facilmente una nueva tabla o realizar un backup.  Por ejemplo veamos la sintaxis siguiente, donde  para la creación de una tabla tabla2 se copia la misma información de tabla1.

Create table tabla2 as select * from tabla1;

Con el comando anterior podemos recrear la misma información de tabla1 en una nueva tabla. Para entender a mas detalle , por lo general se crea una tyabla con ciertas columnas y cada uno bajo su tipo de datos que le corresponde, por ejemplo para tabla1 tenemos lo siguiente:

create table tabla1
(trx_id number(10),
trx_name varchar(25),

trx_descrp varchar(100));

Con el tiempo tabla1 puede contener varios registros y es normal que sufra cambios como agregar nuevas columnas o cambiar el orden entre ellas. El tema va en que hay ocasiones en que la información que se guarda en la tabla debe ser corregido. Es muy importante antes de modificar información guardar un backup si es que estamos en uan instancia de producción.
Por ejemplo podemos copiar ciertas columnas de tabla1 para guardarlo como backup con la siguiente sintaxis:

Create table tabla2 as

select trx_id, trx_name from tabla1;

viernes, 26 de diciembre de 2014

API Actualizar estados de Pedidos de Trabajo EAM

El API  EAM_PROCESS_WO_PUB.PROCESS_WO es un procedimiento para actualizar un pedido de trabajo del modulo de EAM. Usando esta API podemos cambiar el estado de un Pedido de trabajo de  estado Provisorio a Cancelado o de  Finalizado a Finalizar - Sin Cargos. 

A continuación dejo el siguiente script para poder actualziar un Pedido de Trabajo de Finalizado a Finalizar - Sin Cargos. 


DECLARE
  G_EAM_WO_RELATIONS_TBL0    EAM_PROCESS_WO_PUB.EAM_WO_RELATIONS_TBL_TYPE;
  G_EAM_WO_RELATIONS_REC     EAM_PROCESS_WO_PUB.EAM_WO_RELATIONS_REC_TYPE;
  G_EAM_OP_REC0              EAM_PROCESS_WO_PUB.EAM_OP_REC_TYPE;
  G_EAM_OP_REC1              EAM_PROCESS_WO_PUB.EAM_OP_REC_TYPE;
  G_EAM_OP_NETWORK_REC0      EAM_PROCESS_WO_PUB.EAM_OP_NETWORK_REC_TYPE;
  G_EAM_OP_NETWORK_REC1      EAM_PROCESS_WO_PUB.EAM_OP_NETWORK_REC_TYPE;
  G_EAM_MAT_REQ_REC0         EAM_PROCESS_WO_PUB.EAM_MAT_REQ_REC_TYPE;
  G_EAM_MAT_REQ_REC1         EAM_PROCESS_WO_PUB.EAM_MAT_REQ_REC_TYPE;
  G_EAM_DI_REC0              EAM_PROCESS_WO_PUB.EAM_DIRECT_ITEMS_REC_TYPE;
  G_EAM_DI_REC1              EAM_PROCESS_WO_PUB.EAM_DIRECT_ITEMS_REC_TYPE;
  G_EAM_RES_REC0             EAM_PROCESS_WO_PUB.EAM_RES_REC_TYPE;
  G_EAM_RES_REC1             EAM_PROCESS_WO_PUB.EAM_RES_REC_TYPE;
  G_EAM_RES_INST_REC0        EAM_PROCESS_WO_PUB.EAM_RES_INST_REC_TYPE;
  G_EAM_RES_INST_REC1        EAM_PROCESS_WO_PUB.EAM_RES_INST_REC_TYPE;
  G_EAM_OP_TBL0              EAM_PROCESS_WO_PUB.EAM_OP_TBL_TYPE;
  G_EAM_OP_TBL1              EAM_PROCESS_WO_PUB.EAM_OP_TBL_TYPE;
  G_EAM_OP_NETWORK_TBL0      EAM_PROCESS_WO_PUB.EAM_OP_NETWORK_TBL_TYPE;
  G_EAM_RES_TBL0             EAM_PROCESS_WO_PUB.EAM_RES_TBL_TYPE;
  G_EAM_RES_INST_TBL0        EAM_PROCESS_WO_PUB.EAM_RES_INST_TBL_TYPE;
  G_EAM_SUB_RES_TBL0         EAM_PROCESS_WO_PUB.EAM_SUB_RES_TBL_TYPE;
  G_EAM_RES_USAGE_TBL0       EAM_PROCESS_WO_PUB.EAM_RES_USAGE_TBL_TYPE;
  G_EAM_MAT_REQ_TBL0         EAM_PROCESS_WO_PUB.EAM_MAT_REQ_TBL_TYPE;
  G_EAM_DI_TBL0              EAM_PROCESS_WO_PUB.EAM_DIRECT_ITEMS_TBL_TYPE;
  G_OUT_EAM_WO_RELATIONS_TBL EAM_PROCESS_WO_PUB.EAM_WO_RELATIONS_TBL_TYPE;
  G_OUT_EAM_WO_REC           EAM_PROCESS_WO_PUB.EAM_WO_REC_TYPE;
  G_OUT_EAM_WO_TBL           EAM_PROCESS_WO_PUB.EAM_WO_TBL_TYPE;
  G_OUT_EAM_OP_TBL           EAM_PROCESS_WO_PUB.EAM_OP_TBL_TYPE;
  G_OUT_EAM_OP_NETWORK_TBL   EAM_PROCESS_WO_PUB.EAM_OP_NETWORK_TBL_TYPE;
  G_OUT_EAM_RES_TBL          EAM_PROCESS_WO_PUB.EAM_RES_TBL_TYPE;
  G_OUT_EAM_RES_INST_TBL     EAM_PROCESS_WO_PUB.EAM_RES_INST_TBL_TYPE;
  G_OUT_EAM_SUB_RES_TBL      EAM_PROCESS_WO_PUB.EAM_SUB_RES_TBL_TYPE;
  G_OUT_EAM_RES_USAGE_TBL    EAM_PROCESS_WO_PUB.EAM_RES_USAGE_TBL_TYPE;
  G_OUT_EAM_MAT_REQ_TBL      EAM_PROCESS_WO_PUB.EAM_MAT_REQ_TBL_TYPE;
  G_OUT_EAM_DI_TBL           EAM_PROCESS_WO_PUB.EAM_DIRECT_ITEMS_TBL_TYPE;

  G_EAM_WO_REC1 EAM_PROCESS_WO_PUB.EAM_WO_REC_TYPE;
  G_EAM_WO_REC2 EAM_PROCESS_WO_PUB.EAM_WO_REC_TYPE;
  G_EAM_WO_TBL0 EAM_PROCESS_WO_PUB.EAM_WO_TBL_TYPE;

  G_EAM_WO_RES_USG_TBL0 EAM_PROCESS_WO_PUB.EAM_RES_USAGE_TBL_TYPE;
  L_RETURN_STATUS       VARCHAR2(1);
  L_MSG_COUNT           NUMBER;

  G_EAM_WO_USG_REC1 EAM_PROCESS_WO_PUB.EAM_RES_USAGE_REC_TYPE;
  G_EAM_WO_USG_REC2 EAM_PROCESS_WO_PUB.EAM_RES_USAGE_REC_TYPE;

  MSG_INDEX     NUMBER;
  TEMP_ERR_MESG VARCHAR2(2000);

  P_WIP_ENTITY_ID   WIP_DISCRETE_JOBS.WIP_ENTITY_ID%TYPE;
  P_ORGANIZATION_ID WIP_DISCRETE_JOBS.ORGANIZATION_ID%TYPE;

  CURSOR C1 IS
    SELECT WIP_ENTITY_ID, ORGANIZATION_ID FROM WIP_DISCRETE_JOBS WHERE
    wip_entity_Id = (select WIP_ENTITY_ID  from eam_work_orders_v
     where  wip_entity_Name='&WORKORDER');
    ---STATUS_TYPE =4
BEGIN

  G_EAM_WO_REC1                  := NULL;
  G_EAM_WO_REC1.TRANSACTION_TYPE := EAM_PROCESS_WO_PVT.G_OPR_UPDATE;
  G_EAM_WO_REC1.BATCH_ID         := 2;
  G_EAM_WO_REC1.HEADER_ID        := 2;

  G_EAM_WO_REC1.DESCRIPTION := 'API Cambia Estado Pedido de Trabajo';
  G_EAM_WO_REC1.STATUS_TYPE := WIP_CONSTANTS.COMP_NOCHRG;---cambia estados
 
 /*Estados a tener en cuenta.
  UNRELEASED  CONSTANT NUMBER :=  1; -- Unreleased - no charges allowed
  SIMULATED   CONSTANT NUMBER :=  2; -- Simulated
  RELEASED    CONSTANT NUMBER :=  3; -- Released - charges allowed
  COMP_CHRG   CONSTANT NUMBER :=  4; -- Complete - charges allowed
  COMP_NOCHRG CONSTANT NUMBER :=  5; -- Complete - no charges allowed
  HOLD        CONSTANT NUMBER :=  6; -- Hold - no charges allowed
  CANCELLED   CONSTANT NUMBER :=  7; -- Cancelled - no charges allowed
  PEND_BOM    CONSTANT NUMBER :=  8; -- Pending bill of material load
  FAIL_BOM    CONSTANT NUMBER :=  9; -- Failed bill of material load
  PEND_ROUT   CONSTANT NUMBER := 10; -- Pending routing load
  FAIL_ROUT   CONSTANT NUMBER := 11; -- Failed routing load
  PEND_REPML  CONSTANT NUMBER := 13; -- Pending - repetitively mass loaded
  PEND_CLOSE  CONSTANT NUMBER := 14; -- Pending Close
  FAIL_CLOSE  CONSTANT NUMBER := 15; -- Failed Close
  PEND_SCHED  CONSTANT NUMBER := 16; -- Pending Scheduling 
  DRAFT       CONSTANT NUMBER := 17; -- Draft */
 
 
  G_EAM_WO_TBL0(1) := G_EAM_WO_REC1;

  OPEN C1;
  LOOP
    FETCH C1
      INTO P_WIP_ENTITY_ID, P_ORGANIZATION_ID;
    EXIT WHEN C1%NOTFOUND;
   
    G_EAM_WO_REC1.WIP_ENTITY_ID   := P_WIP_ENTITY_ID;
    G_EAM_WO_REC1.ORGANIZATION_ID := P_ORGANIZATION_ID;
   
    DBMS_OUTPUT.PUT_LINE('Cambiar estado para WIP_ENTITY_ID: ' ||
                         P_WIP_ENTITY_ID);
                        
EAM_PROCESS_WO_PUB.PROCESS_WO(P_BO_IDENTIFIER        => 'EAM',
                              P_API_VERSION_NUMBER   => 1.0,
                              P_INIT_MSG_LIST        => TRUE,
                              P_COMMIT               => 'Y',
                              P_EAM_WO_REC           => G_EAM_WO_REC1,
                              P_EAM_OP_TBL           => G_EAM_OP_TBL0,
                              P_EAM_OP_NETWORK_TBL   => G_EAM_OP_NETWORK_TBL0,
                              P_EAM_RES_TBL          => G_EAM_RES_TBL0,
                              P_EAM_RES_INST_TBL     => G_EAM_RES_INST_TBL0,
                              P_EAM_SUB_RES_TBL      => G_EAM_SUB_RES_TBL0,
                              P_EAM_RES_USAGE_TBL    => G_EAM_RES_USAGE_TBL0,
                              P_EAM_MAT_REQ_TBL      => G_EAM_MAT_REQ_TBL0,
                              P_EAM_DIRECT_ITEMS_TBL => G_EAM_DI_TBL0,
                              X_EAM_WO_REC           => G_EAM_WO_REC2,
                              X_EAM_OP_TBL           => G_OUT_EAM_OP_TBL,
                              X_EAM_OP_NETWORK_TBL   => G_OUT_EAM_OP_NETWORK_TBL,
                              X_EAM_RES_TBL          => G_OUT_EAM_RES_TBL,
                              X_EAM_RES_INST_TBL     => G_OUT_EAM_RES_INST_TBL,
                              X_EAM_SUB_RES_TBL      => G_OUT_EAM_SUB_RES_TBL,
                              X_EAM_RES_USAGE_TBL    => G_EAM_RES_USAGE_TBL0,
                              X_EAM_MAT_REQ_TBL      => G_OUT_EAM_MAT_REQ_TBL,
                              X_EAM_DIRECT_ITEMS_TBL => G_OUT_EAM_DI_TBL,
                              X_RETURN_STATUS        => L_RETURN_STATUS,
                              X_MSG_COUNT            => L_MSG_COUNT
                              -- , P_DEBUG => 'Y'
                              -- , P_OUTPUT_DIR => '/SQLCOM/LOG/LV115DYP'
                              -- , P_DEBUG_FILENAME => 'DIV_EAMBO22.LOG'
                              -- , P_DEBUG_FILE_MODE => 'W'
                              );

  DBMS_OUTPUT.PUT_LINE('Finalizado WIP_ENTITY_ID: ' || P_WIP_ENTITY_ID);
   DBMS_OUTPUT.PUT_LINE('Status : '||L_RETURN_STATUS);

IF L_MSG_COUNT > 0 then
DBMS_OUTPUT.PUT_LINE('Error Ocurrido : '||SQLERRM||' : '||SQLCODE);
END IF;
  
  END LOOP;
  CLOSE C1;
END;


Cierre Masivo de Pedidos de Trabajo

La funcionalidad de Cierre Masivo está especialmente diseñado para el cierre de varios pedidos de trabajo al mismo tiempo. Esta funcionalidad se introdujo como parte de Enterprise Asset Management Mini-pack 11i.eAM.I.(Doc ID 226839.1)

Cerrando pedidos de Trabajo
Navegar a una responsabilidad de EAM >> Planificación de Pedidos de Trabajo >> Banco de Trabajo de Mantenimiento. Buscar un numero de activo, puede indicar criterios de busqueda,entre los cuales si es reacondicionable, información de la región e Pedido de Trabajo, estado y operaciones. En este caso debemos indicar el estado Finalizado para solicitar cerrar los pedidos de trabajo. Dar clic al boton Iniciar


Saldra la pantalla de Banco Trabajo de mantenimiento. Debemos ubicarnos en la carpeta Activos Con Trabajo y dar clic al numero de activo.  De acuerdo a nuestra buqueda puede resultar varios pedidos de trabajo los cuales podremos ver su información de estado, numero de pedido entre otros.


La opcíon de Cierre Masivo se ha proporcionado desde el menú Herramientas, en el banco de trabajo de mantenimiento, para ello ir a Herramientas >> Cierre Masivo.



Nos ubicaremos en la pantalla Cierre Masivo Pedido Trabajo, aqui podemos seleccionar que pedido de trabajo cerrar en grupo o dar al boton Seleccionar Todo. El sistema nos dara un mensaje si alguno de estos pedidos de trabajo contiene operaciones pendientes y por lo tanto no se podran cerrar.  Cuando ya tengamos todos nuestros pedidos dar clic al boton Cierre Trabajo.


Cuando se ejecuta el cierre masivo se ejecutará el concurrente Cerrar Trabajos Discontinuos y se cerrarán todos los pedidos de trabajo los cuales fueron seleccionados. Si alguno de ellos tiene transacciones pendientes y no logran el cierre, el reporte le mostrara aquellos pedidos de trabajo que no se han podido cerrar.


miércoles, 24 de diciembre de 2014

Capitalizar Pedidos de Trabajo

Capitalizar es una nueva característica incluida en EBS R12. No se puede capitalizar en EBS 11.5.10.2 como funcionalidad estándar. Para ello se puede contabilizar ingresos manuales utilizando la información de la transacción,

Puede capitalizar parte o la totalidad de los gastos realizados, mientras que mantiene un activo. El valor en libros del activo y su vida util se incrementan con el valor adicional, dentro de los activos fijos de Oracle. Los Contadores analizan la historia del costo de mantenimiento para decidir que se va a capitalizar. Puede identificar los pedidos de trabajo que aumentan el valor de un activo. Puede aprovechar sólo los costos de las pedidos de trabajo con el estado Completado sin cambios y cerrado.

Cuando se define un número de activo mantenido, puede escribir información en activos fijos para asociar una categoría del activo fijo y número de activo fijo con el número de activos mantenidos, si Oracle Activos fijos se instala

Capitalizando Pedidos de trabajo
Navegar a una responsabilidad de EAM >> Facturación y Capitalización >> Capitalizar Pedidos de  TrabajoConsultar por  una o más pedidos de trabajo para capitalizar ingresando criterios de busqueda y dar Buscar. En la región de Pedidos de trabajo selccionar un pedido y dar al  botón Capitalizar pedido de trabajo. Este botón está habilitado sólo para aquellos pedidos de trabajo que tienen cantidades disponibles para capitalizar. 



En la región de capitalzaición,Ingresar una cantidad en el campo % Capitalización.  Los costos asociados con los artículos y recursos seleccionados dentro de la región de Capitalización se capitalizan en este porcentaje.


seleccionar tantos materiales  o recursos se usaran para capitalizar dentro de la región de Capitalización, dar al boton Calcular montos para poder ver  la cantidad proyectada para capitalizar. El valor en libros del activo y la vida útil se incrementará con este valor adicional dentro de Activos Fijos.


Opcionalmentepuede  cambiar la Cuenta de Compensación incumplido. Los costos de mantenimiento capitalizados se abonarán en sus cuentas de gastos de mantenimiento asociados, mientras que este cuenta se debita en la misma cantidad en el activo fijo. Los gastos de mantenimiento que se capitalizan se considera valor de los activos de capital y no los gastos de mantenimiento, en el libro mayor. El campo Comentarios contiene el número de pedidos de trabajo, activo y su descripción


Dar luego a Iniciar Capitalización para ejecutar un proceso concurrente que capitaliza los activos fijos asociados con los numeros de activos en los pedidos de trabajo  con las cantidades calculadas. 


Opcionalmente seleccione Ver Detalles Pasados para ver todas las operaciones de capitalización Asociados por el numero de Activo de Mantenimiento. Finalmente dar  Cerrar.




martes, 23 de diciembre de 2014

Asignación de cuenta proveedor

En el modulo de Payables, puede introducir la información bancaria de cuentas bancarias para que su proveedor sea el titular de la cuenta. Para ello deben navegar a una Responsabilidad de Payables >> Configuración >> Pago >> Bancos. Buscar un banco y crear la cuenta bancaria del proveedor, para asignar la cuenta al proveedor debe colocarse en la pestaña Asignaciones Proveedor


Payables utiliza esta información bancaria cuando se generan pagos para sus proveedores. Puede definir el proveedor primero y luego, cuando se define la cuenta bancaria se puede asociar con el proveedor en la región de sucursales Proveedor  o bien, puede definir la cuenta bancaria primero y luego asignar al proveedor cuando entras en el proveedor en la ventana de Proveedores.

Al ingresar la cuenta bancaria para un proveedor puede luego finalizar su utilidad por si la cuenta se le da de baja en un futuro. Para ello debe colocar una fecha final en el campo Hasta


Al grabar esta información la cuenta deja de utilizarse en el modulo de Payables dentro del rango asignado. Hasta aquí , es posible asignarle una nueva cuenta bancaria e indicarle como cuenta primaria para el proveedor.  No es necesario volver a actualizar en la pantalla de proveedores. Si uno observa en la pestaña de Cuentas Bancarias, la cuenta por defecto ya esta actualizada.