Anonymous | Login
Project:
RSS
  
News | My View | View Issues | Roadmap | Summary

View Issue DetailsJump to Notes ] Issue History ] Print ]
ID
0004864
TypeCategorySeverityReproducibilityDate SubmittedLast Update
defect[Openbravo ERP] 00. Application dictionaryminoralways2008-09-09 09:122008-12-16 13:10
ReporterrafarodaView Statuspublic 
Assigned Torafaroda 
PriorityhighResolutionfixedFixed in Version
StatusclosedFix in branchpiFixed in SCM revision7139
ProjectionnoneETAnoneTarget Version
OSLinux 32 bitDatabasePostgreSQLJava version1.5
OS VersionUbuntu 7.10Database version8.3Ant version1.7
Product VersionpiSCM revision7008 
Review Assigned To
Web browser
ModulesCore
Regression level
Regression date
Regression introduced in release
Regression introduced by commit
Triggers an Emergency PackNo
Summary

0004864: AD_COLUMN_IDENTIFIER does not work correctly for 'M_Product' table

DescriptionIn some files [1] [2] [3], AD_COLUMN_IDENTIFIER is used, for instance, as:
AD_COLUMN_IDENTIFIER(TO_CHAR('M_Product'), TO_CHAR(T.M_PRODUCT_ID), TO_CHAR('es_ES')) in order to get the name of a product in Spanish, if this product has a translation to Spanish.

[1] https://dev.openbravo.com/websvn/openbravo/trunk/src/org/openbravo/erpCommon/ad_reports/ReportInvoiceCustomerDimensionalAnalysesJR.java [^]
[2] https://dev.openbravo.com/websvn/openbravo/trunk/src/org/openbravo/erpCommon/ad_reports/ReportInvoiceVendorDimensionalAnalysesJR.java [^]
[3] https://dev.openbravo.com/websvn/openbravo/trunk/src/org/openbravo/erpCommon/ad_reports/ReportMaterialDimensionalAnalysesJR.java [^]
Steps To Reproduce1) Set a Spanish translation for the product with M_Product_Id = 1000001 (Telephone) inside 'Master Data Management || Product || Product >> Translation'

2) Execute (being 1000001 the ID of the product - M_Product_Id):
select AD_COLUMN_IDENTIFIER('M_Product', '1000001', 'es_ES') from dual;

You still get the name 'Telephone' in 'en_US'.
Proposed SolutionIf you inspect AD_COLUMN_IDENTIFIER function, you find:
SELECT REPLACE(REPLACE(SQL_RECORD_IDENTIFIER, ':c_language', '''' || p_Language || ''''), ':c_ID', p_Record_ID)
  INTO v_SQL
  FROM AD_TABLE
  WHERE UPPER(TABLENAME)=UPPER(p_TableName) ;

If you execute:
SELECT REPLACE(REPLACE(SQL_RECORD_IDENTIFIER, ':c_language', '''' || 'es_ES' || ''''), ':c_ID', '1000001')
  FROM AD_TABLE
  WHERE UPPER(TABLENAME)=UPPER('M_Product') ;

You get the SQL:
SELECT TO_CHAR(COALESCE(TO_CHAR(T.Name),'')) AS COLUMN_IDENTIFIER FROM (SELECT AD_LANGUAGE FROM AD_LANGUAGE WHERE AD_LANGUAGE='es_ES') L, M_Product T WHERE M_Product_ID='1000001'

Then, inside AD_COLUMN_IDENTIFIER function, this SQL sentence is executed. You can notice that there is no reference to M_Product_Trl table so you will never get the Spanish translation of the product.
TagsNo tags attached.
Attached Files

- Relationships Relation Graph ] Dependency Graph ]
depends on backport 0004890 closedrafaroda AD_COLUMN_IDENTIFIER does not work correctly for 'M_Product' table 
blocks defect 0004865 closedrafaroda 'es_ES' hardcoded in AD_COLUMN_IDENTIFIER 

-  Notes
(0008950)
rafaroda (developer)
2008-09-09 17:07

In fact, the problem is in AD_COLUMN where 'Name' column for 'M_Product' table (ad_table_id = 208) has value 'IsTranslated' = 'N'.

A.1) select istranslated from ad_column where ad_Table_id = '208' and columnname ='Name';
Result = N

A.2) select ad_column_identifier_sql('M_Product') from dual;
Result = SELECT TO_CHAR(COALESCE(TO_CHAR(T.Name),'')) AS COLUMN_IDENTIFIER FROM (SELECT AD_LANGUAGE FROM AD_LANGUAGE WHERE AD_LANGUAGE=:c_language) L, M_Product T WHERE M_Product_ID=:c_ID

To solve this:

B.1) update ad_column set istranslated = 'Y' where ad_Table_id = '208' and columnname ='Name';

B.2) select ad_column_identifier_sql('M_Product') from dual;
Result = SELECT (SELECT COALESCE(TO_CHAR(MAX(TT.Name)), TO_CHAR(T.Name)) FROM M_Product_Trl TT WHERE TT.M_Product_ID=T.M_Product_ID AND TT.AD_LANGUAGE=L.AD_LANGUAGE) AS COLUMN_IDENTIFIER FROM (SELECT AD_LANGUAGE FROM AD_LANGUAGE WHERE AD_LANGUAGE=:c_language) L, M_Product T WHERE M_Product_ID=':c_ID'

B.3) select ad_update_table_identifier(null);

B.4) select SQL_RECORD_IDENTIFIER from ad_table where UPPER(TABLENAME)=UPPER('M_Product') ;
Result = SELECT (SELECT COALESCE(TO_CHAR(MAX(TT.Name)), TO_CHAR(T.Name)) FROM M_Product_Trl TT WHERE TT.M_Product_ID=T.M_Product_ID AND TT.AD_LANGUAGE=L.AD_LANGUAGE) AS COLUMN_IDENTIFIER FROM (SELECT AD_LANGUAGE FROM AD_LANGUAGE WHERE AD_LANGUAGE=:c_language) L, M_Product T WHERE M_Product_ID=:c_ID

B.5) select * from m_product_trl;

B.6) select AD_COLUMN_IDENTIFIER('M_Product', '1000001', 'es_ES') from dual;
Result = Teléfono
(0008966)
svnbot (reporter)
2008-09-10 09:45

Repository: openbravo
Revision: 7139
Author: rafaroda
Date: 2008-09-10 09:45:26 +0200 (Wed, 10 Sep 2008)

Fixes bug 0004864 Changed to 'Y' the value 'Translation' of 'Name' column inside 'M_Product' table then run 'ad_update_table_identifier(null)' procedure.

---
U trunk/src-db/database/sourcedata/AD_COLUMN.xml
U trunk/src-db/database/sourcedata/AD_TABLE.xml
---

https://dev.openbravo.com/websvn/openbravo/?rev=7139&sc=1 [^]

- Issue History
Date Modified Username Field Change
2008-09-09 09:12 rafaroda New Issue
2008-09-09 09:12 rafaroda Assigned To => cromero
2008-09-09 09:12 rafaroda sf_bug_id 0 => 2101536
2008-09-09 09:12 rafaroda Regression testing => No
2008-09-09 09:23 rafaroda Relationship added blocks 0004865
2008-09-09 09:38 rafaroda Assigned To cromero => alostale
2008-09-09 17:07 rafaroda Note Added: 0008950
2008-09-09 17:16 rafaroda Assigned To alostale => rafaroda
2008-09-09 17:16 rafaroda Severity major => minor
2008-09-09 17:16 rafaroda Summary AD_COLUMN_IDENTIFIER does not work => AD_COLUMN_IDENTIFIER does not work correctly for 'M_Product' table
2008-09-09 17:16 rafaroda Status new => scheduled
2008-09-09 17:16 rafaroda fix_in_branch => trunk
2008-09-10 09:45 svnbot Checkin
2008-09-10 09:45 svnbot Note Added: 0008966
2008-09-10 09:45 svnbot Status scheduled => resolved
2008-09-10 09:45 svnbot Resolution open => fixed
2008-09-10 09:45 svnbot svn_revision => 7139
2008-12-16 13:10 psarobe Status resolved => closed


Copyright © 2000 - 2009 MantisBT Group
Powered by Mantis Bugtracker