fixes IDEMPIERE-49 - Allow configure showing prices on Product Info per role
http://jira.idempiere.com/browse/IDEMPIERE-49
This commit is contained in:
parent
8af6b94378
commit
e7d7a019d5
|
@ -152,6 +152,7 @@ public class InfoProduct extends Info implements ActionListener, ChangeListener
|
||||||
|
|
||||||
/** Array of Column Info */
|
/** Array of Column Info */
|
||||||
private static Info_Column[] s_productLayout = null;
|
private static Info_Column[] s_productLayout = null;
|
||||||
|
private static int s_productLayoutRole = -1;
|
||||||
private static int INDEX_NAME = 0;
|
private static int INDEX_NAME = 0;
|
||||||
private static int INDEX_PATTRIBUTE = 0;
|
private static int INDEX_PATTRIBUTE = 0;
|
||||||
|
|
||||||
|
@ -506,7 +507,7 @@ public class InfoProduct extends Info implements ActionListener, ChangeListener
|
||||||
prepareTable(getProductLayout(),
|
prepareTable(getProductLayout(),
|
||||||
s_productFrom,
|
s_productFrom,
|
||||||
where.toString(),
|
where.toString(),
|
||||||
"QtyAvailable DESC, Margin DESC");
|
"QtyAvailable DESC");
|
||||||
p_table.setShowTotals(false);
|
p_table.setShowTotals(false);
|
||||||
//
|
//
|
||||||
pickWarehouse.addActionListener(this);
|
pickWarehouse.addActionListener(this);
|
||||||
|
@ -1050,18 +1051,20 @@ public class InfoProduct extends Info implements ActionListener, ChangeListener
|
||||||
*/
|
*/
|
||||||
protected Info_Column[] getProductLayout()
|
protected Info_Column[] getProductLayout()
|
||||||
{
|
{
|
||||||
if (s_productLayout != null)
|
if (s_productLayout != null && s_productLayoutRole == MRole.getDefault().getAD_Role_ID())
|
||||||
return s_productLayout;
|
return s_productLayout;
|
||||||
//
|
//
|
||||||
if (s_productLayout == null)
|
s_productLayout = null;
|
||||||
{
|
s_productLayoutRole = MRole.getDefault().getAD_Role_ID();
|
||||||
ArrayList<Info_Column> list = new ArrayList<Info_Column>();
|
ArrayList<Info_Column> list = new ArrayList<Info_Column>();
|
||||||
list.add(new Info_Column(" ", "p.M_Product_ID", IDColumn.class, !p_multiSelection));
|
list.add(new Info_Column(" ", "p.M_Product_ID", IDColumn.class, !p_multiSelection));
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Discontinued").substring(0, 1), "p.Discontinued", Boolean.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Discontinued").substring(0, 1), "p.Discontinued", Boolean.class));
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Value"), "p.Value", String.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Value"), "p.Value", String.class));
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Name"), "p.Name", String.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Name"), "p.Name", String.class));
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyAvailable"), "case when p.IsBOM='N' and (p.ProductType!='I' OR p.IsStocked='N') then to_number(get_Sysconfig('QTY_TO_SHOW_FOR_SERVICES', '99999', p.ad_client_id, 0), '99999999999') else bomQtyAvailable(p.M_Product_ID,?,0) end AS QtyAvailable", Double.class, true, true, null));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyAvailable"), "case when p.IsBOM='N' and (p.ProductType!='I' OR p.IsStocked='N') then to_number(get_Sysconfig('QTY_TO_SHOW_FOR_SERVICES', '99999', p.ad_client_id, 0), '99999999999') else bomQtyAvailable(p.M_Product_ID,?,0) end AS QtyAvailable", Double.class, true, true, null));
|
||||||
|
if (MRole.getDefault().isColumnAccess(251 /*M_ProductPrice*/, 3027/*PriceList*/, false))
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "PriceList"), "bomPriceList(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceList", BigDecimal.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "PriceList"), "bomPriceList(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceList", BigDecimal.class));
|
||||||
|
if (MRole.getDefault().isColumnAccess(251 /*M_ProductPrice*/, 3028/*PriceStd*/, false))
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "PriceStd"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceStd", BigDecimal.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "PriceStd"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceStd", BigDecimal.class));
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyOnHand"), "case when p.IsBOM='N' and (p.ProductType!='I' OR p.IsStocked='N') then to_number(get_Sysconfig('QTY_TO_SHOW_FOR_SERVICES', '99999', p.ad_client_id, 0), '99999999999') else bomQtyOnHand(p.M_Product_ID,?,0) end AS QtyOnHand", Double.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyOnHand"), "case when p.IsBOM='N' and (p.ProductType!='I' OR p.IsStocked='N') then to_number(get_Sysconfig('QTY_TO_SHOW_FOR_SERVICES', '99999', p.ad_client_id, 0), '99999999999') else bomQtyOnHand(p.M_Product_ID,?,0) end AS QtyOnHand", Double.class));
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyReserved"), "bomQtyReserved(p.M_Product_ID,?,0) AS QtyReserved", Double.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyReserved"), "bomQtyReserved(p.M_Product_ID,?,0) AS QtyReserved", Double.class));
|
||||||
|
@ -1071,15 +1074,17 @@ public class InfoProduct extends Info implements ActionListener, ChangeListener
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyUnconfirmed"), "(SELECT SUM(c.TargetQty) FROM M_InOutLineConfirm c INNER JOIN M_InOutLine il ON (c.M_InOutLine_ID=il.M_InOutLine_ID) INNER JOIN M_InOut i ON (il.M_InOut_ID=i.M_InOut_ID) WHERE c.Processed='N' AND i.M_Warehouse_ID=? AND il.M_Product_ID=p.M_Product_ID) AS QtyUnconfirmed", Double.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyUnconfirmed"), "(SELECT SUM(c.TargetQty) FROM M_InOutLineConfirm c INNER JOIN M_InOutLine il ON (c.M_InOutLine_ID=il.M_InOutLine_ID) INNER JOIN M_InOut i ON (il.M_InOut_ID=i.M_InOut_ID) WHERE c.Processed='N' AND i.M_Warehouse_ID=? AND il.M_Product_ID=p.M_Product_ID) AS QtyUnconfirmed", Double.class));
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyUnconfirmedMove"), "(SELECT SUM(c.TargetQty) FROM M_MovementLineConfirm c INNER JOIN M_MovementLine ml ON (c.M_MovementLine_ID=ml.M_MovementLine_ID) INNER JOIN M_Locator l ON (ml.M_LocatorTo_ID=l.M_Locator_ID) WHERE c.Processed='N' AND l.M_Warehouse_ID=? AND ml.M_Product_ID=p.M_Product_ID) AS QtyUnconfirmedMove", Double.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyUnconfirmedMove"), "(SELECT SUM(c.TargetQty) FROM M_MovementLineConfirm c INNER JOIN M_MovementLine ml ON (c.M_MovementLine_ID=ml.M_MovementLine_ID) INNER JOIN M_Locator l ON (ml.M_LocatorTo_ID=l.M_Locator_ID) WHERE c.Processed='N' AND l.M_Warehouse_ID=? AND ml.M_Product_ID=p.M_Product_ID) AS QtyUnconfirmedMove", Double.class));
|
||||||
}
|
}
|
||||||
|
if (MRole.getDefault().isColumnAccess(251 /*M_ProductPrice*/, 3028/*PriceStd*/, false) && MRole.getDefault().isColumnAccess(251 /*M_ProductPrice*/, 3029/*PriceLimit*/, false))
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Margin"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID)-bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS Margin", BigDecimal.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Margin"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID)-bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS Margin", BigDecimal.class));
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Vendor"), "bp.Name", String.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Vendor"), "bp.Name", String.class));
|
||||||
|
if (MRole.getDefault().isColumnAccess(251 /*M_ProductPrice*/, 3029/*PriceLimit*/, false))
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "PriceLimit"), "bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceLimit", BigDecimal.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "PriceLimit"), "bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceLimit", BigDecimal.class));
|
||||||
list.add(new Info_Column(Msg.translate(Env.getCtx(), "IsInstanceAttribute"), "pa.IsInstanceAttribute", Boolean.class));
|
list.add(new Info_Column(Msg.translate(Env.getCtx(), "IsInstanceAttribute"), "pa.IsInstanceAttribute", Boolean.class));
|
||||||
s_productLayout = new Info_Column[list.size()];
|
s_productLayout = new Info_Column[list.size()];
|
||||||
list.toArray(s_productLayout);
|
list.toArray(s_productLayout);
|
||||||
INDEX_NAME = 3;
|
INDEX_NAME = 3;
|
||||||
INDEX_PATTRIBUTE = s_productLayout.length - 1; // last item
|
INDEX_PATTRIBUTE = s_productLayout.length - 1; // last item
|
||||||
}
|
|
||||||
return s_productLayout;
|
return s_productLayout;
|
||||||
} // getProductLayout
|
} // getProductLayout
|
||||||
|
|
||||||
|
|
|
@ -64,9 +64,7 @@ import org.adempiere.webui.component.WListbox;
|
||||||
import org.adempiere.webui.session.SessionManager;
|
import org.adempiere.webui.session.SessionManager;
|
||||||
import org.compiere.minigrid.ColumnInfo;
|
import org.compiere.minigrid.ColumnInfo;
|
||||||
import org.compiere.minigrid.IDColumn;
|
import org.compiere.minigrid.IDColumn;
|
||||||
import org.compiere.model.MClient;
|
|
||||||
import org.compiere.model.MDocType;
|
import org.compiere.model.MDocType;
|
||||||
import org.compiere.model.MImage;
|
|
||||||
import org.compiere.model.MQuery;
|
import org.compiere.model.MQuery;
|
||||||
import org.compiere.model.MRole;
|
import org.compiere.model.MRole;
|
||||||
import org.compiere.util.CLogMgt;
|
import org.compiere.util.CLogMgt;
|
||||||
|
@ -150,6 +148,7 @@ public class InfoProductPanel extends InfoPanel implements EventListener
|
||||||
|
|
||||||
/** Array of Column Info */
|
/** Array of Column Info */
|
||||||
private static ColumnInfo[] s_productLayout = null;
|
private static ColumnInfo[] s_productLayout = null;
|
||||||
|
private static int s_productLayoutRole = -1;
|
||||||
private static int INDEX_NAME = 0;
|
private static int INDEX_NAME = 0;
|
||||||
private static int INDEX_PATTRIBUTE = 0;
|
private static int INDEX_PATTRIBUTE = 0;
|
||||||
|
|
||||||
|
@ -629,7 +628,7 @@ public class InfoProductPanel extends InfoPanel implements EventListener
|
||||||
prepareTable(getProductLayout(),
|
prepareTable(getProductLayout(),
|
||||||
s_productFrom,
|
s_productFrom,
|
||||||
where.toString(),
|
where.toString(),
|
||||||
"QtyAvailable DESC, Margin DESC");
|
"QtyAvailable DESC");
|
||||||
|
|
||||||
//
|
//
|
||||||
pickWarehouse.addEventListener(Events.ON_SELECT,this);
|
pickWarehouse.addEventListener(Events.ON_SELECT,this);
|
||||||
|
@ -1113,44 +1112,20 @@ public class InfoProductPanel extends InfoPanel implements EventListener
|
||||||
*/
|
*/
|
||||||
protected ColumnInfo[] getProductLayout()
|
protected ColumnInfo[] getProductLayout()
|
||||||
{
|
{
|
||||||
if (s_productLayout != null)
|
if (s_productLayout != null && s_productLayoutRole == MRole.getDefault().getAD_Role_ID())
|
||||||
return s_productLayout;
|
return s_productLayout;
|
||||||
// Euro 13
|
|
||||||
MClient client = MClient.get(Env.getCtx());
|
|
||||||
if ("FRIE".equals(client.getValue()))
|
|
||||||
{
|
|
||||||
final ColumnInfo[] frieLayout = {
|
|
||||||
new ColumnInfo(" ", "p.M_Product_ID", IDColumn.class),
|
|
||||||
new ColumnInfo(Msg.translate(Env.getCtx(), "Name"), "p.Name", String.class),
|
|
||||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyAvailable"), "bomQtyAvailable(p.M_Product_ID,?,0) AS QtyAvailable", Double.class, true, true, null),
|
|
||||||
new ColumnInfo(Msg.translate(Env.getCtx(), "PriceList"), "bomPriceList(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceList", BigDecimal.class),
|
|
||||||
new ColumnInfo(Msg.translate(Env.getCtx(), "PriceStd"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceStd", BigDecimal.class),
|
|
||||||
new ColumnInfo("Einzel MWSt", "pr.PriceStd * 1.16", BigDecimal.class),
|
|
||||||
new ColumnInfo("Einzel kompl", "(pr.PriceStd+13) * 1.16", BigDecimal.class),
|
|
||||||
new ColumnInfo("Satz kompl", "((pr.PriceStd+13) * 1.16) * 4", BigDecimal.class),
|
|
||||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyOnHand"), "bomQtyOnHand(p.M_Product_ID,?,0) AS QtyOnHand", Double.class),
|
|
||||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyReserved"), "bomQtyReserved(p.M_Product_ID,?,0) AS QtyReserved", Double.class),
|
|
||||||
new ColumnInfo(Msg.translate(Env.getCtx(), "QtyOrdered"), "bomQtyOrdered(p.M_Product_ID,?,0) AS QtyOrdered", Double.class),
|
|
||||||
new ColumnInfo(Msg.translate(Env.getCtx(), "Discontinued").substring(0, 1), "p.Discontinued", Boolean.class),
|
|
||||||
new ColumnInfo(Msg.translate(Env.getCtx(), "Margin"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID)-bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS Margin", BigDecimal.class),
|
|
||||||
new ColumnInfo(Msg.translate(Env.getCtx(), "PriceLimit"), "bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceLimit", BigDecimal.class),
|
|
||||||
new ColumnInfo(Msg.translate(Env.getCtx(), "IsInstanceAttribute"), "pa.IsInstanceAttribute", Boolean.class)
|
|
||||||
};
|
|
||||||
INDEX_NAME = 2;
|
|
||||||
INDEX_PATTRIBUTE = frieLayout.length - 1; // last item
|
|
||||||
s_productLayout = frieLayout;
|
|
||||||
return s_productLayout;
|
|
||||||
}
|
|
||||||
//
|
//
|
||||||
if (s_productLayout == null)
|
s_productLayout = null;
|
||||||
{
|
s_productLayoutRole = MRole.getDefault().getAD_Role_ID();
|
||||||
ArrayList<ColumnInfo> list = new ArrayList<ColumnInfo>();
|
ArrayList<ColumnInfo> list = new ArrayList<ColumnInfo>();
|
||||||
list.add(new ColumnInfo(" ", "p.M_Product_ID", IDColumn.class, false, false, null));
|
list.add(new ColumnInfo(" ", "p.M_Product_ID", IDColumn.class));
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "Discontinued").substring(0, 1), "p.Discontinued", Boolean.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "Discontinued").substring(0, 1), "p.Discontinued", Boolean.class));
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "Value"), "p.Value", String.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "Value"), "p.Value", String.class));
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "Name"), "p.Name", String.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "Name"), "p.Name", String.class));
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "QtyAvailable"), "bomQtyAvailable(p.M_Product_ID,?,0) AS QtyAvailable", Double.class, true, true, null));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "QtyAvailable"), "bomQtyAvailable(p.M_Product_ID,?,0) AS QtyAvailable", Double.class, true, true, null));
|
||||||
|
if (MRole.getDefault().isColumnAccess(251 /*M_ProductPrice*/, 3027/*PriceList*/, false))
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "PriceList"), "bomPriceList(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceList", BigDecimal.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "PriceList"), "bomPriceList(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceList", BigDecimal.class));
|
||||||
|
if (MRole.getDefault().isColumnAccess(251 /*M_ProductPrice*/, 3028/*PriceStd*/, false))
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "PriceStd"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceStd", BigDecimal.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "PriceStd"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceStd", BigDecimal.class));
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "QtyOnHand"), "bomQtyOnHand(p.M_Product_ID,?,0) AS QtyOnHand", Double.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "QtyOnHand"), "bomQtyOnHand(p.M_Product_ID,?,0) AS QtyOnHand", Double.class));
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "QtyReserved"), "bomQtyReserved(p.M_Product_ID,?,0) AS QtyReserved", Double.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "QtyReserved"), "bomQtyReserved(p.M_Product_ID,?,0) AS QtyReserved", Double.class));
|
||||||
|
@ -1160,16 +1135,17 @@ public class InfoProductPanel extends InfoPanel implements EventListener
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "QtyUnconfirmed"), "(SELECT SUM(c.TargetQty) FROM M_InOutLineConfirm c INNER JOIN M_InOutLine il ON (c.M_InOutLine_ID=il.M_InOutLine_ID) INNER JOIN M_InOut i ON (il.M_InOut_ID=i.M_InOut_ID) WHERE c.Processed='N' AND i.M_Warehouse_ID=? AND il.M_Product_ID=p.M_Product_ID) AS QtyUnconfirmed", Double.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "QtyUnconfirmed"), "(SELECT SUM(c.TargetQty) FROM M_InOutLineConfirm c INNER JOIN M_InOutLine il ON (c.M_InOutLine_ID=il.M_InOutLine_ID) INNER JOIN M_InOut i ON (il.M_InOut_ID=i.M_InOut_ID) WHERE c.Processed='N' AND i.M_Warehouse_ID=? AND il.M_Product_ID=p.M_Product_ID) AS QtyUnconfirmed", Double.class));
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "QtyUnconfirmedMove"), "(SELECT SUM(c.TargetQty) FROM M_MovementLineConfirm c INNER JOIN M_MovementLine ml ON (c.M_MovementLine_ID=ml.M_MovementLine_ID) INNER JOIN M_Locator l ON (ml.M_LocatorTo_ID=l.M_Locator_ID) WHERE c.Processed='N' AND l.M_Warehouse_ID=? AND ml.M_Product_ID=p.M_Product_ID) AS QtyUnconfirmedMove", Double.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "QtyUnconfirmedMove"), "(SELECT SUM(c.TargetQty) FROM M_MovementLineConfirm c INNER JOIN M_MovementLine ml ON (c.M_MovementLine_ID=ml.M_MovementLine_ID) INNER JOIN M_Locator l ON (ml.M_LocatorTo_ID=l.M_Locator_ID) WHERE c.Processed='N' AND l.M_Warehouse_ID=? AND ml.M_Product_ID=p.M_Product_ID) AS QtyUnconfirmedMove", Double.class));
|
||||||
}
|
}
|
||||||
|
if (MRole.getDefault().isColumnAccess(251 /*M_ProductPrice*/, 3028/*PriceStd*/, false) && MRole.getDefault().isColumnAccess(251 /*M_ProductPrice*/, 3029/*PriceLimit*/, false))
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "Margin"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID)-bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS Margin", BigDecimal.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "Margin"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID)-bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS Margin", BigDecimal.class));
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "Vendor"), "bp.Name", String.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "Vendor"), "bp.Name", String.class));
|
||||||
|
if (MRole.getDefault().isColumnAccess(251 /*M_ProductPrice*/, 3029/*PriceLimit*/, false))
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "PriceLimit"), "bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceLimit", BigDecimal.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "PriceLimit"), "bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceLimit", BigDecimal.class));
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "IsInstanceAttribute"), "pa.IsInstanceAttribute", Boolean.class));
|
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "IsInstanceAttribute"), "pa.IsInstanceAttribute", Boolean.class));
|
||||||
list.add(new ColumnInfo(Msg.translate(Env.getCtx(), "ImageURL"), "p.ImageURL", MImage.class));
|
|
||||||
s_productLayout = new ColumnInfo[list.size()];
|
s_productLayout = new ColumnInfo[list.size()];
|
||||||
list.toArray(s_productLayout);
|
list.toArray(s_productLayout);
|
||||||
INDEX_NAME = 3;
|
INDEX_NAME = 3;
|
||||||
INDEX_PATTRIBUTE = s_productLayout.length - 1; // last item
|
INDEX_PATTRIBUTE = s_productLayout.length - 1; // last item
|
||||||
}
|
|
||||||
return s_productLayout;
|
return s_productLayout;
|
||||||
} // getProductLayout
|
} // getProductLayout
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue