From 3b92d9a3bec52c872e52c84926a560cbdc0fa80d Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 11 Feb 2014 17:54:53 -0500 Subject: [PATCH 1/6] IDEMPIERE-391 Scheduler improvements / found problem on 912_IDEMPIERE_391.sql migrating a 360 database with a crontab scheduler configured --- migration/360lts-i1.0a/oracle/912_IDEMPIERE_391.sql | 4 ++++ migration/360lts-i1.0a/postgresql/912_IDEMPIERE_391.sql | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/migration/360lts-i1.0a/oracle/912_IDEMPIERE_391.sql b/migration/360lts-i1.0a/oracle/912_IDEMPIERE_391.sql index a06964a2ff..e1431f46d7 100644 --- a/migration/360lts-i1.0a/oracle/912_IDEMPIERE_391.sql +++ b/migration/360lts-i1.0a/oracle/912_IDEMPIERE_391.sql @@ -1639,6 +1639,7 @@ from c_acctprocessor where not exists (select 1 from ad_schedule where coalesce(c_acctprocessor.frequencytype,' ') =coalesce(ad_schedule.frequencytype,' ') and coalesce(c_acctprocessor.frequency,-1) =coalesce(ad_schedule.frequency,-1) +and ad_schedule.scheduletype='F' ) ) ; @@ -1653,6 +1654,7 @@ from ad_alertprocessor where not exists (select 1 from ad_schedule where coalesce(ad_alertprocessor.frequencytype,' ') =coalesce(ad_schedule.frequencytype,' ') and coalesce(ad_alertprocessor.frequency,-1) =coalesce(ad_schedule.frequency,-1) +and ad_schedule.scheduletype='F' ) ) ; @@ -1667,6 +1669,7 @@ from r_requestprocessor where not exists (select 1 from ad_schedule where coalesce(r_requestprocessor.frequencytype,' ') =coalesce(ad_schedule.frequencytype,' ') and coalesce(r_requestprocessor.frequency,-1) =coalesce(ad_schedule.frequency,-1) +and ad_schedule.scheduletype='F' ) ) ; @@ -1681,6 +1684,7 @@ from ad_workflowprocessor where not exists (select 1 from ad_schedule where coalesce(ad_workflowprocessor.frequencytype,' ') =coalesce(ad_schedule.frequencytype,' ') and coalesce(ad_workflowprocessor.frequency,-1) =coalesce(ad_schedule.frequency,-1) +and ad_schedule.scheduletype='F' ) ) ; diff --git a/migration/360lts-i1.0a/postgresql/912_IDEMPIERE_391.sql b/migration/360lts-i1.0a/postgresql/912_IDEMPIERE_391.sql index e57743b5ee..6598451135 100644 --- a/migration/360lts-i1.0a/postgresql/912_IDEMPIERE_391.sql +++ b/migration/360lts-i1.0a/postgresql/912_IDEMPIERE_391.sql @@ -1639,6 +1639,7 @@ from c_acctprocessor where not exists (select 1 from ad_schedule where coalesce(c_acctprocessor.frequencytype,' ') =coalesce(ad_schedule.frequencytype,' ') and coalesce(c_acctprocessor.frequency,-1) =coalesce(ad_schedule.frequency,-1) +and ad_schedule.scheduletype='F' ) ) as x ; @@ -1653,6 +1654,7 @@ from ad_alertprocessor where not exists (select 1 from ad_schedule where coalesce(ad_alertprocessor.frequencytype,' ') =coalesce(ad_schedule.frequencytype,' ') and coalesce(ad_alertprocessor.frequency,-1) =coalesce(ad_schedule.frequency,-1) +and ad_schedule.scheduletype='F' ) ) as x ; @@ -1667,6 +1669,7 @@ from r_requestprocessor where not exists (select 1 from ad_schedule where coalesce(r_requestprocessor.frequencytype,' ') =coalesce(ad_schedule.frequencytype,' ') and coalesce(r_requestprocessor.frequency,-1) =coalesce(ad_schedule.frequency,-1) +and ad_schedule.scheduletype='F' ) ) as x ; @@ -1681,6 +1684,7 @@ from ad_workflowprocessor where not exists (select 1 from ad_schedule where coalesce(ad_workflowprocessor.frequencytype,' ') =coalesce(ad_schedule.frequencytype,' ') and coalesce(ad_workflowprocessor.frequency,-1) =coalesce(ad_schedule.frequency,-1) +and ad_schedule.scheduletype='F' ) ) as x ; From ad1837e65ab8a97ebdeba26615156e3431382ca5 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 11 Feb 2014 17:57:36 -0500 Subject: [PATCH 2/6] IDEMPIERE-1724 Field C_Charge_ID in table C_OrderLine has wrong dynamic Validation --- migration/i2.0/oracle/201402111757_IDEMPIERE-1724.sql | 11 +++++++++++ .../i2.0/postgresql/201402111757_IDEMPIERE-1724.sql | 8 ++++++++ 2 files changed, 19 insertions(+) create mode 100644 migration/i2.0/oracle/201402111757_IDEMPIERE-1724.sql create mode 100644 migration/i2.0/postgresql/201402111757_IDEMPIERE-1724.sql diff --git a/migration/i2.0/oracle/201402111757_IDEMPIERE-1724.sql b/migration/i2.0/oracle/201402111757_IDEMPIERE-1724.sql new file mode 100644 index 0000000000..08bbab32ad --- /dev/null +++ b/migration/i2.0/oracle/201402111757_IDEMPIERE-1724.sql @@ -0,0 +1,11 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Feb 11, 2014 5:56:46 PM COT +-- IDEMPIERE-1724 Field C_Charge_ID in table C_OrderLine has wrong dynamic Validation +UPDATE AD_Column SET AD_Val_Rule_ID=52030,Updated=TO_DATE('2014-02-11 17:56:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=3050 +; + +SELECT register_migration_script('201402111757_IDEMPIERE-1724.sql') FROM dual +; + diff --git a/migration/i2.0/postgresql/201402111757_IDEMPIERE-1724.sql b/migration/i2.0/postgresql/201402111757_IDEMPIERE-1724.sql new file mode 100644 index 0000000000..ba3bf43412 --- /dev/null +++ b/migration/i2.0/postgresql/201402111757_IDEMPIERE-1724.sql @@ -0,0 +1,8 @@ +-- Feb 11, 2014 5:56:46 PM COT +-- IDEMPIERE-1724 Field C_Charge_ID in table C_OrderLine has wrong dynamic Validation +UPDATE AD_Column SET AD_Val_Rule_ID=52030,Updated=TO_TIMESTAMP('2014-02-11 17:56:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=3050 +; + +SELECT register_migration_script('201402111757_IDEMPIERE-1724.sql') FROM dual +; + From f249fd232713515265cffda0a5edca14e5c8e80e Mon Sep 17 00:00:00 2001 From: hieplq Date: Wed, 12 Feb 2014 22:07:52 +0700 Subject: [PATCH 3/6] =?UTF-8?q?IDEMPIERE-1751:role=20without=20org=20acces?= =?UTF-8?q?s=20=C3=ADs=20not=20load.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- org.adempiere.base/src/org/compiere/util/Login.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/util/Login.java b/org.adempiere.base/src/org/compiere/util/Login.java index 9fe8fd4a40..0eb8185a9d 100644 --- a/org.adempiere.base/src/org/compiere/util/Login.java +++ b/org.adempiere.base/src/org/compiere/util/Login.java @@ -1498,7 +1498,12 @@ public class Login sql.append(" AND r.IsMasterRole='N'"); sql.append(" AND u.IsActive='Y' AND EXISTS (SELECT * FROM AD_Client c WHERE u.AD_Client_ID=c.AD_Client_ID AND c.IsActive='Y')"); // don't show roles without org access - sql.append(" AND (r.isaccessallorgs='Y' OR EXISTS (SELECT 1 FROM AD_Role_OrgAccess ro WHERE ro.AD_Role_ID=r.AD_Role_ID AND ro.IsActive='Y'))"); + sql.append(" AND ("); + sql.append(" (r.isaccessallorgs='Y' OR EXISTS (SELECT 1 FROM AD_Role_OrgAccess ro WHERE ro.AD_Role_ID=r.AD_Role_ID AND ro.IsActive='Y'))"); + // show roll with isuseuserorgaccess = "Y" when Exist org in AD_User_Orgaccess + sql.append(" OR "); + sql.append(" (r.isuseuserorgaccess='Y' AND EXISTS (SELECT 1 FROM AD_User_Orgaccess uo WHERE uo.AD_User_ID=u.AD_User_ID AND uo.IsActive='Y')) "); + sql.append(")"); sql.append(" ORDER BY r.Name"); PreparedStatement pstmt = null; From 9e5cd134dc16461dda28a51f0408d97ab8d4c188 Mon Sep 17 00:00:00 2001 From: dantam Date: Fri, 27 Sep 2013 14:17:14 +0200 Subject: [PATCH 4/6] IDEMPIERE-1398 Tax lookups not transaction aware --- .../src/org/compiere/model/MInvoiceLine.java | 2 +- .../src/org/compiere/model/MOrderLine.java | 2 +- .../src/org/compiere/model/MRMALine.java | 4 +- .../src/org/compiere/model/Tax.java | 119 ++++++++++++++---- 4 files changed, 99 insertions(+), 28 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MInvoiceLine.java b/org.adempiere.base/src/org/compiere/model/MInvoiceLine.java index db148fb27e..f321992756 100644 --- a/org.adempiere.base/src/org/compiere/model/MInvoiceLine.java +++ b/org.adempiere.base/src/org/compiere/model/MInvoiceLine.java @@ -435,7 +435,7 @@ public class MInvoiceLine extends X_C_InvoiceLine int C_Tax_ID = Tax.get(getCtx(), getM_Product_ID(), getC_Charge_ID() , m_DateInvoiced, m_DateInvoiced, getAD_Org_ID(), M_Warehouse_ID, m_C_BPartner_Location_ID, // should be bill to - m_C_BPartner_Location_ID, m_IsSOTrx); + m_C_BPartner_Location_ID, m_IsSOTrx, get_TrxName()); if (C_Tax_ID == 0) { log.log(Level.SEVERE, "No Tax found"); diff --git a/org.adempiere.base/src/org/compiere/model/MOrderLine.java b/org.adempiere.base/src/org/compiere/model/MOrderLine.java index b9a7b31640..7dd63e7f8b 100644 --- a/org.adempiere.base/src/org/compiere/model/MOrderLine.java +++ b/org.adempiere.base/src/org/compiere/model/MOrderLine.java @@ -338,7 +338,7 @@ public class MOrderLine extends X_C_OrderLine int ii = Tax.get(getCtx(), getM_Product_ID(), getC_Charge_ID(), getDateOrdered(), getDateOrdered(), getAD_Org_ID(), getM_Warehouse_ID(), getC_BPartner_Location_ID(), // should be bill to - getC_BPartner_Location_ID(), m_IsSOTrx); + getC_BPartner_Location_ID(), m_IsSOTrx, get_TrxName()); if (ii == 0) { log.log(Level.SEVERE, "No Tax found"); diff --git a/org.adempiere.base/src/org/compiere/model/MRMALine.java b/org.adempiere.base/src/org/compiere/model/MRMALine.java index f51afe8926..3ebbe4e8b8 100644 --- a/org.adempiere.base/src/org/compiere/model/MRMALine.java +++ b/org.adempiere.base/src/org/compiere/model/MRMALine.java @@ -156,7 +156,7 @@ public class MRMALine extends X_M_RMALine taxId = Tax.get(getCtx(), getM_Product_ID(), getC_Charge_ID(), invoice.getDateInvoiced(), invoice.getDateInvoiced(), getAD_Org_ID(), getParent().getShipment().getM_Warehouse_ID(), invoice.getC_BPartner_Location_ID(), // should be bill to - invoice.getC_BPartner_Location_ID(), getParent().isSOTrx()); + invoice.getC_BPartner_Location_ID(), getParent().isSOTrx(), get_TrxName()); } else { @@ -170,7 +170,7 @@ public class MRMALine extends X_M_RMALine taxId = Tax.get(getCtx(), getM_Product_ID(), getC_Charge_ID(), order.getDateOrdered(), order.getDateOrdered(), getAD_Org_ID(), order.getM_Warehouse_ID(), order.getC_BPartner_Location_ID(), // should be bill to - order.getC_BPartner_Location_ID(), getParent().isSOTrx()); + order.getC_BPartner_Location_ID(), getParent().isSOTrx(), get_TrxName()); } else throw new IllegalStateException("No Invoice/Order found the Shipment/Receipt associated"); diff --git a/org.adempiere.base/src/org/compiere/model/Tax.java b/org.adempiere.base/src/org/compiere/model/Tax.java index 5b5cf3e5c4..1f48646f71 100644 --- a/org.adempiere.base/src/org/compiere/model/Tax.java +++ b/org.adempiere.base/src/org/compiere/model/Tax.java @@ -46,6 +46,30 @@ public class Tax /** Logger */ static private CLogger log = CLogger.getCLogger (Tax.class); + + /** + * + * @param ctx + * @param M_Product_ID + * @param C_Charge_ID + * @param billDate + * @param shipDate + * @param AD_Org_ID + * @param M_Warehouse_ID + * @param billC_BPartner_Location_ID + * @param shipC_BPartner_Location_ID + * @param IsSOTrx + * @deprecated + * @return + */ + public static int get (Properties ctx, int M_Product_ID, int C_Charge_ID, + Timestamp billDate, Timestamp shipDate, + int AD_Org_ID, int M_Warehouse_ID, + int billC_BPartner_Location_ID, int shipC_BPartner_Location_ID, + boolean IsSOTrx) { + return get(ctx, M_Product_ID, C_Charge_ID, billDate, shipDate, AD_Org_ID, M_Warehouse_ID, billC_BPartner_Location_ID, shipC_BPartner_Location_ID, IsSOTrx, null); + } + /************************************************************************** * Get Tax ID - converts parameters to call Get Tax. @@ -76,18 +100,41 @@ public class Tax Timestamp billDate, Timestamp shipDate, int AD_Org_ID, int M_Warehouse_ID, int billC_BPartner_Location_ID, int shipC_BPartner_Location_ID, - boolean IsSOTrx) + boolean IsSOTrx, String trxName) { if (M_Product_ID != 0) return getProduct (ctx, M_Product_ID, billDate, shipDate, AD_Org_ID, M_Warehouse_ID, - billC_BPartner_Location_ID, shipC_BPartner_Location_ID, IsSOTrx); + billC_BPartner_Location_ID, shipC_BPartner_Location_ID, IsSOTrx, trxName); else if (C_Charge_ID != 0) return getCharge (ctx, C_Charge_ID, billDate, shipDate, AD_Org_ID, M_Warehouse_ID, - billC_BPartner_Location_ID, shipC_BPartner_Location_ID, IsSOTrx); + billC_BPartner_Location_ID, shipC_BPartner_Location_ID, IsSOTrx, trxName); else - return getExemptTax (ctx, AD_Org_ID); + return getExemptTax (ctx, AD_Org_ID, trxName); } // get + /** + * + * @param ctx + * @param C_Charge_ID + * @param billDate + * @param shipDate + * @param AD_Org_ID + * @param M_Warehouse_ID + * @param billC_BPartner_Location_ID + * @param shipC_BPartner_Location_ID + * @param IsSOTrx + * @return + * @deprecated + */ + public static int getCharge (Properties ctx, int C_Charge_ID, + Timestamp billDate, Timestamp shipDate, + int AD_Org_ID, int M_Warehouse_ID, + int billC_BPartner_Location_ID, int shipC_BPartner_Location_ID, + boolean IsSOTrx) { + return getCharge(ctx, C_Charge_ID, billDate, shipDate, AD_Org_ID, M_Warehouse_ID, billC_BPartner_Location_ID, shipC_BPartner_Location_ID, IsSOTrx, null); + } + + /** * Get Tax ID - converts parameters to call Get Tax. *
@@ -118,7 +165,7 @@ public class Tax
 		Timestamp billDate, Timestamp shipDate,
 		int AD_Org_ID, int M_Warehouse_ID,
 		int billC_BPartner_Location_ID, int shipC_BPartner_Location_ID,
-		boolean IsSOTrx)
+		boolean IsSOTrx, String trxName)
 	{
 		/* ship location from warehouse is plainly ignored below */
 		// if (M_Warehouse_ID <= 0)
@@ -152,7 +199,7 @@ public class Tax
 		ResultSet rs = null;
 		try
 		{
-			pstmt = DB.prepareStatement (sql, null);
+			pstmt = DB.prepareStatement (sql, trxName);
 			pstmt.setInt (1, M_Warehouse_ID);
 			pstmt.setInt (2, C_Charge_ID);
 			pstmt.setInt (3, AD_Org_ID);
@@ -182,7 +229,7 @@ public class Tax
 			}
 			else if ("Y".equals (IsTaxExempt))
 			{
-				return getExemptTax (ctx, AD_Org_ID);
+				return getExemptTax (ctx, AD_Org_ID, trxName);
 			}
 		}
 		catch (SQLException e)
@@ -213,10 +260,32 @@ public class Tax
 		  + ", shipToC_Location_ID=" + shipToC_Location_ID);
 		return get (ctx, C_TaxCategory_ID, IsSOTrx,
 		  shipDate, shipFromC_Location_ID, shipToC_Location_ID,
-		  billDate, billFromC_Location_ID, billToC_Location_ID);
+		  billDate, billFromC_Location_ID, billToC_Location_ID, trxName);
 	}	//	getCharge
 
 
+	/**
+	 * 
+	 * @param ctx
+	 * @param M_Product_ID
+	 * @param billDate
+	 * @param shipDate
+	 * @param AD_Org_ID
+	 * @param M_Warehouse_ID
+	 * @param billC_BPartner_Location_ID
+	 * @param shipC_BPartner_Location_ID
+	 * @param IsSOTrx
+	 * @return
+	 * @deprecated
+	 */
+	public static int getProduct (Properties ctx, int M_Product_ID,
+			Timestamp billDate, Timestamp shipDate,
+			int AD_Org_ID, int M_Warehouse_ID,
+			int billC_BPartner_Location_ID, int shipC_BPartner_Location_ID,
+			boolean IsSOTrx) {
+		return getProduct(ctx, M_Product_ID, billDate, shipDate, AD_Org_ID, M_Warehouse_ID, billC_BPartner_Location_ID, shipC_BPartner_Location_ID, IsSOTrx, null);
+	}
+
 	/**
 	 *	Get Tax ID - converts parameters to call Get Tax.
 	 *  
@@ -246,7 +315,7 @@ public class Tax
 		Timestamp billDate, Timestamp shipDate,
 		int AD_Org_ID, int M_Warehouse_ID,
 		int billC_BPartner_Location_ID, int shipC_BPartner_Location_ID,
-		boolean IsSOTrx)
+		boolean IsSOTrx, String trxName)
 	{
 		String variable = "";
 		int C_TaxCategory_ID = 0;
@@ -273,7 +342,7 @@ public class Tax
 				+ " AND o.AD_Org_ID=?"
 				+ " AND il.C_BPartner_Location_ID=?"
 				+ " AND sl.C_BPartner_Location_ID=?";
-			pstmt = DB.prepareStatement(sql, null);
+			pstmt = DB.prepareStatement(sql, trxName);
 			pstmt.setInt(1, M_Warehouse_ID);
 			pstmt.setInt(2, M_Product_ID);
 			pstmt.setInt(3, AD_Org_ID);
@@ -298,7 +367,7 @@ public class Tax
 			if (found && "Y".equals(IsTaxExempt))
 			{
 				if (log.isLoggable(Level.FINE)) log.fine("getProduct - Business Partner is Tax exempt");
-				return getExemptTax(ctx, AD_Org_ID);
+				return getExemptTax(ctx, AD_Org_ID, trxName);
 			}
 			else if (found)
 			{
@@ -318,7 +387,7 @@ public class Tax
 					+ ", shipToC_Location_ID=" + shipToC_Location_ID);
 				return get(ctx, C_TaxCategory_ID, IsSOTrx,
 					shipDate, shipFromC_Location_ID, shipToC_Location_ID,
-					billDate, billFromC_Location_ID, billToC_Location_ID);
+					billDate, billFromC_Location_ID, billToC_Location_ID, trxName);
 			}
 
 			// ----------------------------------------------------------------
@@ -328,7 +397,7 @@ public class Tax
 		//	M_Product_ID				->	C_TaxCategory_ID
 			variable = "M_Product_ID";
 			sql = "SELECT C_TaxCategory_ID FROM M_Product WHERE M_Product_ID=?";
-			C_TaxCategory_ID = DB.getSQLValueEx(null, sql, M_Product_ID);
+			C_TaxCategory_ID = DB.getSQLValueEx(trxName, sql, M_Product_ID);
 			found = C_TaxCategory_ID != -1;
 			if (C_TaxCategory_ID <= 0)
 			{
@@ -339,7 +408,7 @@ public class Tax
 		//	AD_Org_ID					->	billFromC_Location_ID
 			variable = "AD_Org_ID";
 			sql = "SELECT C_Location_ID FROM AD_OrgInfo WHERE AD_Org_ID=?";
-			billFromC_Location_ID = DB.getSQLValueEx(null, sql, AD_Org_ID);
+			billFromC_Location_ID = DB.getSQLValueEx(trxName, sql, AD_Org_ID);
 			found = billFromC_Location_ID != -1;
 			if (billFromC_Location_ID <= 0)
 			{
@@ -352,7 +421,7 @@ public class Tax
 				+ " FROM C_BPartner_Location l"
 				+ " INNER JOIN C_BPartner b ON (l.C_BPartner_ID=b.C_BPartner_ID) "
 				+ " WHERE C_BPartner_Location_ID=?";
-			pstmt = DB.prepareStatement(sql, null);
+			pstmt = DB.prepareStatement(sql, trxName);
 			pstmt.setInt(1, billC_BPartner_Location_ID);
 			rs = pstmt.executeQuery();
 			found = false;
@@ -370,7 +439,7 @@ public class Tax
 				throw new TaxCriteriaNotFoundException(variable, billC_BPartner_Location_ID);
 			}
 			if ("Y".equals(IsTaxExempt))
-				return getExemptTax(ctx, AD_Org_ID);
+				return getExemptTax(ctx, AD_Org_ID, trxName);
 
 			//  Reverse for PO
 			if (!IsSOTrx)
@@ -389,7 +458,7 @@ public class Tax
 		//	M_Warehouse_ID				->	shipFromC_Location_ID
 			variable = "M_Warehouse_ID";
 			sql = "SELECT C_Location_ID FROM M_Warehouse WHERE M_Warehouse_ID=?";
-			shipFromC_Location_ID = DB.getSQLValueEx(null, sql, M_Warehouse_ID);
+			shipFromC_Location_ID = DB.getSQLValueEx(trxName, sql, M_Warehouse_ID);
 			found = shipFromC_Location_ID != -1;
 			if (shipFromC_Location_ID <= 0)
 			{
@@ -399,7 +468,7 @@ public class Tax
 		//	shipC_BPartner_Location_ID 	->	shipToC_Location_ID
 			variable = "C_BPartner_Location_ID";
 			sql = "SELECT C_Location_ID FROM C_BPartner_Location WHERE C_BPartner_Location_ID=?";
-			shipToC_Location_ID = DB.getSQLValueEx(null, sql, shipC_BPartner_Location_ID);
+			shipToC_Location_ID = DB.getSQLValueEx(trxName, sql, shipC_BPartner_Location_ID);
 			found = shipToC_Location_ID != -1;
 			if (shipToC_Location_ID <= 0)
 			{
@@ -428,24 +497,25 @@ public class Tax
 
 		return get (ctx, C_TaxCategory_ID, IsSOTrx,
 			shipDate, shipFromC_Location_ID, shipToC_Location_ID,
-			billDate, billFromC_Location_ID, billToC_Location_ID);
+			billDate, billFromC_Location_ID, billToC_Location_ID, trxName);
 	}	//	getProduct
 
 	/**
 	 * Get Exempt Tax Code
 	 * @param ctx context
 	 * @param AD_Org_ID org to find client
+	 * @param trxName	Transaction
 	 * @return C_Tax_ID
 	 * @throws TaxNoExemptFoundException if no tax exempt found
 	 */
-	private static int getExemptTax (Properties ctx, int AD_Org_ID)
+	private static int getExemptTax (Properties ctx, int AD_Org_ID, String trxName)
 	{
 		final String sql = "SELECT t.C_Tax_ID "
 			+ "FROM C_Tax t"
 			+ " INNER JOIN AD_Org o ON (t.AD_Client_ID=o.AD_Client_ID) "
 			+ "WHERE t.IsTaxExempt='Y' AND o.AD_Org_ID=? "
 			+ "ORDER BY t.Rate DESC";
-		int C_Tax_ID = DB.getSQLValueEx(null, sql, AD_Org_ID);
+		int C_Tax_ID = DB.getSQLValueEx(trxName, sql, AD_Org_ID);
 		if (log.isLoggable(Level.FINE)) log.fine("getExemptTax - TaxExempt=Y - C_Tax_ID=" + C_Tax_ID);
 		if (C_Tax_ID <= 0)
 		{
@@ -469,13 +539,14 @@ public class Tax
 	 *	@param billDate invoice date
 	 *	@param billFromC_Location_ID invoice from
 	 *	@param billToC_Location_ID invoice to
+	 *  @param trxName	Transaction
 	 *	@return C_Tax_ID
 	 *  @throws TaxNotFoundException if no tax found for given criteria
 	 */
 	protected static int get (Properties ctx,
 		int C_TaxCategory_ID, boolean IsSOTrx,
 		Timestamp shipDate, int shipFromC_Location_ID, int shipToC_Location_ID,
-		Timestamp billDate, int billFromC_Location_ID, int billToC_Location_ID)
+		Timestamp billDate, int billFromC_Location_ID, int billToC_Location_ID, String trxName)
 	{
 		//	C_TaxCategory contains CommodityCode
 		
@@ -490,8 +561,8 @@ public class Tax
 		}
 
 		MTax[] taxes = MTax.getAll (ctx);
-		MLocation lFrom = new MLocation (ctx, billFromC_Location_ID, null); 
-		MLocation lTo = new MLocation (ctx, billToC_Location_ID, null); 
+		MLocation lFrom = new MLocation (ctx, billFromC_Location_ID, trxName); 
+		MLocation lTo = new MLocation (ctx, billToC_Location_ID, trxName); 
 		if (log.isLoggable(Level.FINER)){
 			log.finer("From=" + lFrom);
 			log.finer("To=" + lTo);

From 574243be6308f2be60b450b4643fca2c8f264d5b Mon Sep 17 00:00:00 2001
From: Carlos Ruiz 
Date: Sat, 15 Feb 2014 11:17:05 -0500
Subject: [PATCH 5/6] IDEMPIERE-1398 Tax lookups not transaction aware / minor
 - remove warnings on Callouts

---
 .../src/org/adempiere/model/CalloutRMA.java                   | 4 ++--
 .../src/org/compiere/model/CalloutInvoice.java                | 2 +-
 .../src/org/compiere/model/CalloutInvoiceBatch.java           | 2 +-
 .../src/org/compiere/model/CalloutOrder.java                  | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/org.adempiere.base.callout/src/org/adempiere/model/CalloutRMA.java b/org.adempiere.base.callout/src/org/adempiere/model/CalloutRMA.java
index 504ab6e170..586fb5f66d 100644
--- a/org.adempiere.base.callout/src/org/adempiere/model/CalloutRMA.java
+++ b/org.adempiere.base.callout/src/org/adempiere/model/CalloutRMA.java
@@ -153,7 +153,7 @@ public class CalloutRMA extends CalloutEngine {
 					invoice.getDateInvoiced(), invoice.getDateInvoiced(),
 					AD_Org_ID, rma.getShipment().getM_Warehouse_ID(), 
 					invoice.getC_BPartner_Location_ID(), // should be bill to
-					invoice.getC_BPartner_Location_ID(), rma.isSOTrx());
+					invoice.getC_BPartner_Location_ID(), rma.isSOTrx(), null);
 		} 
 		else 
 		{
@@ -168,7 +168,7 @@ public class CalloutRMA extends CalloutEngine {
 						order.getDateOrdered(), order.getDateOrdered(),
 						AD_Org_ID, order.getM_Warehouse_ID(), 
 						order.getC_BPartner_Location_ID(), // should be bill to
-						order.getC_BPartner_Location_ID(), rma.isSOTrx());
+						order.getC_BPartner_Location_ID(), rma.isSOTrx(), null);
 			} 
 			else
 				return "No Invoice/Order found the Shipment/Receipt associated";
diff --git a/org.adempiere.base.callout/src/org/compiere/model/CalloutInvoice.java b/org.adempiere.base.callout/src/org/compiere/model/CalloutInvoice.java
index b3e36dc703..771bb308fd 100644
--- a/org.adempiere.base.callout/src/org/compiere/model/CalloutInvoice.java
+++ b/org.adempiere.base.callout/src/org/compiere/model/CalloutInvoice.java
@@ -477,7 +477,7 @@ public class CalloutInvoice extends CalloutEngine
 		//
 		int C_Tax_ID = Tax.get(ctx, M_Product_ID, C_Charge_ID, billDate, shipDate,
 			AD_Org_ID, M_Warehouse_ID, billC_BPartner_Location_ID, shipC_BPartner_Location_ID,
-			Env.getContext(ctx, WindowNo, "IsSOTrx").equals("Y"));
+			Env.getContext(ctx, WindowNo, "IsSOTrx").equals("Y"), null);
 		if (log.isLoggable(Level.INFO)) log.info("Tax ID=" + C_Tax_ID);
 		//
 		if (C_Tax_ID == 0)
diff --git a/org.adempiere.base.callout/src/org/compiere/model/CalloutInvoiceBatch.java b/org.adempiere.base.callout/src/org/compiere/model/CalloutInvoiceBatch.java
index 03c23608da..3def446db6 100644
--- a/org.adempiere.base.callout/src/org/compiere/model/CalloutInvoiceBatch.java
+++ b/org.adempiere.base.callout/src/org/compiere/model/CalloutInvoiceBatch.java
@@ -323,7 +323,7 @@ public class CalloutInvoiceBatch extends CalloutEngine
 		//
 		int C_Tax_ID = Tax.get(ctx, 0, C_Charge_ID, billDate, shipDate,
 			AD_Org_ID, M_Warehouse_ID, C_BPartner_Location_ID, C_BPartner_Location_ID,
-			Env.getContext(ctx, WindowNo, "IsSOTrx").equals("Y"));
+			Env.getContext(ctx, WindowNo, "IsSOTrx").equals("Y"), null);
 		if (log.isLoggable(Level.INFO)) log.info("Tax ID=" + C_Tax_ID);
 		//
 		if (C_Tax_ID == 0)
diff --git a/org.adempiere.base.callout/src/org/compiere/model/CalloutOrder.java b/org.adempiere.base.callout/src/org/compiere/model/CalloutOrder.java
index 09331f172a..a8aef526ce 100644
--- a/org.adempiere.base.callout/src/org/compiere/model/CalloutOrder.java
+++ b/org.adempiere.base.callout/src/org/compiere/model/CalloutOrder.java
@@ -1002,7 +1002,7 @@ public class CalloutOrder extends CalloutEngine
 		//
 		int C_Tax_ID = Tax.get (ctx, M_Product_ID, C_Charge_ID, billDate, shipDate,
 			AD_Org_ID, M_Warehouse_ID, billC_BPartner_Location_ID, shipC_BPartner_Location_ID,
-			"Y".equals(Env.getContext(ctx, WindowNo, "IsSOTrx")));
+			"Y".equals(Env.getContext(ctx, WindowNo, "IsSOTrx")), null);
 		if (log.isLoggable(Level.INFO)) log.info("Tax ID=" + C_Tax_ID);
 		//
 		if (C_Tax_ID == 0)

From 128ee5cbab102c9015ffdc3402686e5ec8f89e3c Mon Sep 17 00:00:00 2001
From: Carlos Ruiz 
Date: Sat, 15 Feb 2014 11:38:52 -0500
Subject: [PATCH 6/6] IDEMPIERE-1755 when copy a user some field should reset

---
 .../oracle/201402151138_IDEMPIERE-1755.sql    | 55 +++++++++++++++++++
 .../201402151138_IDEMPIERE-1755.sql           | 52 ++++++++++++++++++
 2 files changed, 107 insertions(+)
 create mode 100644 migration/i2.0/oracle/201402151138_IDEMPIERE-1755.sql
 create mode 100644 migration/i2.0/postgresql/201402151138_IDEMPIERE-1755.sql

diff --git a/migration/i2.0/oracle/201402151138_IDEMPIERE-1755.sql b/migration/i2.0/oracle/201402151138_IDEMPIERE-1755.sql
new file mode 100644
index 0000000000..2a5aa602a7
--- /dev/null
+++ b/migration/i2.0/oracle/201402151138_IDEMPIERE-1755.sql
@@ -0,0 +1,55 @@
+SET SQLBLANKLINES ON
+SET DEFINE OFF
+
+-- Feb 15, 2014 11:34:30 AM COT
+-- IDEMPIERE-1755 when copy a user some field should reset
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:34:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200458
+;
+
+-- Feb 15, 2014 11:35:12 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:35:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200405
+;
+
+-- Feb 15, 2014 11:35:19 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:35:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200408
+;
+
+-- Feb 15, 2014 11:35:23 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:35:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200407
+;
+
+-- Feb 15, 2014 11:35:46 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:35:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200406
+;
+
+-- Feb 15, 2014 11:35:55 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:35:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200456
+;
+
+-- Feb 15, 2014 11:36:03 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:36:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200404
+;
+
+-- Feb 15, 2014 11:36:14 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:36:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200409
+;
+
+-- Feb 15, 2014 11:36:31 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:36:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=417
+;
+
+-- Feb 15, 2014 11:36:38 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:36:38','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=61756
+;
+
+-- Feb 15, 2014 11:36:43 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:36:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200457
+;
+
+-- Feb 15, 2014 11:36:51 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2014-02-15 11:36:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=52066
+;
+
+SELECT register_migration_script('201402151138_IDEMPIERE-1755.sql') FROM dual
+;
+
diff --git a/migration/i2.0/postgresql/201402151138_IDEMPIERE-1755.sql b/migration/i2.0/postgresql/201402151138_IDEMPIERE-1755.sql
new file mode 100644
index 0000000000..b0d4cfebb8
--- /dev/null
+++ b/migration/i2.0/postgresql/201402151138_IDEMPIERE-1755.sql
@@ -0,0 +1,52 @@
+-- Feb 15, 2014 11:34:30 AM COT
+-- IDEMPIERE-1755 when copy a user some field should reset
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:34:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200458
+;
+
+-- Feb 15, 2014 11:35:12 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:35:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200405
+;
+
+-- Feb 15, 2014 11:35:19 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:35:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200408
+;
+
+-- Feb 15, 2014 11:35:23 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:35:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200407
+;
+
+-- Feb 15, 2014 11:35:46 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:35:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200406
+;
+
+-- Feb 15, 2014 11:35:55 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:35:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200456
+;
+
+-- Feb 15, 2014 11:36:03 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:36:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200404
+;
+
+-- Feb 15, 2014 11:36:14 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:36:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200409
+;
+
+-- Feb 15, 2014 11:36:31 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:36:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=417
+;
+
+-- Feb 15, 2014 11:36:38 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:36:38','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=61756
+;
+
+-- Feb 15, 2014 11:36:43 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:36:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200457
+;
+
+-- Feb 15, 2014 11:36:51 AM COT
+UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2014-02-15 11:36:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=52066
+;
+
+SELECT register_migration_script('201402151138_IDEMPIERE-1755.sql') FROM dual
+;
+