44
OFB CONSULTING FAQ Funcional Preguntas y Respuestas

FAQ V10.docx · Web viewDebugger attached successfully.Server compiler detected.JVM version is 20.45-b01using thread-local object allocation.Parallel GC with 4 …

  • Upload
    vanphuc

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Ofb Consulting

FAQ Funcional

Preguntas y Respuestas

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

Tipo de Documento: Documento informativo

Objetivo del Documento: Responder dudas de funcionalidades del sistema.

Seguimiento Documento:Versió

nDescripción Autor (es) Revisado por Fecha

Revisión23456789

10

Versión 2Versión 3Versión 4Versión 5Versión 6Versión 7Versión 8Versión 9Versión 10

ItaloNiñolesJosé Leyton G.Mario Rojas M.Mario Rojas M.Mario Rojas M.Mario Rojas M.Mario Rojas M.Mario Rojas M.Mario Rojas M.

04-06-201504-08-201526-10-201520-09-201618-01-201718-07-201703-05-2018

ContenidoI. Descripción General..................................................................................................5II. Preguntas y Respuestas........................................................................................5

1) Flujos en general..................................................................................................51000.- ¿Por qué aparece el error “Periodo Cerrado” cuando trato de completar un documento?..............................................................................................................51010.- ¿Cómo identificar una OC de una OV?...........................................................51020.- ¿No aparece solicitud de compra para ser llamada desde OC?......................51030.- ¿Cómo ajustar inventarios?............................................................................51040.- ¿Cómo solucionar problemas de pagos que se intentan realizar con otros tipos de monedas, no la moneda estándar?.............................................................51050.- ¿Es posible eliminar un producto?.................................................................51060.- ¿Cómo dejar predeterminado un valor para un campo?...............................61070.- ¿Cómo usar distintas monedas con un proveedor y/o cliente?......................61080.- ¿Cómo modificar la cantidad de decimales a usar en los precios de distintos documentos?............................................................................................................61090.- ¿Para qué sirve el botón crear confirmación que aparece en algunos documentos?............................................................................................................61100.- ¿Cómo se pueden crear líneas o registros con una sola tecla?......................61110.- No puedo completar documentos pero todos los periodos están abiertos y específicamente el mes en que estoy trabajando tiene los tipos de documento base abierto pero sale el error "periodo cerrado".............................................................61120.- ¿Porque no se puede anular una caja (diario de efectivo)?............................7

document.docx Versión 10 Página 1 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

1130.- ¿Cómo ver stock de productos?.....................................................................71140.- ¿Se puede activar un descuento al total de la factura?.................................71150.- ¿Se puede comprar un activo a través de un producto?................................71160.- Al intentar completar un despacho me aparece “Could not update order lines” y no completa el despacho.............................................................................7

2) Contabilidad y parametrización............................................................................72000.- ¿Dónde se guardan los asientos contables y cómo identifico a que transacción corresponden?.......................................................................................72010.- Por razones de auditoría no se puede borrar una línea de un diario efectivo.82020.- Sistema no deja contabilizar factura de honorarios de proveedor.................82030.- ¿Cómo se parametrizan cuentas de contabilidad en ADempiere?.................82040.- Transacciones contables tienen "error de posteo" o estado "no posteado"...8Revisar pregunta 3240, sección 3 “Configuraciones de sistema y reportes”............82050.- ¿Que cuentas (de contabilidad) se deben parametrizar para el proceso de compras para que adempiere genere contabilidad correcta?...................................82060.- No puedo contabilizar. Me aparece el error “Cannot Lock – ReSubmit or RePost with Force”....................................................................................................8

3) Configuraciones de sistema y reportes.................................................................93000.- ¿Cómo ingresar solo localmente a la base de datos sin necesidad de tener el servidor levantado?..................................................................................................93010.- El idioma al inicio del Login, ¿qué parte cambia de Adempiere?....................93020.- Si coloco una lógica predeterminada en la columna de la “tabla” y después coloco una lógica predeterminada en el campo de la ventana, ¿cuál de estas lógicas toma?............................................................................................................93030.- ¿Cómo hago que una referencia (ejemplo lista) sólo me muestre información dependiendo de una condición?...............................................................................93040.- ¿Cómo puedo definir que un reporte sea de ventas o de compras?...............93050.- Cuando se inicia el servidor, aparece el error “java.rmi.server.ExportException: Port already in use” ¿A qué se debe?............................................................................93060.- ¿Por qué aparece el error “No Identifier records found”?....................................93070.- ¿Se Puede instalar ADempiere en otra base de datos que no sea Oracle o PostgreSQL?............................................................................................................103080.- Para la versión WEBUI de Adempiere ¿qué exploradores soportan esta plataforma?............................................................................................................103090.- ¿Qué son y para qué sirven las “Alertas” en Adempiere?............................103100.- No puedo acceder a la dirección “http://server_name:8080”cuando me conecto desde un equipo cliente, sin embargo, sí desde el mismo server ¿Por qué puede ocurrir esto?............................................................................................................103110.- No se puede abrir ADempiere desde internet, muestra que el servidor no se encuentra...............................................................................................................10

document.docx Versión 10 Página 2 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

3120.- ¿Qué es un Callout?.....................................................................................103130.- ¿No se puede acceder a ADempiere?..........................................................103140.- ¿Cómo ocultar un campo de una pestaña?..................................................103150.- ¿Cómo cambiar el nombre de un campo?....................................................113160.- Reporte aparece en blanco, pero la vista creada en SQL si muestra los datos.......................................................................................................................113170.- No se reflejan cambios hechos en una ventana...........................................113180.- ¿Cómo cambiar el nombre de una ventana?................................................113190.- ¿Por qué Aparece error PO_INFO?................................................................123200.- ¿Cómo visualizar en un reporte un campo como código de barra?..............123210.- ¿Cómo se activa el registro log de una ventana?.........................................123220.- ¿Cómo dar rangos de tolerancia para precio y cantidad?............................123230.- ¿Cuándo es conveniente hacer un reporte y no una búsqueda?..................123240.- Transacciones contables tienen "error de posteo" o estado "no posteado". 123250.- Existe una factura en el sistema, por error un usuario cambia el status de completo a cerrado, ¿Qué se debe hacer en ese caso?..........................................133260.- ¿Error “java.lang.NullPointerException” en factura al aplicar contablemente y no genera error trace en el cliente ni en el servidor contable?............................133270.- Error en conectividad con el servidor..........................................................143280.- ¿Como habilitar un reporte nuevo para que sea accesible desde el botón imprimir?................................................................................................................143290.- Al ejecutar ./RUN_Server2.sh manda error "Permission denied"..................143300.- No se pueden crear periodos en la ventana “Año Calendario, Periodo”. Aparece un error en rojo, pero no arroja error en trace..........................................143310.- No se puede completar un documento por ejemplo leasing, muestra error de periodo cerrado, pero el periodo está abierto.........................................................143320.- Error “Invalid PO Info”..................................................................................143330.- ¿-Cómo importar datos de un archivo plano (CSV) a una tabla en postgresSQL?..........................................................................................................143340.- Si ya se ejecutó el RUN_Server2Stop.sh y aun así no termina el proceso de aplicación ADempiere ¿Cómo detenerlo?(Linux).....................................................163350.- El servidor no permite que se conecten los usuarios y arroja el siguiente error: java.lang.OutOfMemoryError: PermGen space..............................................163360.- ¿Cómo se identifican los filtros de un reporte?............................................163370.- ¿Cómo se identifican los filtros de una ventana?.........................................173380.- Al momento de hacer el test en el RUN_setup, aparecen errores de puertos................................................................................................................................173390.- ¿Cómo mostrar las traducciones en los reportes vía web?..........................173400.- No se puede completar documentos, los períodos están abiertos...............17

document.docx Versión 10 Página 3 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

3410.- Al copiar una ventana desde otra ya existente, los campos que muestra están en otro idioma...............................................................................................173420.- Los reportes demoran mucho en cargar......................................................183430.- ¿Cómo se puede lograr que los activos sean planeados anualmente?.........183440.- Estoy en un computador con Linux, y no funciona el “botón azul” de la página de ADempiere.............................................................................................183450.- Tengo problemas con los archivos adjuntos, pues al parecer los adjunta, pero después no los puedo ver...............................................................................183460.- ¿Qué significa maxpolines y maxsolines en Cliente?...................................183470.- ¿Cómo conectar desde ireport a una bd ORACLE con service name?..........183480.- ¿Cómo se configura ADempiere Mobile?......................................................193490.- ¿Cómo filtrar elementos de una lista de validación?....................................193500.- El ID en un jasper se muestra mal en web, pero bien en java......................193510.- Cuando intento abrir una ventana en el cliente web (reporte, proceso) aparece en blanco (Chrome)...................................................................................193520.- Problemas al setear variables de entorno en ventanas. Por ejemplo, al guardar una línea de OC manda error de “C_UOM_ID is mandatory” siendo que está definida en la línea.................................................................................................193530.- ¿Qué configuraciones se deben realizar para que se cree el m_cost y se procese los m_costdetail?.......................................................................................203540.- Al reprocesar los costos, los costos medios cambian, a pesar de que no se realiza ninguna compra..........................................................................................203550.- No puedo exportar los reportes Jasper a Excel............................................203560.- Al configurar el servidor de 360 para webservice se desconfigura la versión Mobile.....................................................................................................................203570.- ¿Registro Manda error al guardar "error la subconsulta ha devuelto más de un valor" o algún error similar?...............................................................................203580.- ¿Se puede utilizar una lógica predeterminada con una consulta SQL?........20

4) Otros...................................................................................................................204000.- Tipos de Datos en ADempiere......................................................................214010.- Acotación manejo de nombres de tablas y campos ADempiere y JAVA.......214020.- Claves primarias en BD................................................................................224030.- Utilización de “EXPLAIN”..............................................................................224040.- Función InvoiceOpen postgreSQL................................................................224050.- Optimización de Base de Datos (Configuración PostgreSQL en ADempiere, en base a memoria RAM)........................................................................................254060.- Reiniciar Listener en Oracle.........................................................................254070.- ¿Cómo obtener objetos inválidos en Oracle?...............................................26

document.docx Versión 10 Página 4 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

4080.- ¿Qué debo hacer para poder exportar los reportes Jasper como Excel en ADempiere 360?.....................................................................................................264090.- ¿Con qué lenguaje se debe trabajar por defecto en IReport?......................26

document.docx Versión 10 Página 5 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

I. Descripción GeneralEl presente documento pretende dar solución a distintas problemáticas comunes, que ya han sido identificadas, y que son transversales para cada una de las implementaciones.

II. Preguntas y Respuestas

1) Flujos en general

1000.- ¿Por qué aparece el error “Periodo Cerrado” cuando trato de completar un documento?

Este error aparece porque la contabilidad del Mes (Período) de ese documento (campo “DateAcct”) se encuentra cerrada. Para poder editarla se debe abrir la ventana “Año Calendario y Periodo” y abrir el periodo que se encontraba cerrado. Otra alternativa es abrir sólo el documento que se desea completar (en la misma ventana). Ahora los periodos se cierran automáticamente dependiendo del esquema contable que se esté utilizando. Además, también tiene la opción (la cual se puede desactivar) de que sólo se pueden completar documentos que tengan la fecha del día actual.

1010.- ¿Cómo identificar una OC de una OV?

Se identifica con el campo issotrx en la tabla c_order. Este campo sólo soporta un carácter. En este caso es Y=Orden de Venta y N=Orden de Compra.

1020.- ¿No aparece solicitud de compra para ser llamada desde OC?

Lo más probable es que la solicitud de compra ya haya sido utilizada por otra orden de compra.

1030.- ¿Cómo ajustar inventarios?

Los inventarios se pueden ajustar de 2 formas: una es realizar un “inventario físico”, en el cual se ingresarán las cantidades contadas en cada ubicación. La segunda forma es a través de un “movimiento de inventario”, en el cual se puede mover productos de una ubicación a otra y de una bodega a otra.

1040.- ¿Cómo solucionar problemas de pagos que se intentan realizar con otros tipos de monedas, no la moneda estándar?

Para poder realizar pagos en otras monedas, debe existir alguna cuenta bancaria que utilice la moneda con la que se requiere trabajar.

document.docx Versión 10 Página 6 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

1050.- ¿Es posible eliminar un producto?

No es posible eliminar un producto que está localizado en una ubicación y menos aun si ese producto se ha utilizado en algún documento. Solo se puede desactivar.

1060.- ¿Cómo dejar predeterminado un valor para un campo?

Para predeterminar un valor a un campo, dicho campo debe ser una lista de opciones. Luego de verificar eso, se debe ir al campo, seleccionar el valor que se desea dejar por defecto, dar botón derecho y apretar “valor de preferencia”. Aparecerá una ventana, la cual indicará si el valor se desea predefinir para la organización, para la ventana, para el usuario o cualquier combinación de estas 3 opciones. Luego se presiona ok y, con esto, la próxima vez que se abra la ventana, aparecerá por defecto el valor que se configuró.

1070.- ¿Cómo usar distintas monedas con un proveedor y/o cliente?

La moneda, tanto en las órdenes de compra como órdenes de venta, viene asociada las lista de precios que se va a utilizar, por lo que para usar otra moneda con un proveedor, sólo se debe usar la lista de precios asociada a esa moneda.

1080.- ¿Cómo modificar la cantidad de decimales a usar en los precios de distintos documentos?

La cantidad de decimales en los precios que se utilizan en los distintos documentos, están predefinidos por la lista de precios que se seleccione. Para modificarlos, a la lista de precios, y en el campo “Precio preciso” se debe indicar la cantidad de decimales que se utilizaran en los documentos asociados a la lista de precios.

1090.- ¿Para qué sirve el botón crear confirmación que aparece en algunos documentos?

El botón “crear confirmación” genera una petición de confirmación a otro usuario con más privilegios, para que pueda ser completado el documento. Esto generalmente no es muy usado en chile, dado que frena el proceso hasta que la petición sea aceptada, momento en el cual se puede completar el documento y seguir con el flujo.

1100.- ¿Cómo se pueden crear líneas o registros con una sola tecla?

Se pueden crear documentos o líneas de documentos, yendo a la ventana donde se desea crear el registro, y presionando la tecla F2.

Si se Presiona la combinación de teclas SHIFT + F2, crea un nuevo registro y le copia la información del último registro creado.

1110.- No puedo completar documentos pero todos los periodos están abiertos y específicamente el mes en que estoy trabajando tiene los tipos de documento base abierto pero sale el error "periodo cerrado"

document.docx Versión 10 Página 7 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

En ADempiere existe una opción que se llama CONTROL DE PERIODO AUTOMATICO, la cual, solo deja completar documentos que tengan la fecha del día, lo que impide que cualquier documento fuera de fecha se complete. Para desactivar esta opción, se debe ir a la ventana "Esquema contable" y desmarcar la opción "Control de periodo automático"

1120.- ¿Porque no se puede anular una caja (diario de efectivo)?

Una caja no se puede anular porque tiene un pago asociado y éste no posee ninguna descripción.Casos de anulación: 1°: Si se quiere anular solo la caja y no el pago que esta posee relacionado: En la descripción del pago se debe colocar cualquier descripción menos “CashBook” y al anular la caja, ésta quedara nula y el pago quedara libre para poder ser utilizado nuevamente.2°: Si se desea anular la caja y el pago que esta tiene asociado: En la descripción del pago debe decir “CashBook”, así al anular la caja esta anulara todos los pagos asociados a esta que tengan en su descripción dicha palabra. OBS: Los pagos generados automáticamente al completar una caja o diario de efectivo, poseen por defecto al crearse en su descripción la palabra CashBook.

1130.- ¿Cómo ver stock de productos?

Ir al menú ver – Información de producto. Otra alternativa sería crear un reporte de abastecimiento que muestre los stock de los productos, para lo cual es necesario revisar los manuales de manejo de reportes.

1140.- ¿Se puede activar un descuento al total de la factura?

No, los descuentos en las facturas, se realizan a cada producto, y no al total de esta. Otra alternativa es agregar una nueva línea en la factura, con un cargo “Descuento”, donde se puede ingresar el total del descuento.

1150.- ¿Se puede comprar un activo a través de un producto?

Se puede, pero las limitantes son que el producto debe ser del tipo “Servicio”, y en su categoría indicar un grupo de activos.

1160.- Al intentar completar un despacho me aparece “Could not update order lines” y no completa el despacho

Esto puede suceder también para los recibos. Sucede cuando la versión de lista de precios en la cual la OC (o la OV) fue hecha está desactivada. Basta con reactivarla.

2) Contabilidad y parametrización

document.docx Versión 10 Página 8 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

2000.- ¿Dónde se guardan los asientos contables y cómo identifico a que transacción corresponden?

Los asientos contables se encuentran en la tabla “fact_acct” y se identifican colocando la tabla a la que pertenece (ad_table_id) y el número de registro (record_id) que vendría siendo el ID de la transacción dependiendo de qué tabla se trate.

2010.- Por razones de auditoría no se puede borrar una línea de un diario efectivo.

Un diario de efectivo, al no estar completado, debería permitir borrar sin ningún problema. En el evento de que no borre existe una solución que es borrando desde la base de datos (ojo que no todo puede ser borrado de la base de datos, solo cosas puntuales). En este caso buscamos la tabla c_cash, y borramos la línea que está dando problemas.

2020.- Sistema no deja contabilizar factura de honorarios de proveedor

Esto se puede deber a que el proveedor no posee ingresada en el sistema una cuenta asociada a las boletas de honorarios.

2030.- ¿Cómo se parametrizan cuentas de contabilidad en ADempiere?

Para parametrizar una cuenta de contabilidad se debe identificar qué cuenta es la que se desea cambiar, para esto se debe ir a la ventana “Esquema contable” y seleccionar la pestaña “Predeterminados”. Allí se muestran todas las cuentas de Adempiere agrupadas según la contabilidad que mueven. Allí se puede identificar si la cuenta es de grupo, socio de negocio o producto, etc.

Una vez identificada la categoría de la cuenta, se debe ir a configurar según el grupo al que corresponda. Si el grupo es socio de negocio, se debe ir a la pestaña socio de negocio, dar botón derecho acercar en el grupo de socio de negocio, e ir a la pestaña contabilidad, ahí se busca la cuenta que se parametrizará y se asigna la cuenta correcta.

Si el grupo es producto, se debe ir a la pestaña producto, dar botón derecho - acercar en la categoría del producto, e ir a la pestaña contabilidad, ahí se busca la cuenta que se parametrizará y se asigna la cuenta correcta.

2040.- Transacciones contables tienen "error de posteo" o estado "no posteado"

Revisar pregunta 3240, sección 3 “Configuraciones de sistema y reportes”.

2050.- ¿Que cuentas (de contabilidad) se deben parametrizar para el proceso de compras para que adempiere genere contabilidad correcta?

Las cuentas contables que se deben parametrizar se dividen en los siguientes grupos:

document.docx Versión 10 Página 9 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

Categoría del Producto: Inventario de Producto, Inventory Cleaning y Discrepancia en Producto  Categoría del socio de Negocio: CxP del proveedor y recibos no facturados.Impuesto: Todas las cuentas contables de impuestosCargo: Cuenta cargo y Cuenta abonoBanco (cada cuenta): Todas las cuentas contables de cuentas bancarias

2060.- No puedo contabilizar. Me aparece el error “Cannot Lock – ReSubmit or RePost with Force”.

Se debe cambiar el campo “Processing” a “N”.

3) Configuraciones de sistema y reportes.

3000.- ¿Cómo ingresar solo localmente a la base de datos sin necesidad de tener el servidor levantado?

Esto es posible solo si se está en el equipo donde está la base de datos, y se puede hacer colocando los datos del equipo en la parte de conexión de la base de datos como “Locahost” y el nombre de la base de datos. Con esto ya se podrá acceder de manera local al equipo sin necesidad de levantar el servidor.

3010.- El idioma al inicio del Login, ¿qué parte cambia de Adempiere?

Cambia todo el entorno Gráfico del sistema, desde los Botones hasta las descripciones de los campos.

3020.- Si coloco una lógica predeterminada en la columna de la “tabla” y después coloco una lógica predeterminada en el campo de la ventana, ¿cuál de estas lógicas toma?

La lógica de la ventana siempre sobreescribirá a la de la tabla.

3030.- ¿Cómo hago que una referencia (ejemplo lista) sólo me muestre información dependiendo de una condición?

Esto se puede hacer tanto en la ventana como en la tabla. El campo que sirve para filtrar las referencias se llama Validación y comúnmente es llamada “DinamicValidation”, porque es una validación con una gran gama de variabilidad.

3040.- ¿Cómo puedo definir que un reporte sea de ventas o de compras?

En la ventana hay un campo que dice “issotrx”, que define si es un registro (o transacción) de compras o ventas.

3050.- Cuando se inicia el servidor, aparece el error “java.rmi.server.ExportException: Port already in use” ¿A qué se debe?

document.docx Versión 10 Página 10 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

Esto sucede cuando se tienen 2 servidores corriendo al mismo tiempo, utilizando el mismo puerto JBOSS. Para solucionarlo, se debe correr el RUN_Setup y cambiar el puerto de uno de ellos. Este error también aparece cuando el puerto está siendo utilizado por otra aplicación.

3060.- ¿Por qué aparece el error “No Identifier records found”?

El error “MLookupFactory.getLookup_TableDir: No Identifier records found” hace referencia al identificador de la columna de una tabla.

3070.- ¿Se Puede instalar ADempiere en otra base de datos que no sea Oracle o PostgreSQL?

Adempiere puede también ser instalado en MySQL. Sin embargo, el soporte en esta base de datos aún no es muy extendido.

3080.- Para la versión WEBUI de Adempiere ¿qué exploradores soportan esta plataforma?

Por el momento se han probado Chrome y Firefox 3+, se desconoce si otros “Browsers” pueden levantar dicha plataforma. Sin embargo IE no soporta el Framework con el que trabaja la WEBUI.

3090.- ¿Qué son y para qué sirven las “Alertas” en Adempiere?

En ADempiere, las alertas son  informes automatizados o advertencias de alguna acción para el usuario, y sirven para enviar información a los interesados en determinados momentos o cuando se cumplan las condiciones específicas de la base de datos.

3100.- No puedo acceder a la dirección “http://server_name:8080”cuando me conecto desde un equipo cliente, sin embargo, sí desde el mismo server ¿Por qué puede ocurrir esto?

Esto puede pasar cuando el cliente no puede resolver el nombre del servidor porque quizás la red tenga problemas con los DNS. Para solucionarlo se puede escribir, en vez del nombre del servidor, su dirección IP.

3110.- No se puede abrir ADempiere desde internet, muestra que el servidor no se encuentra.

Es posible que el servidor no se encuentre corriendo, o bien, que ADempiere no esté cargado correctamente.

3120.- ¿Qué es un Callout?

Un Callout es un método para validar en JAVA y se ejecuta sobre un campo (o varios campos). Por ejemplo el campo Rut tiene asociado un Callout que valida el digito

document.docx Versión 10 Página 11 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

verificador. También este método permite calcular campos numéricos y traer elementos desde otras tablas.

3130.- ¿No se puede acceder a ADempiere?

Puede que el servidor de aplicaciones se encuentre apagado o fuera de conexión. Además es probable que se deba correr nuevamente el setup para parametrizar ADempiere.

3140.- ¿Cómo ocultar un campo de una pestaña?

Para ocultar un campo de una ventana (puede ser campo texto, checkbox, combobox, etc), se debe ingresar como System Admin al sistema, ir a la ventana “Ventana; Pestaña y Campo”, buscar la ventana que se quiere modificar, seleccionar la pestaña que se desea modificar y por último el campo que se desea ocultar y en la propiedad de “despliegue lógico”, colocar 1=2. Así el campo solo se oculta y no se elimina. Si un campo se elimina de alguna otra forma, es probable que tenga asociaciones a otros datos, por lo que podría haber problemas de integridad con la base de datos.

3150.- ¿Cómo cambiar el nombre de un campo?

Para cambiar el nombre de un campo, se debe ingresar como System Admin al sistema, ir a la ventana “Ventana; Pestaña y Campo”, buscar la ventana que se quiere modificar, seleccionar la pestaña que se desea modificar y por último el campo que se desea renombrar, para esto debemos ir a la pestaña inferior del campo que se llama “Traducción de Campo” (Si esta pestaña no estuviese se debe habilitar desde el menú “Herramientas - Preferencias” y cliquear “Mostrar las pestañas de traducción” ) allí se puede modificar el nombre del campo, la descripción (descripción que aparece cuando uno posa el mouse sobre el campo) y la ayuda.

3160.- Reporte aparece en blanco, pero la vista creada en SQL si muestra los datos.

Esto se puede deber a varios motivos:

- Puede ser que el SQL en algún registro o en alguna columna este devolviendo datos nulos.

- Puede ser que un campo de la base de datos en el que se espera recibir un solo valor este devolviendo mas valores (generalmente en las sentencias Select anidadas puede suceder).

- Puede ser que esté mal definido el tipo de dato del campo en la tabla de ADempiere y/o mal hecha la referencia (Integer v/s String o table direct v/s table + reference)

- Puede ser porque el campo en la base de datos está definido con mayúscula y el nombre en ADempiere está con minúsculas, o simplemente una letra esta con mayúscula.

document.docx Versión 10 Página 12 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

obs: ADempiere es case sensitive (sensible a mayúsculas y minúsculas)

3170.- No se reflejan cambios hechos en una ventana

Es porque esta activado el cache de ventana. Para desactivarlo, se debe ir al menú herramientas, preferencias y quitar el ticket de la casilla “cache de ventana”.

3180.- ¿Cómo cambiar el nombre de una ventana?

Para poder cambiar el nombre de una ventana, se debe ingresar al sistema como System Admin, luego en la ventana “ventana; pestaña y campo” se debe elegir la ventana a la cual se desea cambiar el nombre, ir a la pestaña “Traducción de la ventana” y en el campo nombre de dicha pestaña se debe colocar el nuevo nombre que se le quiera dar. Si no apareciese la pestaña “Traducción de la ventana”, se debe ir a menú herramientas, preferencias y activar opción “Mostrar pestañas de traducción”, cerrar la ventana y abrirla de nuevo.

Obs: Nunca Cambiar el nombre de la ventana, solo se modifica a través de traducciones, ya que la modificación del nombre real de la ventana podría llegar a corromper el sistema.

3190.- ¿Por qué Aparece error PO_INFO?

El error PO_INFO, generalmente quiere decir que hay problemas con la base de datos. Puede ser que el servidor de base de datos esté caído o puede significar que haya problemas con la tabla o los campos que se están trabajando.

3200.- ¿Cómo visualizar en un reporte un campo como código de barra?

En el reporte se debe apretar el botón “Personalizar informe”, aparecerá la ventana “formato de impresión”, se debe seleccionar la pestaña “Elemento de formato”. Se selecciona el campo que se desea mostrar como código de barra y se le modifica la propiedad “Barcode Type” seleccionando de la lista que aparece el tipo de código de barra en que será mostrado el dato.

3210.- ¿Cómo se activa el registro log de una ventana?

Se debe ingresar como System Admin al sistema, luego se debe abrir la ventana “Tabla y columna”, en la cual se debe elegir la tabla que se le debe activar el log, luego se debe activar la opción “Mantenimiento de cambios de log”. Se Guardan los cambios y se debe reiniciar el servidor de ADempiere para que tome las modificaciones.

La información que almacena el log, se puede visualizar en la ventana a la cual se le activó el seguimiento, cliqueando en la parte inferior derecha donde aparece el número de registro actual.

document.docx Versión 10 Página 13 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

3220.- ¿Cómo dar rangos de tolerancia para precio y cantidad?

Los rangos de precio y cantidad en ADempiere se manejan a través de los roles de los usuarios. Para poder asignar rangos de tolerancia a un rol especifico, se debe ingresar al sistema como System Admin, ir a la ventana “rol”, seleccionar el rol al que se le asignaran rangos y se debe modificar los campos “Rango tolerancia de precio” y “Rango tolerancia de cantidad”. En estos campos se debe indicar el porcentaje de rango que se desea configurar.

3230.- ¿Cuándo es conveniente hacer un reporte y no una búsqueda?

Se debe hacer un reporte en ADempiere, cada vez que se necesite mostrar información de, a lo menos, 2 tablas distintas.

3240.- Transacciones contables tienen "error de posteo" o estado "no posteado"

Cuando sucede esto, se deben realizar los siguientes updates en la base de datos.

update gl_journalset processing='N', posted='N'where posted in ('N','E');

update c_invoiceset processing='N', posted='N'where posted in ('N','E');

update m_inoutset processing='N', posted='N'where posted in ('N','E');

update c_cashset processing='N', posted='N'where posted in ('N','E');

update C_AllocationHdrset processing='N', posted='N'where posted in ('N','E');

update M_Inventoryset processing='N', posted='N'where posted in ('N','E');

update M_MatchInvset processing='N', posted='N'where posted in ('N','E');

update M_MatchPOset processing='N', posted='N'where posted in ('N','E');

document.docx Versión 10 Página 14 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

update M_Movementset processing='N', posted='N'where posted in ('N','E');

update M_Productionset processing='N', posted='N'where posted in ('N','E');

3250.- Existe una factura en el sistema, por error un usuario cambia el status de completo a cerrado, ¿Qué se debe hacer en ese caso?

En el caso de que una factura sea cerrada por accidente por un usuario, lo más sano sería reactivarla, pero no da la opción (esto es para factura cliente y proveedor). La solución sería ver la tabla c_invoice y buscar el campo docstatus y desde ahí cambiar el estado a CO (completa), después se revisa la factura y el estatus estará como “Completo”. Al momento de realizar el cambio, fijarse que el id de la tabla sea el mismo, para evitar cambiar registros que no se debe.

3260.- ¿Error “java.lang.NullPointerException” en factura al aplicar contablemente y no genera error trace en el cliente ni en el servidor contable?

Si aparece dicho error se puede deber a que se encuentra marcado el campo de Activo fijo “A_CreateAsset” en alguna de las líneas de la factura, y no se encuentra seleccionado ningún grupo de activos.

3270.- Error en conectividad con el servidor.

Esto se pude deber a que no esté bien configurada la tabla HOST del servidor, para lo cual se debe ir al archivo host del servidor y revisar que solo posea una línea, en la cual debe estar la IP y el nombre del host solamente. Cualquier otra línea de configuración de red de la tabla debe ser borrada.

3280.- ¿Como habilitar un reporte nuevo para que sea accesible desde el botón imprimir?

Con Perfil de system admin, ir a la pestaña principal de la ventana y donde dice PROCESO indicar el proceso (informes y proceso) que tiene relacionado el reporte.

3290.- Al ejecutar ./RUN_Server2.sh manda error "Permission denied".

Este error puede indicar que el setup no se llevo a cabo correctamente, ya que este proceso RUN_setup le cambia los permisos a los demás archivos ejecutables. Para dejar todos los .sh ejecutables se debe ejecutar el siguiente comando “chmod 744 *.sh” dentro del directorio donde se encuentre el(los) .sh a modificar.

document.docx Versión 10 Página 15 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

3300.- No se pueden crear periodos en la ventana “Año Calendario, Periodo”. Aparece un error en rojo, pero no arroja error en trace.

Se debe revisar la consola para identificar qué tipo de documento base tiene problemas. Se debe desactivar todos los tipos de documento que usen ese tipo de documento base. Luego de crear los periodos hay que re activar los tipos de documento y crear el documento base en la ventana de control de periodo para el periodo con problemas. 3310.- No se puede completar un documento por ejemplo leasing, muestra error de periodo cerrado, pero el periodo está abierto.

Probablemente el tipo de documento base de ese tipo de documento no está definido en el periodo en el que se está completando o posteando dicho documento.

3320.- Error “Invalid PO Info”

Esto quiere decir que algún campo presenta problemas, ya sea de formato, de referencia, de longitud o de nombre (no está escrito de manera correcta para ADempiere con las mayúsculas y minúsculas correspondientes).

3330.- ¿-Cómo importar datos de un archivo plano (CSV) a una tabla en postgresSQL?

Se debe hacer clic derecho sobre la tabla en cuestión (parado en el árbol de pgadmin). Y seleccionar la opción  importar

Seleccionar el archivo a importar e indicar que es un csv.

document.docx Versión 10 Página 16 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

Indicar delimitador, que por lo general es “; “

Indicar el carácter para identificación de string, que generalmente es “

OBS: - importante tener el mismo orden del SQL con la tabla, para que calcen justo, ya que en ningún momento pregunta el orden.

document.docx Versión 10 Página 17 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

- Esta funcionalidad de importar la traen los últimos PGAdmin, en este caso 1.16.0, (que viene con postgres 9.2). Igualmente se puede bajar el pgadmin por separado sin cambiar la versión de postgres.

3340.- Si ya se ejecutó el RUN_Server2Stop.sh y aun así no termina el proceso de aplicación ADempiere ¿Cómo detenerlo?(Linux)

Abrir un terminal y ejecutar los siguientes comandos: ps –aux: Muestra todos los procesos, donde se deben identificar los procesos de

ADempiere o JAVA kill -9 IDProceso_de_ADempiere: Este comando termina el proceso indicado con

el ID.Una vez hecho esto no queda ejecutándose ningún proceso de ADempiere, por lo que se podría correr el RUN_setup.sh, o el RUN_Server2.sh, según sea necesario.

3350.- El servidor no permite que se conecten los usuarios y arroja el siguiente error: java.lang.OutOfMemoryError: PermGen space

Se debe editar los archivos de la carpeta /Adempiere: AdempiereEnv.properties y AdempiereEnv.properties.saveEn la línea que dice ADEMPIERE_JAVA_OPTIONS, dice -Xms64M -Xmx512M -DADEMPIERE_HOME=$ADEMPIERE_HOME y se debe cambiar por lo siguiente: -Xms2048m -Xmx2048m -XX:MaxPermSize=256m -DADEMPIERE_HOME=$ADEMPIERE_HOME

3360.- ¿Cómo se identifican los filtros de un reporte?

Se identifican desde la Ventana Informe y Proceso. En la pestaña Parámetros, se le asigna un nombre en el campo Nombre, luego un ticket en el campo Activo, para después ver el campo Nombre de Columna en BD, al cual se le ingresa el nombre de la columna que se mostrara (la que fue generada en la vista), y en el campo Elemento se le da el mismo valor que Nombre de Columna en BD, y al campo referencia se le asigna búsqueda. Se guarda y si es necesario se asigna otro valor.

3370.- ¿Cómo se identifican los filtros de una ventana?

Los Filtros de una ventana se pueden identificar de la siguiente manera: Ingresar al sistema con perfil System Administrator, Ir a la ventana “Ventana; Pestaña y Campo”, buscar que ventana se desea modificar, luego dirigirse a la pestaña “Pestaña” y allí se puede ubicar las clausulas “Where” y la clausula “Order By”, las cuales sirven para realizar filtros en la ventana.

3380.- Al momento de hacer el test en el RUN_setup, aparecen errores de puertos.

Revisar que se haya cerrado el RUN_Server2 antes de correr el setup. Revisar que los puertos a utilizar no estén siendo ocupados por otra aplicación.

3390.- ¿Cómo mostrar las traducciones en los reportes vía web?

document.docx Versión 10 Página 18 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

Se aconseja presionar “Sumario”, y luego quitarlo, para refrescar el nombre de los campos.

3400.- No se puede completar documentos, los períodos están abiertos.

Revisar la definición en la ventana de compañía (AD_Client), y revisar que el calendario esté correctamente asociado.

3410.- Al copiar una ventana desde otra ya existente, los campos que muestra están en otro idioma.

Se debe traducir los campos para que los muestre como se necesita. Adicional a esto, existe un script preparado que puede ser de utilidad.

update AD_Field_Trl adft1set name = (case when (select MAX(adft.name) from AD_Field adfinner join AD_Field_Trl adft on (adf.ad_field_id = adft.ad_field_id)where ad_tab_id = 1000104--and isdisplayed = 'Y'and adf.ad_column_id = (select adf2.ad_column_id from ad_field adf2 where adft1.ad_field_id=adf2.ad_field_id) )is null then adft1.nameelse (select MAX(adft.name) from AD_Field adfinner join AD_Field_Trl adft on (adf.ad_field_id = adft.ad_field_id)where ad_tab_id = 1000104--and isdisplayed = 'Y'and adf.ad_column_id = (select adf2.ad_column_id from ad_field adf2 where adft1.ad_field_id=adf2.ad_field_id) --and adf.name = adft1.name)end)where ad_field_id in (select ad_field_id from AD_Field where ad_tab_id = 1000182 and isdisplayed = 'Y') and AD_Language='es_MX'

3420.- Los reportes demoran mucho en cargar

Es posible que la consulta sea muy pesada, y los parámetros de búsqueda impliquen un rango alto. Recordar que un reporte, comúnmente, es una vista sql generada a partir de varias tablas. Es necesario crear (a nivel de BD), los índices requeridos por la consulta, de tal manera que no se ejecute un full scan.

3430.- ¿Cómo se puede lograr que los activos sean planeados anualmente?

document.docx Versión 10 Página 19 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

Debe existir el campo “IsByYear” (tipo Y/N, default N) en las tablas a_asset_acct y a_asset_group_acct

3440.- Estoy en un computador con Linux, y no funciona el “botón azul” de la página de ADempiere.

Es probable que el equipo tenga una versión openjdk de java 6. Es necesario instalar la versión de oracle (Y desinstalar la openjdk).

3450.- Tengo problemas con los archivos adjuntos, pues al parecer los adjunta, pero después no los puedo ver.

Se debe actualizar el archivo postgresql.jar, de acuerdo a la versión de java y postgresql que esté asociado. Luego, este archivo debe ir en Adempiere/lib (en el servidor). Luego, setup y RUN_Server2 (link: http://jdbc.postgresql.org/download.html)

3460.- ¿Qué significa maxpolines y maxsolines en Cliente?

Corresponde al máximo de líneas de órdenes de compra (purchase order PO) y órdenes de venta (Sales order, SO). Si dice 20, quiere decir que estos documentos podrán tener hasta 20 líneas.

3470.- ¿Cómo conectar desde ireport a una bd ORACLE con service name?

Hay 2 formas de conectarse a Oracle dependiendo de si la BD usa nombre "SID" o "Service Name". Cuando se configura la conexión y se usa el "Wizard", esto coloca automáticamente la url JDBC con este formato: jdbc:oracle:thin:@[hostname]:[bdname] y este formato solo es para los oracles que usan nombre de BD SID. Pero cuando ésta es "Service Name", el formato de la url es: jdbc:oracle:thin:@[hostname]/[bdname] .

O sea, lo que cambia es el símbolo antes del nombre de la base de datos. Cuando es SID es ":" y cuando es "Service Name" es "/".

document.docx Versión 10 Página 20 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

3480.- ¿Cómo se configura ADempiere Mobile?

En la siguiente dirección:http://sourceforge.net/projects/adempiere/files/GlobalQSS_Patches/360lts/mobile_360lts_20110531_Adaxa.tgz/download

Se debe bajar el archivo que ahí aparece (es un tar.gz). Luego, de eso, se debe bajar el servidor (RUN_Server2Stop.sh), posicionarse en el directorio previo a $ADEMPIERE_HOME. Extraer el contenido del archivo descargado (tar zxvf nombredearchivo.tar.gz). Luego de eso, RUN_setup.sh y RUN_Server2.sh. La versión mobile estará disponible en http://servidordeadempiere:1024/mobile. Los archivos que se modifican son “Adempiere/lib/adempiereAll.xml, Adempiere/build.xml, Adempiere/lib/mobile.war”.

3490.- ¿Cómo filtrar elementos de una lista de validación?

Cuando se hace una regla de validación que tiene como finalidad filtrar elementos de una lista, se debe indicar de qué referencia se deben sacar los valores, sino el sistema buscara la primera coincidencia con el valor que se quiere filtrar y lo mostrará, y no validará que el valor de lista este efectivamente en la referencia del campo.Ej. Si se escribe en el código de validación:

(AD_Ref_List.Value  in ('RE','AD','AP','EP') and @#AD_Role_ID@ in (1000000))El sistema hará la validación, pero al mostrar los datos mostrara "EL PRIMER VALOR" que sea RE, independiente si es de la lista de referencia a utilizar o no, y así sucesivamente.Para ese caso, lo correcto sería:

 (AD_Ref_List.Value  in ('RE','AD','AP','EP') and @#AD_Role_ID@ in (1000000) and AD_Ref_List.AD_Reference_ID = 1000054)

En este caso se indica de qué referencia se debe sacar la información, para que no muestre valores que no debería.

3500.- El ID en un jasper se muestra mal en web, pero bien en java

Para corregir esto, se debe cambiar el tipo de dato por numérico, de tal manera que funcione tanto en web como en java.

3510.- Cuando intento abrir una ventana en el cliente web (reporte, proceso) aparece en blanco (Chrome).

En Chrome, cuando sucede esto, es necesario borrar el caché del navegador

3520.- Problemas al setear variables de entorno en ventanas. Por ejemplo, al guardar una línea de OC manda error de “C_UOM_ID is mandatory” siendo que está definida en la línea.

Se soluciona bajando y subiendo el server, o bien, realizando nuevamente el setup. Los usuarios deben cerrar todo y abrir nuevamente ADempiere.

document.docx Versión 10 Página 21 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

3530.- ¿Qué configuraciones se deben realizar para que se cree el m_cost y se procese los m_costdetail?

Es necesario 2 cosas:- Activar el ticket “Costo Inmediato” en AD_Client.- En la tabla M_CostDetail el campo enable, por defecto debe ser ‘Y’.

3540.- Al reprocesar los costos, los costos medios cambian, a pesar de que no se realiza ninguna compra.

Esto puede suceder debido a que el diario de costo inicial tiene cantidad cero. Esto implica que cuando se crea los datos de m_cost, en el campo de monto acumulado aparece el mismo valor que en el campo de costo actual, aún cuando la cantidad es cero. Basta con actualizar el monto acumulado a cero.

3550.- No puedo exportar los reportes Jasper a Excel

Revisar y dirigirse al punto 4080.-

3560.- Al configurar el servidor de 360 para webservice se desconfigura la versión Mobile

Al descomprimir los archivos necesarios para webservice, se sobreescriben los archivos build.xml y adempiereAll.xml. Estos archivos son necesarios para ambos procesos. Es por esto que ambos archivos son modificados para poder sostener ambos procesos. Se deberá utilizar los archivos que posean ambas configuraciones. Otra opción es modificarlos manualmente, realizando una diferenciación entre ambos. Finalmente, estos archivos se pueden encontrar en el ftp de OFBConsulting. (Bajo el directorio “Otros”)

3570.- ¿Registro Manda error al guardar "error la subconsulta ha devuelto más de un valor" o algún error similar?

Siempre que se genere un campo sql que trae un ID de un registro, se debe agregar la función MAX o MIN para que solo traiga un valor, ya que si por algún motivo esa consulta SQL devolviera más de un registro, al tratar de guardar algún cambio en el registro o crear un registro nuevo mandara error. Tanto si se crea en adempiere a mano, como si fuera resultado de algún proceso en JAVA.

3580.- ¿Se puede utilizar una lógica predeterminada con una consulta SQL?

Sí. A continuación se detalla la lógica predeterminada de un campo “Número de Línea”: @SQL=SELECT NVL(MAX(Line),0)+10 AS DefaultValue FROM M_InventoryLine WHERE M_Inventory_ID=@M_Inventory_ID@

4) Otros

document.docx Versión 10 Página 22 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

4000.- Tipos de Datos en ADempiere

- Fecha: Tipo de dato que almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999.

- Hora/fecha: Tipo de datos que puede almacenar una combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos.

- Numero: Tipo de datos que almacena números fijos y en punto flotante. Además admite hasta 38 dígitos de precisión.

- Cadena: Tipo de dato que es capaz de almacenar una cadena de caracteres de longitud variable. Entre 1 y 4000 bytes como máximo.

- Tabledir: Este tipo de datos es utilizado cuando los datos recibos por ADempiere, vienen directamente desde la base de datos. Es decir, debe existir una tabla con el nombre del campo que se está recibiendo para que ADempiere produzca error en el sistema.

- Table: Este tipo de datos indica que la información debe ser sacada de una tabla del sistema. Este tipo de datos va acompañado con una reference, la cual indica de que tabla se debe sacar la información.

- Búsqueda: el tipo de datos búsqueda, define la forma de llenado de campo, sea a través de la búsqueda de un valor, para esto, se despliega una ventana que permite buscar el valor.

4010.- Acotación manejo de nombres de tablas y campos ADempiere y JAVA.

1: cuando un proceso de carga de datos no inserta valores se debe considerar:- entrar a la clase en donde existen los métodos que interactúan en el proceso.- validar el código usando debug en Eclipse. Avanzar con F6- por lo general hay instancias donde se generan SQL y se puede ir validando estos SQL, para descartar o identificar si el error es a nivel de SQL, osea la consulta que construye el java y se ejecuta en la BD. Por ejemplo “select dia from tabla” (ejecuta java) pero en la base de datos se tiene tabla.dya donde hay error de campos

- el otro problema, es cuando en la clase X de la tabla se tiene escrito de una forma el nombre de campo y en ADempiere otra. Por ejemplo, en la clase X_C_Tabla se llama al campo C_Tabla_ID, pero en ADempiere a nivel de tabla se tiene definido por un lado la tabla como C_tabla y también su ID como C_tabla_ID. Esto debe ser igual en ambos lados, ya que la clase X le pasa estos valores a la clase que genera el proceso de carga.

2: tipo de datosOtro problema que se podría presentar, es que a nivel de Java se tenga un campo que se trabaje como decimal, pero en ADempiere, si bien está definido como número, a

document.docx Versión 10 Página 23 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

nivel de tabla lo tenga como Entero, por lo cual no dejara, no por base de datos, sino por ADempiere, validar el dato y mandará un error.

4020.- Claves primarias en BD.

Las tablas que vienen por defecto con ADempiere se encuentran todas con su clave primaria creada. Es necesario fijarse al momento de crear una tabla nueva, que ésta tenga definida su clave, por temas de administración y acceso.

4030.- Utilización de “EXPLAIN”

EXPLAIN SELECT * FROM adempiere.rvofb_cuotasws

http://www.postgresql.org/docs/9.2/static/using-explain.html

Ojo: EXPLAIN ejecuta la consulta. Si se realiza un explain de un delete, borrará los datos. En ORACLE no realiza esta acción.

4040.- Función InvoiceOpen postgreSQL

-- Function: invoiceopen(numeric, numeric)

-- DROP FUNCTION invoiceopen(numeric, numeric);

CREATE OR REPLACE FUNCTION invoiceopen(p_c_invoice_id numeric, p_c_invoicepayschedule_id numeric) RETURNS numeric AS$BODY$/************************************************************************* * The contents of this file are subject to the Compiere License. You may * obtain a copy of the License at http://www.compiere.org/license.html * Software is on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either * express or implied. See the License for details. Code: Compiere ERP+CRM * Copyright (C) 1999-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved. * * converted to postgreSQL by Karsten Thiemann (Schaeffer AG), * [email protected] ************************************************************************* *** * Title: Calculate Open Item Amount in Invoice Currency * Description: * Add up total amount open for C_Invoice_ID if no split payment. * Grand Total minus Sum of Allocations in Invoice Currency * * For Split Payments: * Allocate Payments starting from first schedule. * Cannot be used for IsPaid as mutating * * Test:

document.docx Versión 10 Página 24 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

* SELECT C_InvoicePaySchedule_ID, DueAmt FROM C_InvoicePaySchedule WHERE C_Invoice_ID=109 ORDER BY DueDate; * SELECT invoiceOpen (109, null) FROM AD_System; - converted to default client currency * SELECT invoiceOpen (109, 11) FROM AD_System; - converted to default client currency * SELECT invoiceOpen (109, 102) FROM AD_System; * SELECT invoiceOpen (109, 103) FROM AD_System; ************************************************************************/DECLARE

v_Currency_ID NUMERIC(10);v_TotalOpenAmt NUMERIC := 0;v_PaidAmt NUMERIC := 0;v_Remaining NUMERIC := 0;

v_MultiplierAP NUMERIC := 0; v_MultiplierCM NUMERIC := 0; v_Temp NUMERIC := 0; v_Precision NUMERIC := 0; v_Min NUMERIC := 0; ar RECORD; s RECORD; v_docbase character varying(4); -- faaguilar;

BEGIN-- Get CurrencyBEGIN

SELECT MAX(C_Currency_ID), SUM(GrandTotal), MAX(MultiplierAP), MAX(Multiplier)

INTO v_Currency_ID, v_TotalOpenAmt, v_MultiplierAP, v_MultiplierCMFROM C_Invoice_v -- corrected for CM / Split PaymentWHERE C_Invoice_ID = p_C_Invoice_ID;

EXCEPTION -- Invoice in draft formWHEN OTHERS THEN

RAISE NOTICE 'InvoiceOpen - %', SQLERRM;RETURN NULL;

END;

SELECT StdPrecision INTO v_Precision FROM C_Currency WHERE C_Currency_ID = v_Currency_ID;

SELECT 1/10^v_Precision INTO v_Min;

-- Calculate Allocated AmountFOR ar IN

SELECT a.AD_Client_ID, a.AD_Org_ID,al.Amount, al.DiscountAmt, al.WriteOffAmt,a.C_Currency_ID, a.DateTrxFROM C_AllocationLine al

document.docx Versión 10 Página 25 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

INNER JOIN C_AllocationHdr a ON (al.C_AllocationHdr_ID=a.C_AllocationHdr_ID)

WHERE al.C_Invoice_ID = p_C_Invoice_ID AND a.IsActive='Y'

LOOP v_Temp := ar.Amount + ar.DisCountAmt + ar.WriteOffAmt;

v_PaidAmt := v_PaidAmt -- Allocation

+ currencyConvert(v_Temp * v_MultiplierAP,ar.C_Currency_ID, v_Currency_ID, ar.DateTrx, null,

ar.AD_Client_ID, ar.AD_Org_ID); RAISE NOTICE ' PaidAmt=% , Allocation= % * %', v_PaidAmt, v_Temp, v_MultiplierAP;

END LOOP;

-- Do we have a Payment Schedule ? IF (p_C_InvoicePaySchedule_ID > 0) THEN -- if not valid = lists invoice amount v_Remaining := v_PaidAmt; FOR s IN SELECT C_InvoicePaySchedule_ID, DueAmt

FROM C_InvoicePayScheduleWHERE C_Invoice_ID = p_C_Invoice_ID

AND IsValid='Y' ORDER BY DueDate LOOP IF (s.C_InvoicePaySchedule_ID = p_C_InvoicePaySchedule_ID) THEN v_TotalOpenAmt := (s.DueAmt*v_MultiplierCM) - v_Remaining; IF (s.DueAmt - v_Remaining < 0) THEN v_TotalOpenAmt := 0; END IF; ELSE -- calculate amount, which can be allocated to next schedule v_Remaining := v_Remaining - s.DueAmt; IF (v_Remaining < 0) THEN v_Remaining := 0; END IF; END IF; END LOOP; ELSE v_TotalOpenAmt := v_TotalOpenAmt - v_PaidAmt; END IF;-- RAISE NOTICE ''== Total='' || v_TotalOpenAmt;

-- Ignore RoundingIF (v_TotalOpenAmt > -v_Min AND v_TotalOpenAmt < v_Min) THEN

v_TotalOpenAmt := 0;END IF;

-- Round to currency precisionv_TotalOpenAmt := ROUND(COALESCE(v_TotalOpenAmt,0), v_Precision);

document.docx Versión 10 Página 26 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

--faaguilar get docbaseSelect d.docbasetype into v_docbasefrom c_doctype d inner join c_invoice i on (d.c_doctype_id=i.c_doctypetarget_id)where i.c_invoice_id=p_C_Invoice_ID;

if(v_docbase='APB') then

v_TotalOpenAmt:= v_TotalOpenAmt*0.9;v_TotalOpenAmt:= ROUND(v_TotalOpenAmt);

end if;--faaguilar end

RETURN v_TotalOpenAmt;END;

$BODY$ LANGUAGE plpgsql VOLATILE COST 100;ALTER FUNCTION invoiceopen(numeric, numeric) OWNER TO adempiere;

4050.- Optimización de Base de Datos (Configuración PostgreSQL en ADempiere, en base a memoria RAM)

Se recomienda utilizar:

max_connections = 300shared_buffers = 1/4 RAMeffective_cache_size = 3/4 RAMwork_mem = 4 ou 8MB depending of RAMmaintenance_work_mem = 1/16 RAMcheckpoint_segments = 16wal_buffers = 16MB

Por ejemplo: Teniendo 8GB…

default_statistics_target = 100maintenance_work_mem = 480MBcheckpoint_completion_target = 0.9effective_cache_size = 5632MBwork_mem = 26MBwal_buffers = 8MBcheckpoint_segments = 16shared_buffers = 1920MBmax_connections = 300

4060.- Reiniciar Listener en Oracle

- Entrar al usuario Oracle. - Sqlplus / as sysdba.

document.docx Versión 10 Página 27 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

- Startup- Exit- Lsnrctlstart- Esperar 5 min.- Lsnrctl status.- Deberia aparecer el nombre de la instancia indicando que esta ok.

en sqlp plus, SHUTDOWN NORMAL y luego del exit  lsnrctl stop

4070.- ¿Cómo obtener objetos inválidos en Oracle?

 SELECT UNIQUE object_name, object_type, owner FROM dba_objectsWHERE  status= 'INVALID' ;

4080.- ¿Qué debo hacer para poder exportar los reportes Jasper como Excel en ADempiere 360?

Por defecto, ADempiere 360 viene con una versión de la biblioteca de POI (Apache) versión 3 (antigua). Esta biblioteca debe ser actualizada a una versión posterior (como POI-3.7.jar). Para eso es necesario seguir una serie de pasos para poder generar un nuevo zip de 360.

- Abrir las fuentes de ADempiere360 en eclipse.- Descargar POI-3.7 y dejarlo en la ruta tools/lib- En Eclipse, Build Path -> Configure Build Path- En la pestaña “Libraries” quitar los poi*.jar antiguos y cambiar la ruta por los

nuevos- Cuando eclipse comience a recompilar, se generará un error. Para corregirlo, ir

a la clase “AbstractExcelReporter” y comentar la línea que da error y que dice:Cell.setEncoding(HSSFCell.ENCODING_UTF_16);

- Cambiar las referencias a POI en el archive Tools/Build.xml (Debiera haber 2)- Correr utils_dev/RUN_Build (o .sh, dependiendo del OS). Esto generará un nuevo

Adempiere_360LTS (zip o tar.gz). Éste será el nuevo instalador. Los binarios quedarán en install/build.

4090.- ¿Con qué lenguaje se debe trabajar por defecto en IReport?

Se recomienda trabajar con lenguaje “Groovy”, de tal manera de minimizar el error que pueda existir al generar el reporte desde web.

4100.- ¿Cómo puedo generar un nuevo custom con bibliotecas externas?

Para poder realizar esto, lo primero es agregar las bibliotecas externas en el entorno de desarrollo de eclipse. Esto, para poder generar las pruebas y códigos correspondientes. Luego, generar el custom de forma normal. Para finalizar, en el servidor se debe crear una nueva ruta en el directorio Adempiere/ (Ej, packages/). Dentro de ese directorio, dejar en un “lib” los jar que se desea utilizar. Una vez que esto está realizado, generar el setup correspondiente y luego el RUN_Server2.sh. Ejemplo: Para el WS de mindicador.cl (banco central) se creó un directorio packages.

document.docx Versión 10 Página 28 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

Dentro, un directorio bcentral. Dentro, un directorio lib. (Adempiere/packages/bcentral/lib). Dentro de esto, se dejaron los jar asociados a json.

4110.- Rendimiento en Windows (Base de datos)

C:\Program Files\Java\jdk1.6.0_45\bin>jmap -heap 5280Attaching to process ID 5280, please wait...Debugger attached successfully.Server compiler detected.JVM version is 20.45-b01

using thread-local object allocation.Parallel GC with 4 thread(s)

Heap Configuration:   MinHeapFreeRatio = 40   MaxHeapFreeRatio = 70   MaxHeapSize      = 4294967296 (4096.0MB)   NewSize          = 1310720 (1.25MB)   MaxNewSize       = 17592186044415 MB   OldSize          = 5439488 (5.1875MB)   NewRatio         = 2   SurvivorRatio    = 8   PermSize         = 21757952 (20.75MB)   MaxPermSize      = 1073741824 (1024.0MB)

Heap Usage:PS Young GenerationEden Space:   capacity = 1272774656 (1213.8125MB)   used     = 1246424688 (1188.6832122802734MB)   free     = 26349968 (25.129287719726562MB)   97.92972244727035% usedFrom Space:   capacity = 79757312 (76.0625MB)   used     = 52735952 (50.29292297363281MB)   free     = 27021360 (25.769577026367188MB)   66.12052321923788% usedTo Space:   capacity = 79101952 (75.4375MB)   used     = 0 (0.0MB)   free     = 79101952 (75.4375MB)   0.0% usedPS Old Generation   capacity = 2863333376 (2730.6875MB)   used     = 904630720 (862.7230834960938MB)   free     = 1958702656 (1867.9644165039062MB)   31.593621880793528% usedPS Perm Generation   capacity = 110297088 (105.1875MB)   used     = 109851144 (104.76221466064453MB)   free     = 445944 (0.42528533935546875MB)   99.59568832859848% used

document.docx Versión 10 Página 29 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

4120.- ¿Cómo modificar la RAM del cliente para adempiere?

En el servidor, se debe editar los archivos RUN_Adempiere.sh (para Linux) y RUN_Adempiere.bat (para Windows). Se debe ajustar los valores de Xmx y Xms (1g o un poco más, dependiendo de la media de memoria del cliente). Luego de eso, se deberá bajar nuevamente adempiere en las máquinas clientes. Si es necesario, borrar el caché de JAVA.

4130.- ¿Es correcto correr adempiere y pgadmin en la máquina servidor?

Idealmente no. Esto implica un uso de memoria extra de la máquina, que está destinada a ser un servidor para el resto de los clientes que se conectan a ella. Lo mejor es que el cliente adempiere, y pgadmin (o alguna otra GUI) sean utilizados desde otra máquina.

4140.- Funciones a copiar en 380 (postgresql)

-- DROP FUNCTION bomqtyonhand(numeric, numeric, numeric);

CREATE OR REPLACE FUNCTION bomqtyonhand( product_id numeric, warehouse_id numeric, locator_id numeric) RETURNS numeric AS$BODY$DECLARE

myWarehouse_ID numeric; v_Quantity numeric := 99999; -- unlimited

v_IsBOM CHAR(1);v_IsStocked CHAR(1);v_ProductType CHAR(1);

v_ProductQty numeric;v_StdPrecision int;bom record;

BEGIN-- Check ParametersmyWarehouse_ID := Warehouse_ID;IF (myWarehouse_ID IS NULL) THEN

IF (Locator_ID IS NULL) THENRETURN 0;

ELSESELECT SUM(M_Warehouse_ID) INTO myWarehouse_IDFROM M_LOCATORWHERE M_Locator_ID=Locator_ID;

END IF;END IF;IF (myWarehouse_ID IS NULL) THEN

RETURN 0;END IF;

document.docx Versión 10 Página 30 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

-- DBMS_OUTPUT.PUT_LINE('Warehouse=' || myWarehouse_ID);

-- Check, if product exists and if it is stockedBEGIN

SELECT IsBOM, ProductType, IsStocked INTO v_IsBOM, v_ProductType, v_IsStocked

FROM M_PRODUCTWHERE M_Product_ID=Product_ID;--

EXCEPTION -- not foundWHEN OTHERS THEN

RETURN 0;END;-- Unimited capacity if no itemIF (v_IsBOM='N' AND (v_ProductType<>'I' OR v_IsStocked='N')) THEN

RETURN v_Quantity;-- Stocked itemELSIF (v_IsStocked='Y') THEN

-- Get ProductQtySELECT COALESCE(SUM(QtyOnHand), 0) INTO v_ProductQtyFROM M_STORAGE sWHERE M_Product_ID=Product_IDAND s.M_Locator_ID=locator_id;--ininoles el reservado no será por bodega sino por

ubicación--AND EXISTS (SELECT * FROM M_LOCATOR l WHERE

s.M_Locator_ID=l.M_Locator_ID-- AND l.M_Warehouse_ID=v_Warehouse_ID);

-- DBMS_OUTPUT.PUT_LINE('Qty=' || v_ProductQty);RETURN v_ProductQty;

END IF;

-- Go though BOM-- DBMS_OUTPUT.PUT_LINE('BOM');

FOR bom IN -- Get BOM Product infoSELECT bl.M_Product_ID AS M_ProductBOM_ID, CASE WHEN

bl.IsQtyPercentage = 'N' THEN bl.QtyBOM ELSE bl.QtyBatch / 100 END AS BomQty , p.IsBOM , p.IsStocked, p.ProductType

FROM PP_PRODUCT_BOM b INNER JOIN M_PRODUCT p ON

(p.M_Product_ID=b.M_Product_ID) INNER JOIN PP_PRODUCT_BOMLINE bl ON

(bl.PP_Product_BOM_ID=b.PP_Product_BOM_ID)WHERE b.M_Product_ID = Product_ID

LOOP-- Stocked Items "leaf node"IF (bom.ProductType = 'I' AND bom.IsStocked = 'Y') THEN

-- Get v_ProductQtySELECT COALESCE(SUM(QtyOnHand), 0)

document.docx Versión 10 Página 31 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

INTO v_ProductQtyFROM M_STORAGE sWHERE M_Product_ID=bom.M_ProductBOM_ID AND EXISTS (SELECT * FROM M_LOCATOR l WHERE

s.M_Locator_ID=l.M_Locator_ID AND l.M_Warehouse_ID=myWarehouse_ID);-- Get Rounding PrecisionSELECT COALESCE(MAX(u.StdPrecision), 0) INTO v_StdPrecisionFROM C_UOM u, M_PRODUCT pWHERE u.C_UOM_ID=p.C_UOM_ID AND

p.M_Product_ID=bom.M_ProductBOM_ID;-- How much can we make with this productv_ProductQty := ROUND (v_ProductQty/bom.BOMQty,

v_StdPrecision);-- How much can we make overallIF (v_ProductQty < v_Quantity) THEN

v_Quantity := v_ProductQty;END IF;

-- Another BOMELSIF (bom.IsBOM = 'Y') THEN

v_ProductQty := Bomqtyonhand (bom.M_ProductBOM_ID, myWarehouse_ID, Locator_ID);

-- How much can we make overallIF (v_ProductQty < v_Quantity) THEN

v_Quantity := v_ProductQty;END IF;

END IF;END LOOP; -- BOM

IF (v_Quantity > 0) THEN-- Get Rounding Precision for ProductSELECT COALESCE(MAX(u.StdPrecision), 0) INTO v_StdPrecisionFROM C_UOM u, M_PRODUCT pWHERE u.C_UOM_ID=p.C_UOM_ID AND p.M_Product_ID=Product_ID;--RETURN ROUND (v_Quantity, v_StdPrecision);

END IF;RETURN 0;

END;$BODY$ LANGUAGE plpgsql VOLATILE COST 100;ALTER FUNCTION bomqtyonhand(numeric, numeric, numeric) OWNER TO adempiere;

-- Function: bomqtyreserved(numeric, numeric, numeric)

document.docx Versión 10 Página 32 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

-- DROP FUNCTION bomqtyreserved(numeric, numeric, numeric);

CREATE OR REPLACE FUNCTION bomqtyreserved( p_product_id numeric, p_warehouse_id numeric, p_locator_id numeric) RETURNS numeric AS$BODY$DECLARE

v_Warehouse_ID numeric; v_Quantity numeric := 99999; --

unlimitedv_IsBOM CHAR(1);v_IsStocked CHAR(1);v_ProductType CHAR(1);

v_ProductQty numeric;v_StdPrecision int;bom record;

BEGIN-- Check Parametersv_Warehouse_ID := p_Warehouse_ID;IF (v_Warehouse_ID IS NULL) THEN

IF (p_Locator_ID IS NULL) THENRETURN 0;

ELSESELECT MAX(M_Warehouse_ID) INTO v_Warehouse_IDFROM M_LOCATORWHERE M_Locator_ID=p_Locator_ID;

END IF;END IF;IF (v_Warehouse_ID IS NULL) THEN

RETURN 0;END IF;

-- DBMS_OUTPUT.PUT_LINE('Warehouse=' || v_Warehouse_ID);

-- Check, if product exists and if it is stockedBEGIN

SELECT IsBOM, ProductType, IsStocked INTO v_IsBOM, v_ProductType, v_IsStockedFROM M_PRODUCTWHERE M_Product_ID=p_Product_ID;--

EXCEPTION -- not foundWHEN OTHERS THEN

RETURN 0;END;

-- No reservation for non-stockedIF (v_IsBOM='N' AND (v_ProductType<>'I' OR v_IsStocked='N')) THEN

RETURN 0;-- Stocked itemELSIF (v_IsStocked='Y') THEN

document.docx Versión 10 Página 33 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

-- Get ProductQtySELECT COALESCE(SUM(QtyReserved), 0) INTO v_ProductQtyFROM M_STORAGE sWHERE M_Product_ID=p_Product_IDAND s.M_Locator_ID=p_locator_id;--ininoles el reservado no será por bodega sino por

ubicación--AND EXISTS (SELECT * FROM M_LOCATOR l WHERE

s.M_Locator_ID=l.M_Locator_ID-- AND l.M_Warehouse_ID=v_Warehouse_ID);--RETURN v_ProductQty;

END IF;

-- Go though BOM-- DBMS_OUTPUT.PUT_LINE('BOM');

FOR bom IN -- Get BOM Product infoSELECT bl.M_Product_ID AS M_ProductBOM_ID, CASE WHEN

bl.IsQtyPercentage = 'N' THEN bl.QtyBOM ELSE bl.QtyBatch / 100 END AS BomQty , p.IsBOM , p.IsStocked, p.ProductType

FROM PP_PRODUCT_BOM b INNER JOIN M_PRODUCT p ON

(p.M_Product_ID=b.M_Product_ID) INNER JOIN PP_PRODUCT_BOMLINE bl ON

(bl.PP_Product_BOM_ID=b.PP_Product_BOM_ID)WHERE b.M_Product_ID = p_Product_ID

LOOP-- Stocked Items "leaf node"IF (bom.ProductType = 'I' AND bom.IsStocked = 'Y') THEN

-- Get ProductQtySELECT COALESCE(SUM(QtyReserved), 0) INTO v_ProductQtyFROM M_STORAGE sWHERE M_Product_ID=bom.M_ProductBOM_ID AND EXISTS (SELECT * FROM M_LOCATOR l WHERE

s.M_Locator_ID=l.M_Locator_ID AND l.M_Warehouse_ID=v_Warehouse_ID);-- Get Rounding PrecisionSELECT COALESCE(MAX(u.StdPrecision), 0) INTO v_StdPrecisionFROM C_UOM u, M_PRODUCT pWHERE u.C_UOM_ID=p.C_UOM_ID AND

p.M_Product_ID=bom.M_ProductBOM_ID;-- How much can we make with this productv_ProductQty := ROUND (v_ProductQty/bom.BOMQty,

v_StdPrecision);-- How much can we make overallIF (v_ProductQty < v_Quantity) THEN

v_Quantity := v_ProductQty;END IF;

document.docx Versión 10 Página 34 de 36

FREQUENTLY ASKED QUESTION

Fase Tarea DescripciónPreguntas y Respuestas

-- Another BOMELSIF (bom.IsBOM = 'Y') THEN

v_ProductQty := Bomqtyreserved (bom.M_ProductBOM_ID, v_Warehouse_ID, p_Locator_ID);

-- How much can we make overallIF (v_ProductQty < v_Quantity) THEN

v_Quantity := v_ProductQty;END IF;

END IF;END LOOP; -- BOM

-- Unlimited (e.g. only services)IF (v_Quantity = 99999) THEN

RETURN 0;END IF;

IF (v_Quantity > 0) THEN-- Get Rounding Precision for ProductSELECT COALESCE(MAX(u.StdPrecision), 0) INTO v_StdPrecisionFROM C_UOM u, M_PRODUCT pWHERE u.C_UOM_ID=p.C_UOM_ID AND

p.M_Product_ID=p_Product_ID;--RETURN ROUND (v_Quantity, v_StdPrecision);

END IF;RETURN 0;

END;$BODY$ LANGUAGE plpgsql VOLATILE COST 100;ALTER FUNCTION bomqtyreserved(numeric, numeric, numeric) OWNER TO adempiere;

document.docx Versión 10 Página 35 de 36