hg merge release-2.0 (merge release2 into development)

This commit is contained in:
Carlos Ruiz 2014-01-24 16:57:56 -05:00
commit 75a83242d1
12 changed files with 94 additions and 40 deletions

View File

@ -0,0 +1,11 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- Jan 16, 2014 11:33:27 AM ICT
-- IDEMPIERE-1693 In InfoProductWindow, tab "Available to Promise" can change by change level of log. Should make a checkbox for it.
INSERT INTO AD_Message (MsgType,MsgText,MsgTip,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,Created,AD_Client_ID,AD_Org_ID) VALUES ('I','Show detail','Show detail locator info in "Available to promise" tab',200252,'D','693d3147-e09b-4e69-9ada-23ff6c1289fc','showDetailAtp','Y',TO_DATE('2014-01-16 11:33:27','YYYY-MM-DD HH24:MI:SS'),100,100,TO_DATE('2014-01-16 11:33:27','YYYY-MM-DD HH24:MI:SS'),0,0)
;
SELECT register_migration_script('201401161604_IDEMPIERE-1693.sql') FROM dual
;

View File

@ -0,0 +1,10 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- Jan 23, 2014 12:54:26 PM SGT
-- 1003322 2Pack enhancement for Extension Development
UPDATE AD_Field SET IsActive='N',Updated=TO_DATE('2014-01-23 12:54:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50152
;
SELECT register_migration_script('201401231413_1003322.sql') FROM dual
;

View File

@ -0,0 +1,8 @@
-- Jan 16, 2014 11:33:27 AM ICT
-- IDEMPIERE-1693 In InfoProductWindow, tab "Available to Promise" can change by change level of log. Should make a checkbox for it.
INSERT INTO AD_Message (MsgType,MsgText,MsgTip,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,Created,AD_Client_ID,AD_Org_ID) VALUES ('I','Show detail','Show detail locator info in "Available to promise" tab',200252,'D','693d3147-e09b-4e69-9ada-23ff6c1289fc','showDetailAtp','Y',TO_TIMESTAMP('2014-01-16 11:33:27','YYYY-MM-DD HH24:MI:SS'),100,100,TO_TIMESTAMP('2014-01-16 11:33:27','YYYY-MM-DD HH24:MI:SS'),0,0)
;
SELECT register_migration_script('201401161604_IDEMPIERE-1693.sql') FROM dual
;

View File

@ -0,0 +1,7 @@
-- Jan 23, 2014 12:54:26 PM SGT
-- 1003322 2Pack enhancement for Extension Development
UPDATE AD_Field SET IsActive='N',Updated=TO_TIMESTAMP('2014-01-23 12:54:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50152
;
SELECT register_migration_script('201401231413_1003322.sql') FROM dual
;

View File

@ -90,7 +90,7 @@ public class M_PriceList_Create extends SvrProcess {
protected String doIt() throws Exception { protected String doIt() throws Exception {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
StringBuilder sqlupd = new StringBuilder(); StringBuilder sqlupd = new StringBuilder();
StringBuilder sqldel = new StringBuilder(); String sqldel;
StringBuilder sqlins = new StringBuilder(); StringBuilder sqlins = new StringBuilder();
int cntu = 0; int cntu = 0;
int cntd = 0; int cntd = 0;
@ -233,12 +233,10 @@ public class M_PriceList_Create extends SvrProcess {
// Delete Old Data // Delete Old Data
// //
if (p_DeleteOld.equals("Y")) { if (p_DeleteOld.equals("Y")) {
sqldel.append("DELETE M_ProductPrice ") sqldel = "DELETE M_ProductPrice WHERE M_PriceList_Version_ID=?";
.append(" WHERE M_PriceList_Version_ID = ") cntd = DB.executeUpdate(sqldel, p_PriceList_Version_ID, get_TrxName());
.append(p_PriceList_Version_ID);
cntd = DB.executeUpdate(sqldel.toString(), get_TrxName());
if (cntd == -1) if (cntd == -1)
raiseError(" DELETE M_ProductPrice ", sqldel.toString()); raiseError(" DELETE M_ProductPrice ", sqldel);
totd += cntd; totd += cntd;
message = new StringBuilder("@Deleted@=").append(cntd).append(" - "); message = new StringBuilder("@Deleted@=").append(cntd).append(" - ");
if (log.isLoggable(Level.FINE)) log.fine("Deleted " + cntd); if (log.isLoggable(Level.FINE)) log.fine("Deleted " + cntd);
@ -287,12 +285,10 @@ public class M_PriceList_Create extends SvrProcess {
// //
//Clear Temporary Table //Clear Temporary Table
// //
sqldel = new StringBuilder("DELETE FROM T_Selection WHERE AD_PInstance_ID="); sqldel = "DELETE FROM T_Selection WHERE AD_PInstance_ID=?";
sqldel.append(m_AD_PInstance_ID); cntd = DB.executeUpdate(sqldel, m_AD_PInstance_ID, get_TrxName());
cntd = DB.executeUpdate(sqldel.toString(), get_TrxName());
if (cntd == -1) if (cntd == -1)
raiseError(" DELETE T_Selection ", sqldel.toString()); raiseError(" DELETE T_Selection ", sqldel);
totd += cntd; totd += cntd;
if (log.isLoggable(Level.FINE)) log.fine("Deleted " + cntd); if (log.isLoggable(Level.FINE)) log.fine("Deleted " + cntd);
// //
@ -404,15 +400,10 @@ public class M_PriceList_Create extends SvrProcess {
v_temp = rsCurgen.getInt("M_PriceList_Version_Base_ID"); v_temp = rsCurgen.getInt("M_PriceList_Version_Base_ID");
if (rsCurgen.wasNull() || v_temp != p_PriceList_Version_ID) { if (rsCurgen.wasNull() || v_temp != p_PriceList_Version_ID) {
sqldel = new StringBuilder("DELETE M_ProductPrice pp"); sqldel = "DELETE M_ProductPrice pp WHERE pp.M_PriceList_Version_ID=? AND EXISTS (SELECT t_selection_id FROM T_Selection s WHERE pp.M_Product_ID=s.T_Selection_ID AND s.AD_PInstance_ID=?)";
sqldel.append(" WHERE pp.M_PriceList_Version_ID = "); cntd = DB.executeUpdate(sqldel, new Object[]{p_PriceList_Version_ID, m_AD_PInstance_ID}, false, get_TrxName());
sqldel.append(p_PriceList_Version_ID);
sqldel.append(" AND EXISTS (SELECT t_selection_id FROM T_Selection s WHERE pp.M_Product_ID=s.T_Selection_ID");
sqldel.append(" AND s.AD_PInstance_ID=").append(m_AD_PInstance_ID).append(")");
cntd = DB.executeUpdate(sqldel.toString(), get_TrxName());
if (cntd == -1) if (cntd == -1)
raiseError(" DELETE M_ProductPrice ", sqldel.toString()); raiseError(" DELETE M_ProductPrice ", sqldel);
totd += cntd; totd += cntd;
message.append(", @Deleted@=").append(cntd); message.append(", @Deleted@=").append(cntd);
if (log.isLoggable(Level.FINE)) log.fine("Deleted " + cntd); if (log.isLoggable(Level.FINE)) log.fine("Deleted " + cntd);
@ -831,10 +822,10 @@ public class M_PriceList_Create extends SvrProcess {
// //
// Delete Temporary Selection // Delete Temporary Selection
// //
sqldel = new StringBuilder("DELETE FROM T_Selection "); sqldel = "DELETE FROM T_Selection WHERE AD_PInstance_ID=?";
cntd = DB.executeUpdate(sqldel.toString(), get_TrxName()); cntd = DB.executeUpdate(sqldel, m_AD_PInstance_ID, get_TrxName());
if (cntd == -1) if (cntd == -1)
raiseError(" DELETE T_Selection ", sqldel.toString()); raiseError(" DELETE T_Selection ", sqldel);
totd += cntd; totd += cntd;
if (log.isLoggable(Level.FINE)) log.fine("Deleted " + cntd); if (log.isLoggable(Level.FINE)) log.fine("Deleted " + cntd);

View File

@ -115,7 +115,9 @@ public class StatementProxy implements InvocationHandler {
logOperation = "Delete"; logOperation = "Delete";
} }
if (logOperation != null) { if (logOperation != null) {
logSql = logSql.substring(0, logSql.indexOf(' ')); int idxspace = logSql.indexOf(' ');
if (idxspace > 0)
logSql = logSql.substring(0, logSql.indexOf(' '));
if (log.isLoggable(Level.FINE)) log.fine((DisplayType.getDateFormat(DisplayType.DateTime)).format(new Date(System.currentTimeMillis()))+","+logOperation+","+logSql+","+(p_vo.getTrxName() != null ? p_vo.getTrxName() : "")+" (begin)"); if (log.isLoggable(Level.FINE)) log.fine((DisplayType.getDateFormat(DisplayType.DateTime)).format(new Date(System.currentTimeMillis()))+","+logOperation+","+logSql+","+(p_vo.getTrxName() != null ? p_vo.getTrxName() : "")+" (begin)");
} }
} }

View File

@ -867,7 +867,7 @@ public class MInvoiceLine extends X_C_InvoiceLine
enforce = false; enforce = false;
// Check Price Limit? // Check Price Limit?
if (enforce && getPriceLimit() != Env.ZERO if (enforce && getPriceLimit() != Env.ZERO
&& getPriceEntered().compareTo(getPriceLimit()) < 0) && getPriceActual().compareTo(getPriceLimit()) < 0)
{ {
log.saveError("UnderLimitPrice", "PriceEntered=" + getPriceEntered() + ", PriceLimit=" + getPriceLimit()); log.saveError("UnderLimitPrice", "PriceEntered=" + getPriceEntered() + ", PriceLimit=" + getPriceLimit());
return false; return false;

View File

@ -877,7 +877,7 @@ public class MOrderLine extends X_C_OrderLine
enforce = false; enforce = false;
// Check Price Limit? // Check Price Limit?
if (enforce && getPriceLimit() != Env.ZERO if (enforce && getPriceLimit() != Env.ZERO
&& getPriceEntered().compareTo(getPriceLimit()) < 0) && getPriceActual().compareTo(getPriceLimit()) < 0)
{ {
log.saveError("UnderLimitPrice", "PriceEntered=" + getPriceEntered() + ", PriceLimit=" + getPriceLimit()); log.saveError("UnderLimitPrice", "PriceEntered=" + getPriceEntered() + ", PriceLimit=" + getPriceLimit());
return false; return false;

View File

@ -138,6 +138,7 @@ public class DataEngine
*/ */
public PrintData getPrintData (Properties ctx, MPrintFormat format, MQuery query, boolean summary) public PrintData getPrintData (Properties ctx, MPrintFormat format, MQuery query, boolean summary)
{ {
MQuery queryCopy = query.deepCopy();
/** Report Summary FR [ 2011569 ]**/ /** Report Summary FR [ 2011569 ]**/
m_summary = summary; m_summary = summary;
@ -171,7 +172,7 @@ public class DataEngine
// Add WhereClause restriction from AD_ReportView - teo_sarca BF [ 1761891 ] // Add WhereClause restriction from AD_ReportView - teo_sarca BF [ 1761891 ]
String whereClause = rs.getString(4); String whereClause = rs.getString(4);
if (!Util.isEmpty(whereClause)) if (!Util.isEmpty(whereClause))
query.addRestriction(whereClause); queryCopy.addRestriction(whereClause);
} }
} }
catch (SQLException e) catch (SQLException e)
@ -200,11 +201,11 @@ public class DataEngine
if (hasVT) if (hasVT)
{ {
tableName += "t"; tableName += "t";
format.setTranslationViewQuery (query); format.setTranslationViewQuery (queryCopy);
} }
} }
// //
PrintData pd = getPrintDataInfo (ctx, format, query, reportName, tableName); PrintData pd = getPrintDataInfo (ctx, format, queryCopy, reportName, tableName);
if (pd == null) if (pd == null)
return null; return null;
loadPrintData(pd, format); loadPrintData(pd, format);

View File

@ -31,7 +31,7 @@ public class PoExporter {
try { try {
//default trim to false for print item label since trailing space is commonly use //default trim to false for print item label since trailing space is commonly use
//for formatting purpose //for formatting purpose
if (qName.equalsIgnoreCase("PrintName")) { if (qName.equalsIgnoreCase("PrintName") || qName.equalsIgnoreCase("UserLevel")) {
atts.addAttribute("", "", "trim", "CDATA", "false"); atts.addAttribute("", "", "trim", "CDATA", "false");
} }
transformerHandler.startElement("", "", qName, atts); transformerHandler.startElement("", "", qName, atts);

View File

@ -13,6 +13,7 @@ import java.util.logging.Level;
import org.adempiere.webui.component.Borderlayout; import org.adempiere.webui.component.Borderlayout;
import org.adempiere.webui.component.Button; import org.adempiere.webui.component.Button;
import org.adempiere.webui.component.Checkbox;
import org.adempiere.webui.component.ConfirmPanel; import org.adempiere.webui.component.ConfirmPanel;
import org.adempiere.webui.component.ListModelTable; import org.adempiere.webui.component.ListModelTable;
import org.adempiere.webui.component.ListboxFactory; import org.adempiere.webui.component.ListboxFactory;
@ -31,7 +32,6 @@ import org.adempiere.webui.session.SessionManager;
import org.compiere.minigrid.ColumnInfo; import org.compiere.minigrid.ColumnInfo;
import org.compiere.model.MDocType; import org.compiere.model.MDocType;
import org.compiere.model.MRole; import org.compiere.model.MRole;
import org.compiere.util.CLogMgt;
import org.compiere.util.DB; import org.compiere.util.DB;
import org.compiere.util.Env; import org.compiere.util.Env;
import org.compiere.util.Msg; import org.compiere.util.Msg;
@ -48,11 +48,10 @@ import org.zkoss.zul.South;
* *
*/ */
public class InfoProductWindow extends InfoWindow { public class InfoProductWindow extends InfoWindow {
/** /**
* *
*/ */
private static final long serialVersionUID = 4939032152860189380L; private static final long serialVersionUID = 4817648658129732541L;
private Tabbox tabbedPane; private Tabbox tabbedPane;
private WListbox warehouseTbl; private WListbox warehouseTbl;
@ -64,6 +63,9 @@ public class InfoProductWindow extends InfoWindow {
//Available to Promise Tab //Available to Promise Tab
private WListbox m_tableAtp; private WListbox m_tableAtp;
// Group atp by warehouse or non
private Checkbox chbShowDetailAtp;
//IDEMPIERE-337 //IDEMPIERE-337
private WListbox productpriceTbl; private WListbox productpriceTbl;
private String m_sqlProductprice; private String m_sqlProductprice;
@ -275,6 +277,21 @@ public class InfoProductWindow extends InfoWindow {
desktopTabPanel = new Tabpanel(); desktopTabPanel = new Tabpanel();
desktopTabPanel.setHeight("100%"); desktopTabPanel.setHeight("100%");
desktopTabPanel.appendChild(m_tableAtp); desktopTabPanel.appendChild(m_tableAtp);
// IDEMPIERE-1692
chbShowDetailAtp = new Checkbox();
chbShowDetailAtp.setLabel(Msg.getMsg(Env.getCtx(), "showDetailAtp", true));
chbShowDetailAtp.setTooltiptext(Msg.getMsg(Env.getCtx(), "showDetailAtp", false));
chbShowDetailAtp.addActionListener(new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
if (contentPanel.getLayout() != null) {
int M_Warehouse_ID = getSelectedWarehouseId();
int m_M_Product_ID = getSelectedRowKey();
initAtpTab(M_Warehouse_ID, m_M_Product_ID);
}
}
});
desktopTabPanel.appendChild(chbShowDetailAtp);
tabPanels.appendChild(desktopTabPanel); tabPanels.appendChild(desktopTabPanel);
tab = new Tab(Msg.translate(Env.getCtx(), "Price")); tab = new Tab(Msg.translate(Env.getCtx(), "Price"));
@ -631,7 +648,7 @@ public class InfoProductWindow extends InfoWindow {
columnNames.add(Msg.translate(Env.getCtx(), "M_Warehouse_ID")); columnNames.add(Msg.translate(Env.getCtx(), "M_Warehouse_ID"));
// Fill Storage Data // Fill Storage Data
boolean showDetail = CLogMgt.isLevelFine(); boolean showDetail = isShowDetailATP();
String sql = "SELECT s.QtyOnHand, s.QtyReserved, s.QtyOrdered," String sql = "SELECT s.QtyOnHand, s.QtyReserved, s.QtyOrdered,"
+ " productAttribute(s.M_AttributeSetInstance_ID), s.M_AttributeSetInstance_ID,"; + " productAttribute(s.M_AttributeSetInstance_ID), s.M_AttributeSetInstance_ID,";
if (!showDetail) if (!showDetail)
@ -777,6 +794,10 @@ public class InfoProductWindow extends InfoWindow {
m_tableAtp.autoSize(); m_tableAtp.autoSize();
} // initAtpTab } // initAtpTab
public boolean isShowDetailATP() {
return chbShowDetailAtp.isChecked();
}
@Override @Override
protected void showHistory() { protected void showHistory() {
log.info(""); log.info("");

View File

@ -34,9 +34,9 @@ import org.adempiere.webui.component.Tabpanels;
import org.adempiere.webui.component.Tabs; import org.adempiere.webui.component.Tabs;
import org.adempiere.webui.component.WListbox; import org.adempiere.webui.component.WListbox;
import org.adempiere.webui.component.Window; import org.adempiere.webui.component.Window;
import org.adempiere.webui.info.InfoProductWindow;
import org.compiere.model.MDocType; import org.compiere.model.MDocType;
import org.compiere.model.MPriceList; import org.compiere.model.MPriceList;
import org.compiere.util.CLogMgt;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import org.compiere.util.DB; import org.compiere.util.DB;
import org.compiere.util.Env; import org.compiere.util.Env;
@ -60,7 +60,9 @@ public class InvoiceHistory extends Window implements EventListener<Event>
/** /**
* *
*/ */
private static final long serialVersionUID = -7426909865199278220L; private static final long serialVersionUID = 8742214467478030802L;
boolean showDetailATP = false;
/** /**
* Show History * Show History
@ -94,6 +96,8 @@ public class InvoiceHistory extends Window implements EventListener<Event>
this.setSclass("popup-dialog"); this.setSclass("popup-dialog");
AEnv.showCenterWindow(parent, this); AEnv.showCenterWindow(parent, this);
if (parent instanceof InfoProductWindow)
showDetailATP = ((InfoProductWindow)parent).isShowDetailATP();
} // InvoiceHistory } // InvoiceHistory
private int m_C_BPartner_ID; private int m_C_BPartner_ID;
@ -598,10 +602,9 @@ public class InvoiceHistory extends Window implements EventListener<Event>
columnNames.add(Msg.translate(Env.getCtx(), "M_Warehouse_ID")); columnNames.add(Msg.translate(Env.getCtx(), "M_Warehouse_ID"));
// Fill Storage Data // Fill Storage Data
boolean showDetail = CLogMgt.isLevelFine();
String sql = "SELECT s.QtyOnHand, s.QtyReserved, s.QtyOrdered," String sql = "SELECT s.QtyOnHand, s.QtyReserved, s.QtyOrdered,"
+ " productAttribute(s.M_AttributeSetInstance_ID), s.M_AttributeSetInstance_ID,"; + " productAttribute(s.M_AttributeSetInstance_ID), s.M_AttributeSetInstance_ID,";
if (!showDetail) if (!showDetailATP)
sql = "SELECT SUM(s.QtyOnHand), SUM(s.QtyReserved), SUM(s.QtyOrdered)," sql = "SELECT SUM(s.QtyOnHand), SUM(s.QtyReserved), SUM(s.QtyOrdered),"
+ " productAttribute(s.M_AttributeSetInstance_ID), 0,"; + " productAttribute(s.M_AttributeSetInstance_ID), 0,";
sql += " w.Name, l.Value " sql += " w.Name, l.Value "
@ -614,7 +617,7 @@ public class InvoiceHistory extends Window implements EventListener<Event>
if (m_M_AttributeSetInstance_ID > 0) if (m_M_AttributeSetInstance_ID > 0)
sql += " AND s.M_AttributeSetInstance_ID=?"; sql += " AND s.M_AttributeSetInstance_ID=?";
sql += " AND (s.QtyOnHand<>0 OR s.QtyReserved<>0 OR s.QtyOrdered<>0)"; sql += " AND (s.QtyOnHand<>0 OR s.QtyReserved<>0 OR s.QtyOrdered<>0)";
if (!showDetail) if (!showDetailATP)
sql += " GROUP BY productAttribute(s.M_AttributeSetInstance_ID), w.Name, l.Value"; sql += " GROUP BY productAttribute(s.M_AttributeSetInstance_ID), w.Name, l.Value";
sql += " ORDER BY l.Value"; sql += " ORDER BY l.Value";
@ -643,7 +646,7 @@ public class InvoiceHistory extends Window implements EventListener<Event>
line.add(new Double(rs.getDouble(2))); // QtyReserved line.add(new Double(rs.getDouble(2))); // QtyReserved
line.add(rs.getString(7)); // Locator line.add(rs.getString(7)); // Locator
String asi = rs.getString(4); String asi = rs.getString(4);
if (showDetail && (asi == null || asi.length() == 0)) if (showDetailATP && (asi == null || asi.length() == 0))
asi = "{" + rs.getInt(5) + "}"; asi = "{" + rs.getInt(5) + "}";
line.add(asi); // ASI line.add(asi); // ASI
line.add(null); // DocumentNo line.add(null); // DocumentNo
@ -710,7 +713,7 @@ public class InvoiceHistory extends Window implements EventListener<Event>
line.add(qtyReserved); // QtyReserved line.add(qtyReserved); // QtyReserved
line.add(null); // Locator line.add(null); // Locator
String asi = rs.getString(3); String asi = rs.getString(3);
if (showDetail && (asi == null || asi.length() == 0)) if (showDetailATP && (asi == null || asi.length() == 0))
asi = "{" + rs.getInt(4) + "}"; asi = "{" + rs.getInt(4) + "}";
line.add(asi); // ASI line.add(asi); // ASI
line.add(rs.getString(7)); // DocumentNo line.add(rs.getString(7)); // DocumentNo