Openbravo Issue Tracking System - Openbravo ERP
View Issue Details
0007528Openbravo ERP03. Procurement managementpublic2009-02-12 13:452009-03-18 11:02
networkb 
AinhoaPagola 
immediatemajoralways
closedfixed 
5
2.40 
2.50beta 
Core
No
0007528: Requisition to Order process fails if product price is 0
If a requisition is created, and contains a line within a price 0, Requisition to Order process fails. This is the log showed:

SELECT M_REQUISITIONLINE.M_PRODUCT_ID, M_ATTRIBUTESETINSTANCE_ID, LOCKQTY, SUPPLIERNOTES AS DESCRIPTION, C_UOM_ID, M_REQUISITIONLINE_ID, '' AS C_ORDERLINE_ID, COALESCE(M_PRODUCTPRICE.PRICELIST, M_REQUISITIONLINE.PRICELIST, LOCKPRICE) AS PRICELIST, COALESCE(M_PRODUCTPRICE.PRICELIMIT, LOCKPRICE) AS PRICELIMIT, COALESCE(M_PRODUCTPRICE.PRICESTD, LOCKPRICE) AS PRICESTD, ROUND(COALESCE(LOCKPRICE, M_PRODUCTPRICE.PRICESTD),(SELECT PRICEPRECISION FROM C_CURRENCY WHERE C_CURRENCY_ID = to_number(?))) AS PRICEACTUAL, ROUND((COALESCE(M_PRODUCTPRICE.PRICELIST, M_REQUISITIONLINE.PRICELIST, LOCKPRICE) - COALESCE(LOCKPRICE, M_PRODUCTPRICE.PRICESTD))/ COALESCE(M_PRODUCTPRICE.PRICELIST, M_REQUISITIONLINE.PRICELIST, LOCKPRICE)*100, (SELECT STDPRECISION FROM C_CURRENCY WHERE C_CURRENCY_ID = ?)) AS DISCOUNT, C_GetTax(M_REQUISITIONLINE.M_PRODUCT_ID, to_date(?), to_number(?), to_number(?), to_number(?), to_number(?), null, 'N') AS TAX, CASE WHEN LOCKQTY < (M_REQUISITIONLINE.QTY - M_REQUISITIONLINE.ORDEREDQTY) THEN 'N' ELSE 'Y' END AS TO_CLOSE FROM M_REQUISITIONLINE LEFT JOIN M_PRODUCTPRICE ON M_REQUISITIONLINE.M_PRODUCT_ID = M_PRODUCTPRICE.M_PRODUCT_ID AND M_PRODUCTPRICE.M_PRICELIST_VERSION_ID = to_number(?) WHERE 1=1 AND M_RequisitionLine_ID IN('1000000') ORDER BY M_REQUISITIONLINE.M_PRODUCT_ID, M_ATTRIBUTESETINSTANCE_ID, SUPPLIERNOTES, ROUND(COALESCE(LOCKPRICE, M_PRODUCTPRICE.PRICESTD),(SELECT PRICEPRECISION FROM C_CURRENCY WHERE C_CURRENCY_ID = to_number(?)))Exception:java.sql.SQLException: ORA-01476: el divisor es igual a cero
Create a requisiton
Add a line with a product, and price 0.
Go to Requisition to Order process.
Select this requisition and process it.

Application shows a message like "Process run error".
commsup_sprint6
depends on backport 0007536 closed AinhoaPagola Requisition to Order process fails if product price is 0 
Issue History
2009-02-12 13:45networkbNew Issue
2009-02-12 13:45networkbAssigned To => rafaroda
2009-02-12 13:45networkbRegression testing => No
2009-02-12 15:59gorkaionStatusnew => scheduled
2009-02-12 15:59gorkaionNote Added: 0013418
2009-02-12 15:59gorkaionfix_in_branch => trunk
2009-02-12 16:00gorkaionStatusscheduled => acknowledged
2009-02-12 16:01gorkaionStatusacknowledged => scheduled
2009-02-12 16:01gorkaionAssigned Torafaroda => AinhoaPagola
2009-02-13 10:19svnbotCheckin
2009-02-13 10:19svnbotNote Added: 0013450
2009-02-13 10:19svnbotStatusscheduled => resolved
2009-02-13 10:19svnbotResolutionopen => fixed
2009-02-13 10:19svnbotsvn_revision => 13134
2009-02-13 10:43AinhoaPagolaTag Attached: commsup_sprint6
2009-02-20 10:13sureshbabuStatusresolved => closed
2009-02-20 10:13sureshbabuFixed in Version => trunk
2009-03-18 11:02anonymoussf_bug_id0 => 2691386

Notes
(0013418)
gorkaion   
2009-02-12 15:59   
The SQL clause to calculate the discount is wrong.

ROUND((COALESCE(M_PRODUCTPRICE.PRICELIST, M_REQUISITIONLINE.PRICELIST, LOCKPRICE) - COALESCE(LOCKPRICE, M_PRODUCTPRICE.PRICESTD))/ COALESCE(M_PRODUCTPRICE.PRICELIST, M_REQUISITIONLINE.PRICELIST, LOCKPRICE)*100, (SELECT STDPRECISION FROM C_CURRENCY WHERE C_CURRENCY_ID = ?)) AS DISCOUNT

It is needed to include a CASE WHEN clause to set the discount to zero when the prices is 0

CASE WHEN COALESCE(M_PRODUCTPRICE.PRICELIST, M_REQUISITIONLINE.PRICELIST, LOCKPRICE) = 0 THEN 0 ELSE ..... END
(0013450)
svnbot   
2009-02-13 10:19   
Repository: openbravo
Revision: 13134
Author: AinhoaPagola
Date: 2009-02-13 10:19:35 +0100 (Fri, 13 Feb 2009)

Fixes bug 0007528 Requisition to order fixed for product price 0

---
U trunk/src/org/openbravo/erpCommon/ad_forms/RequisitionToOrder_data.xsql
---

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