From 44980e848b06d1fea05591d004abff52e02e005e Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 13 Feb 2008 15:50:59 +0000 Subject: [PATCH] FR [ 1892819 ] Field Phone Format --- .../model/CalloutBPartnerLocation.java | 85 +++++++++++++++++++ base/src/org/compiere/model/GridTab.java | 31 ++++++- migration/331b-trunk/101_FR1892819.sql | 18 ++++ .../331b-trunk/postgresql/101_FR1892819.sql | 18 ++++ 4 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 base/src/org/adempiere/model/CalloutBPartnerLocation.java create mode 100644 migration/331b-trunk/101_FR1892819.sql create mode 100644 migration/331b-trunk/postgresql/101_FR1892819.sql diff --git a/base/src/org/adempiere/model/CalloutBPartnerLocation.java b/base/src/org/adempiere/model/CalloutBPartnerLocation.java new file mode 100644 index 0000000000..a140483503 --- /dev/null +++ b/base/src/org/adempiere/model/CalloutBPartnerLocation.java @@ -0,0 +1,85 @@ +/****************************************************************************** + * Product: Adempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.adempiere.model; + +import java.util.Properties; + +import org.compiere.model.CalloutEngine; +import org.compiere.model.GridField; +import org.compiere.model.GridTab; +import org.compiere.model.MBPartnerLocation; +import org.compiere.model.MColumn; +import org.compiere.util.DB; +import org.compiere.util.Env; + +/** + * BPartnerLocation Callouts. + * + * @author Jesus Garcia / Carlos Ruiz - globalqss + */ +public class CalloutBPartnerLocation extends CalloutEngine +{ + + /** + * Format Phone No based on Country. + * Called from C_BPartnerLocation.C_Location_ID + * + * @param ctx Context + * @param WindowNo current Window No + * @param mTab Model Tab + * @param mField Model Field + * @param value The new value + * @param oldvalue The old value + * @return Error message or "" + */ + public String formatPhone (Properties ctx, int WindowNo, + GridTab mTab, GridField mField, Object value, Object oldValue) + { + log.info(""); + // Called from C_Location_ID field + Integer location_int = (Integer) mField.getValue(); + + String phone_frm = null; + if (location_int != null) + // take the phone format from country + phone_frm = DB.getSQLValueString(null, "SELECT ExpressionPhone FROM C_Country c, C_Location l WHERE c.C_Country_ID = l.C_Country_ID AND l.C_location_ID = ?", location_int); + + GridField fPhone = mTab.getField(MBPartnerLocation.COLUMNNAME_Phone); + MColumn colPhone = null; + if (fPhone != null) + colPhone = MColumn.get(Env.getCtx(), fPhone.getAD_Column_ID()); + GridField fPhone2 = mTab.getField(MBPartnerLocation.COLUMNNAME_Phone2); + MColumn colPhone2 = null; + if (fPhone2 != null) + colPhone2 = MColumn.get(Env.getCtx(), fPhone2.getAD_Column_ID()); + GridField fFax = mTab.getField(MBPartnerLocation.COLUMNNAME_Fax); + MColumn colFax = null; + if (fFax != null) + colFax = MColumn.get(Env.getCtx(), fFax.getAD_Column_ID()); + + // Apply the country format if the column doesn't have format + if (colPhone != null && (colPhone.getVFormat() == null || colPhone.getVFormat().length() == 0)) + fPhone.setVFormat(phone_frm); + if (colPhone2 != null && (colPhone2.getVFormat() == null || colPhone2.getVFormat().length() == 0)) + fPhone2.setVFormat(phone_frm); + if (colFax != null && (colFax.getVFormat() == null || colFax.getVFormat().length() == 0)) + fFax.setVFormat(phone_frm); + + return ""; + } // formatPhone + +} // CalloutBPartnerLocation \ No newline at end of file diff --git a/base/src/org/compiere/model/GridTab.java b/base/src/org/compiere/model/GridTab.java index 72b2262613..222f82020c 100644 --- a/base/src/org/compiere/model/GridTab.java +++ b/base/src/org/compiere/model/GridTab.java @@ -1740,8 +1740,37 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable DB.close(rs, pstmt); rs = null; pstmt = null; } - } // loadOrderInfo + + // Set the Phone Format on BPartnerLocation based on Country + if (m_vo.TableName.equals("C_BPartner_Location")) + { + Integer location_int = (Integer) getValue(X_C_BPartner_Location.COLUMNNAME_C_Location_ID); + String phone_frm = null; + if (location_int != null) + // take the phone format from country + phone_frm = DB.getSQLValueString(null, "SELECT ExpressionPhone FROM C_Country c, C_Location l WHERE c.C_Country_ID = l.C_Country_ID AND l.C_location_ID = ?", location_int); + GridField fPhone = getField(X_C_BPartner_Location.COLUMNNAME_Phone); + MColumn colPhone = null; + if (fPhone != null) + colPhone = MColumn.get(Env.getCtx(), fPhone.getAD_Column_ID()); + GridField fPhone2 = getField(X_C_BPartner_Location.COLUMNNAME_Phone2); + MColumn colPhone2 = null; + if (fPhone2 != null) + colPhone2 = MColumn.get(Env.getCtx(), fPhone2.getAD_Column_ID()); + GridField fFax = getField(X_C_BPartner_Location.COLUMNNAME_Fax); + MColumn colFax = null; + if (fFax != null) + colFax = MColumn.get(Env.getCtx(), fFax.getAD_Column_ID()); + // Apply the country format if the column doesn't have format + if (colPhone != null && (colPhone.getVFormat() == null || colPhone.getVFormat().length() == 0)) + fPhone.setVFormat(phone_frm); + if (colPhone2 != null && (colPhone2.getVFormat() == null || colPhone2.getVFormat().length() == 0)) + fPhone2.setVFormat(phone_frm); + if (colFax != null && (colFax.getVFormat() == null || colFax.getVFormat().length() == 0)) + fFax.setVFormat(phone_frm); + } + } // loadDependentInfo diff --git a/migration/331b-trunk/101_FR1892819.sql b/migration/331b-trunk/101_FR1892819.sql new file mode 100644 index 0000000000..e9535ed01e --- /dev/null +++ b/migration/331b-trunk/101_FR1892819.sql @@ -0,0 +1,18 @@ +-- Review optional scripts at the end + +-- Feb 13, 2008 10:31:57 AM COT +-- 1892819 - Field Phone Format +UPDATE AD_Column SET Callout='org.adempiere.model.CalloutBPartnerLocation.formatPhone',Updated=TO_DATE('2008-02-13 10:31:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=2959 +; + +-- Please uncomment following lines if you prefer to preserve old functionality - this is: not formatting phones + +/* + +UPDATE C_Country SET ExpressionPhone=NULL,Updated=TO_DATE('2008-02-13 10:32:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE C_Country_ID=100 +; + +UPDATE C_Country SET ExpressionPhone=NULL,Updated=TO_DATE('2008-02-13 10:33:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE C_Country_ID=122 +; + +*/ \ No newline at end of file diff --git a/migration/331b-trunk/postgresql/101_FR1892819.sql b/migration/331b-trunk/postgresql/101_FR1892819.sql new file mode 100644 index 0000000000..df1b64893f --- /dev/null +++ b/migration/331b-trunk/postgresql/101_FR1892819.sql @@ -0,0 +1,18 @@ +-- Review optional scripts at the end + +-- Feb 13, 2008 10:31:57 AM COT +-- 1892819 - Field Phone Format +UPDATE AD_Column SET Callout='org.adempiere.model.CalloutBPartnerLocation.formatPhone',Updated=TO_TIMESTAMP('2008-02-13 10:31:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=2959 +; + +-- Please uncomment following lines if you prefer to preserve old functionality - this is: not formatting phones + +/* + +UPDATE C_Country SET ExpressionPhone=NULL,Updated=TO_TIMESTAMP('2008-02-13 10:32:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE C_Country_ID=100 +; + +UPDATE C_Country SET ExpressionPhone=NULL,Updated=TO_TIMESTAMP('2008-02-13 10:33:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE C_Country_ID=122 +; + +*/ \ No newline at end of file