- Este debate está vacío.
-
AutorEntradas
-
22 octubre, 2014 a las 10:12 pm #32857Javier LoffredoParticipante
Buenas, quisiera saber si hay forma (o planes para la próxima versión) de poder buscar un registro por el nombre (bPartnerRetrieveByName o algo asi).
Estoy buscando hacer algo como el bPartnerRetrieveByValue, pero con el nombre en lugar del Value.
Gracias!!
24 octubre, 2014 a las 3:11 pm #38813Federico CristinaSuperadministradorBuenas,
Podés resolver el problema de otra manera, sin necesidad de esperar por una nueva versión. La versíon más actual de LYWS cuenta con la operación recordQuery(). Mediante esa operación podés recuperar uno o varios registros de una tabla a partir de un criterio especificado, e incluso filtrar sólo un número de columnas a retornar.
Code:/**
* Devuelve una serie de registros de una tabla dada
* @param data parametros generales de acceso y columnas a recuperar
* @param tableName Nombre de tabla (M_Product, C_BPartner, C_Order, C_Invoice, M_InOut, C_AllocationHdr, etc.)
* @param whereClause criterio de filtrado
* @param includeNamedReferences para las foreign keys, devolver además del ID, el name, value o identificador correspondiente al registro referenciado
* @return MultipleRecordsResultBean con OK, ERROR, los registros correspondientes
*/
public MultipleRecordsResultBean recordQuery(FilteredColumnsParameterBean data, String tableName, String whereClause, boolean includeNamedReferences);Es posible por lo tanto, recuperar el ID de un BPartner a partir de su Name, y luego utilizar la operación bPartnerRetrieveByID() para recuperar todos los datos del BPartner. También podrías utilizar directamente recordQuery() para recuperar un registro de la tabla C_BPartner, pero la operación bPartnerRetrieveByID() incluye datos adicionales, como su localización.
Saludos,
Federico24 octubre, 2014 a las 3:20 pm #38814Javier LoffredoParticipanteExcelente, muchas gracias!
11 noviembre, 2014 a las 2:34 am #38818Javier LoffredoParticipantePuede ser que no funcione el recordQuery con la tabla c_currency?
con c_bpartner, m_product y m_pricelist funciona de 10, pero cuando quiero usarlo con c_currency me vuelve un array vacio (sin ningun error)
el whereClause es: c_currency_id=118
11 noviembre, 2014 a las 8:23 am #38864Saulo GilMiembrojloffredo wrote:Puede ser que no funcione el recordQuery con la tabla c_currency?con c_bpartner, m_product y m_pricelist funciona de 10, pero cuando quiero usarlo con c_currency me vuelve un array vacio (sin ningun error)
el whereClause es: c_currency_id=118
¿Has probado sin aplicar filtros?
11 noviembre, 2014 a las 7:47 pm #38865Federico CristinaSuperadministradorBuenas,
Es extraño. Lo único que se me ocurre en función de lo que comentás es que C_Currency tiene como AD_Client_ID = 0 (la cual es System, dado que es información para todas las compañías). Podrías probar a acceder al WS con dicha compañía a ver si en ese caso sí devuelve la información. De ser así, es probable que en algún lugar se esté aplicando algún filtro por compañía.
Slds,
Federico11 noviembre, 2014 a las 9:18 pm #38815Javier LoffredoParticipanteBueno, sin filtros da lo mismo.
Debe venir por el lado que es system, pero para lo que estoy haciendo no tengo como cambiarle el usuario de login para que pueda entrar con el otro cliente (o bien tener que habilitar el usuario para que loguee con system).Gracias igual
12 noviembre, 2014 a las 10:50 pm #38868Saulo GilMiembroMe pregunto cual puede ser el impacto de cambiarle la compañía (ad_client_id) a las monedas que están dadas de alta. Esto no debería tener efectos colaterales, al menos que tengas más de una compañía dada de alta dentro de la misma base de datos. Creo que no se pierde mucho con probar, seguramente con esto puedas resolver tu problema.
12 noviembre, 2014 a las 11:41 pm #38874Federico CristinaSuperadministradorBuenas,
Estaba equivocado, el problema no radicaba en la compañía, sino en que MCurrency no implementaba uno de los dos tradicionales constructores de POs, y justamente GeneralRecordQueryHandler (clase de LYWS) lo necesita. En particular, el faltante es el siguiente en MCurrency:
Code:public MCurrency(Properties ctx, ResultSet rs, String trxName) {
super(ctx, rs, trxName);
}Esto disparaba una excepción que impedía instanciar los correspondientes POs y llevarlos luego a la map de resultados.
Ya está commiteado el fix. Revisión r1104.
Slds,
Federico -
AutorEntradas
- Debes estar registrado para responder a este debate.