hg merge release-1.0c (forward-porting)
This commit is contained in:
commit
fc4a76db75
|
@ -0,0 +1,7 @@
|
||||||
|
-- IDEMPIERE-1324 Menu entries with summary and centrally maintained are not translated
|
||||||
|
update ad_menu set iscentrallymaintained='N' where issummary='Y'
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201309030837_IDEMPIERE-1324.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- IDEMPIERE-1324 Menu entries with summary and centrally maintained are not translated
|
||||||
|
update ad_menu set iscentrallymaintained='N' where issummary='Y'
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201309030837_IDEMPIERE-1324.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -58,7 +58,7 @@ public class GridFieldVO implements Serializable
|
||||||
public static String getSQL (Properties ctx)
|
public static String getSQL (Properties ctx)
|
||||||
{
|
{
|
||||||
// IsActive is part of View
|
// IsActive is part of View
|
||||||
MRole role = MRole.getDefault(ctx, true);
|
MRole role = MRole.getDefault(ctx, false);
|
||||||
String advancedFilter=" AND IsAdvancedField='N' ";
|
String advancedFilter=" AND IsAdvancedField='N' ";
|
||||||
StringBuilder sql;
|
StringBuilder sql;
|
||||||
if (!Env.isBaseLanguage(ctx, "AD_Tab")){
|
if (!Env.isBaseLanguage(ctx, "AD_Tab")){
|
||||||
|
|
|
@ -370,7 +370,7 @@ public class GridTabVO implements Evaluatee, Serializable
|
||||||
+ " AND ce.AD_Field_ID IS NULL "
|
+ " AND ce.AD_Field_ID IS NULL "
|
||||||
+ " AND ce.ASP_Status = 'H')"; // Hide
|
+ " AND ce.ASP_Status = 'H')"; // Hide
|
||||||
// View only returns IsActive='Y'
|
// View only returns IsActive='Y'
|
||||||
MRole role = MRole.getDefault(ctx, true);
|
MRole role = MRole.getDefault(ctx, false);
|
||||||
String advancedFilter=" AND IsAdvancedTab='N' ";
|
String advancedFilter=" AND IsAdvancedTab='N' ";
|
||||||
StringBuilder sql;
|
StringBuilder sql;
|
||||||
if (!Env.isBaseLanguage(ctx, "AD_Window")) {
|
if (!Env.isBaseLanguage(ctx, "AD_Window")) {
|
||||||
|
|
|
@ -855,6 +855,11 @@ public class MCostDetail extends X_M_CostDetail
|
||||||
for (int i = 0; i < ces.length; i++)
|
for (int i = 0; i < ces.length; i++)
|
||||||
{
|
{
|
||||||
MCostElement ce = ces[i];
|
MCostElement ce = ces[i];
|
||||||
|
if (ce.isAverageInvoice() || ce.isAveragePO() || ce.isLifo() || ce.isFifo())
|
||||||
|
{
|
||||||
|
if (!product.isStocked())
|
||||||
|
continue;
|
||||||
|
}
|
||||||
ok = process (as, product, ce, Org_ID, M_ASI_ID);
|
ok = process (as, product, ce, Org_ID, M_ASI_ID);
|
||||||
if (!ok)
|
if (!ok)
|
||||||
break;
|
break;
|
||||||
|
@ -868,6 +873,11 @@ public class MCostDetail extends X_M_CostDetail
|
||||||
MCostElement[] ces = MCostElement.getCostingMethods(this);
|
MCostElement[] ces = MCostElement.getCostingMethods(this);
|
||||||
for (MCostElement costingElement : ces)
|
for (MCostElement costingElement : ces)
|
||||||
{
|
{
|
||||||
|
if (costingElement.isAverageInvoice() || costingElement.isAveragePO() || costingElement.isLifo() || costingElement.isFifo())
|
||||||
|
{
|
||||||
|
if (!product.isStocked())
|
||||||
|
continue;
|
||||||
|
}
|
||||||
ok = process (as, product, costingElement, Org_ID, M_ASI_ID);
|
ok = process (as, product, costingElement, Org_ID, M_ASI_ID);
|
||||||
if (!ok)
|
if (!ok)
|
||||||
break;
|
break;
|
||||||
|
@ -875,8 +885,16 @@ public class MCostDetail extends X_M_CostDetail
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (ce.isAverageInvoice() || ce.isAveragePO() || ce.isLifo() || ce.isFifo())
|
||||||
|
{
|
||||||
|
if (product.isStocked())
|
||||||
ok = process (as, product, ce, Org_ID, M_ASI_ID);
|
ok = process (as, product, ce, Org_ID, M_ASI_ID);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ok = process (as, product, ce, Org_ID, M_ASI_ID);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save it
|
// Save it
|
||||||
|
|
|
@ -114,6 +114,8 @@ public class MMenu extends X_AD_Menu
|
||||||
// Reset info
|
// Reset info
|
||||||
if (isSummary() && getAction() != null)
|
if (isSummary() && getAction() != null)
|
||||||
setAction(null);
|
setAction(null);
|
||||||
|
if (isSummary() && isCentrallyMaintained())
|
||||||
|
setIsCentrallyMaintained(false);
|
||||||
String action = getAction();
|
String action = getAction();
|
||||||
if (action == null)
|
if (action == null)
|
||||||
action = "";
|
action = "";
|
||||||
|
|
|
@ -61,7 +61,7 @@ public final class MRole extends X_AD_Role
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = -1135628544466487086L;
|
private static final long serialVersionUID = 3608297024439006903L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Default (Client) Role
|
* Get Default (Client) Role
|
||||||
|
@ -3148,4 +3148,23 @@ public final class MRole extends X_AD_Role
|
||||||
return retValue;
|
return retValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Boolean m_canAccess_Info_Product = null;
|
||||||
|
|
||||||
|
public boolean canAccess_Info_Product() {
|
||||||
|
if (m_canAccess_Info_Product == null) {
|
||||||
|
String sql = ""
|
||||||
|
+ "SELECT COUNT(*) "
|
||||||
|
+ "FROM AD_InfoWindow iw "
|
||||||
|
+ " JOIN AD_InfoWindow_Access iwa "
|
||||||
|
+ " ON ( iwa.AD_InfoWindow_ID = iw.AD_InfoWindow_ID ) "
|
||||||
|
+ "WHERE AD_Table_ID = ? "
|
||||||
|
+ " AND iw.IsActive = 'Y' "
|
||||||
|
+ " AND iwa.IsActive = 'Y' "
|
||||||
|
+ " AND iwa.AD_Role_ID = ?";
|
||||||
|
int cnt = DB.getSQLValueEx(null, sql, I_M_Product.Table_ID, getAD_Role_ID());
|
||||||
|
m_canAccess_Info_Product = new Boolean(cnt > 0);
|
||||||
|
}
|
||||||
|
return m_canAccess_Info_Product.booleanValue();
|
||||||
|
}
|
||||||
|
|
||||||
} // MRole
|
} // MRole
|
||||||
|
|
|
@ -104,7 +104,6 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
parentId = ReferenceUtils.resolveReference(ctx.ctx, parentElement, getTrxName(ctx));
|
parentId = ReferenceUtils.resolveReference(ctx.ctx, parentElement, getTrxName(ctx));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parentId > 0) {
|
|
||||||
StringBuffer updateSQL = null;
|
StringBuffer updateSQL = null;
|
||||||
int AD_Tree_ID = getDefaultMenuTreeId();
|
int AD_Tree_ID = getDefaultMenuTreeId();
|
||||||
String sql = "SELECT count(Parent_ID) FROM AD_TREENODEMM WHERE AD_Tree_ID = "+AD_Tree_ID
|
String sql = "SELECT count(Parent_ID) FROM AD_TREENODEMM WHERE AD_Tree_ID = "+AD_Tree_ID
|
||||||
|
@ -169,7 +168,7 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
" WHERE AD_Tree_ID = "+AD_Tree_ID).append(
|
" WHERE AD_Tree_ID = "+AD_Tree_ID).append(
|
||||||
" AND Node_ID = " + mMenu.getAD_Menu_ID());
|
" AND Node_ID = " + mMenu.getAD_Menu_ID());
|
||||||
} else {
|
} else {
|
||||||
updateSQL = new StringBuffer("Insert INTO AD_TREENODEMM").append(
|
updateSQL = new StringBuffer("INSERT INTO AD_TREENODEMM").append(
|
||||||
"(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, ").append(
|
"(AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, ").append(
|
||||||
"Parent_ID, SeqNo, AD_Tree_ID, Node_ID)").append(
|
"Parent_ID, SeqNo, AD_Tree_ID, Node_ID)").append(
|
||||||
"VALUES(0, 0, 0, 0, ").append(
|
"VALUES(0, 0, 0, 0, ").append(
|
||||||
|
@ -178,7 +177,6 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
}
|
}
|
||||||
DB.executeUpdate(updateSQL.toString(), getTrxName(ctx));
|
DB.executeUpdate(updateSQL.toString(), getTrxName(ctx));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private int getDefaultMenuTreeId() {
|
private int getDefaultMenuTreeId() {
|
||||||
return DB.getSQLValue(null, "SELECT AD_Tree_ID FROM AD_Tree WHERE TreeType='MM' AND AD_Client_ID=0 ORDER BY IsDefault DESC, AD_Tree_ID");
|
return DB.getSQLValue(null, "SELECT AD_Tree_ID FROM AD_Tree WHERE TreeType='MM' AND AD_Client_ID=0 ORDER BY IsDefault DESC, AD_Tree_ID");
|
||||||
|
|
|
@ -39,6 +39,7 @@ import org.compiere.model.GridTab;
|
||||||
import org.compiere.model.MRole;
|
import org.compiere.model.MRole;
|
||||||
import org.compiere.model.MToolBarButton;
|
import org.compiere.model.MToolBarButton;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
|
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;
|
||||||
import org.compiere.util.Util;
|
import org.compiere.util.Util;
|
||||||
|
@ -70,7 +71,7 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 3390505814516682801L;
|
private static final long serialVersionUID = -367141745573893540L;
|
||||||
|
|
||||||
public static final String BTNPREFIX = "Btn";
|
public static final String BTNPREFIX = "Btn";
|
||||||
|
|
||||||
|
@ -118,7 +119,7 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
|
||||||
// Elaine 2008/12/04
|
// Elaine 2008/12/04
|
||||||
/** Show Personal Lock */
|
/** Show Personal Lock */
|
||||||
public boolean isPersonalLock = MRole.getDefault().isPersonalLock();
|
public boolean isPersonalLock = MRole.getDefault().isPersonalLock();
|
||||||
private boolean isAllowProductInfo = MRole.getDefault().isAllow_Info_Product();
|
private boolean isAllowProductInfo = MRole.getDefault().canAccess_Info_Product();
|
||||||
|
|
||||||
private int windowNo = 0;
|
private int windowNo = 0;
|
||||||
|
|
||||||
|
@ -176,13 +177,19 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
|
||||||
btnArchive = createButton("Archive", "Archive", "Archive");
|
btnArchive = createButton("Archive", "Archive", "Archive");
|
||||||
btnPrint = createButton("Print", "Print", "Print");
|
btnPrint = createButton("Print", "Print", "Print");
|
||||||
btnPrint.setTooltiptext(btnPrint.getTooltiptext()+ " Alt+P");
|
btnPrint.setTooltiptext(btnPrint.getTooltiptext()+ " Alt+P");
|
||||||
|
if (isPersonalLock) {
|
||||||
btnLock = createButton("Lock", "Lock", "Lock"); // Elaine 2008/12/04
|
btnLock = createButton("Lock", "Lock", "Lock"); // Elaine 2008/12/04
|
||||||
|
btnLock.setDisabled(!isPersonalLock); // Elaine 2008/12/04
|
||||||
btnLock.setVisible(isPersonalLock);
|
btnLock.setVisible(isPersonalLock);
|
||||||
|
}
|
||||||
btnZoomAcross = createButton("ZoomAcross", "ZoomAcross", "ZoomAcross");
|
btnZoomAcross = createButton("ZoomAcross", "ZoomAcross", "ZoomAcross");
|
||||||
btnActiveWorkflows = createButton("ActiveWorkflows", "WorkFlow", "WorkFlow");
|
btnActiveWorkflows = createButton("ActiveWorkflows", "WorkFlow", "WorkFlow");
|
||||||
btnRequests = createButton("Requests", "Request", "Request");
|
btnRequests = createButton("Requests", "Request", "Request");
|
||||||
|
if (isAllowProductInfo) {
|
||||||
btnProductInfo = createButton("ProductInfo", "Product", "InfoProduct");
|
btnProductInfo = createButton("ProductInfo", "Product", "InfoProduct");
|
||||||
|
btnProductInfo.setDisabled(!isAllowProductInfo); // Elaine 2008/07/22
|
||||||
btnProductInfo.setVisible(isAllowProductInfo);
|
btnProductInfo.setVisible(isAllowProductInfo);
|
||||||
|
}
|
||||||
|
|
||||||
btnCustomize= createButton("Customize", "Customize", "Customize");
|
btnCustomize= createButton("Customize", "Customize", "Customize");
|
||||||
btnCustomize.setDisabled(false);
|
btnCustomize.setDisabled(false);
|
||||||
|
@ -199,9 +206,7 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
|
||||||
|
|
||||||
btnActiveWorkflows.setDisabled(false); // Elaine 2008/07/17
|
btnActiveWorkflows.setDisabled(false); // Elaine 2008/07/17
|
||||||
btnRequests.setDisabled(false); // Elaine 2008/07/22
|
btnRequests.setDisabled(false); // Elaine 2008/07/22
|
||||||
btnProductInfo.setDisabled(!isAllowProductInfo); // Elaine 2008/07/22
|
|
||||||
btnArchive.setDisabled(false); // Elaine 2008/07/28
|
btnArchive.setDisabled(false); // Elaine 2008/07/28
|
||||||
btnLock.setDisabled(!isPersonalLock); // Elaine 2008/12/04
|
|
||||||
|
|
||||||
if (MRole.getDefault().isCanExport())
|
if (MRole.getDefault().isCanExport())
|
||||||
{
|
{
|
||||||
|
@ -603,9 +608,22 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
|
||||||
} // All restrictions
|
} // All restrictions
|
||||||
|
|
||||||
dynamicDisplay();
|
dynamicDisplay();
|
||||||
|
// If no workflow set for the table => disable btnWorkflow
|
||||||
|
if (!btnActiveWorkflows.isDisabled()) {
|
||||||
|
GridTab gridTab = adwindow.getADWindowContent().getActiveGridTab();
|
||||||
|
if (gridTab != null)
|
||||||
|
btnActiveWorkflows.setDisabled(!hasWorkflow(gridTab));
|
||||||
|
}
|
||||||
ToolBarMenuRestictionLoaded = true;
|
ToolBarMenuRestictionLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** btnActiveWorkflow should be disabled when table has not workflow defined */
|
||||||
|
boolean hasWorkflow(GridTab gridTab)
|
||||||
|
{
|
||||||
|
String sql = "SELECT COUNT(*) FROM AD_Workflow WHERE IsActive='Y' AND AD_Table_ID=? AND AD_Client_ID IN (0,?)";
|
||||||
|
return (DB.getSQLValueEx(null, sql, gridTab.getAD_Table_ID(), Env.getAD_Client_ID(Env.getCtx())) > 0);
|
||||||
|
}
|
||||||
|
|
||||||
private void loadCustomButton(int AD_Window_ID) {
|
private void loadCustomButton(int AD_Window_ID) {
|
||||||
MToolBarButton[] mToolbarButtons = MToolBarButton.getOfWindow(AD_Window_ID, null);
|
MToolBarButton[] mToolbarButtons = MToolBarButton.getOfWindow(AD_Window_ID, null);
|
||||||
if (mToolbarButtons != null && mToolbarButtons.length > 0) {
|
if (mToolbarButtons != null && mToolbarButtons.length > 0) {
|
||||||
|
|
|
@ -159,12 +159,15 @@ public class SimpleTreeModel extends org.zkoss.zul.DefaultTreeModel<Object> impl
|
||||||
}
|
}
|
||||||
|
|
||||||
// Color
|
// Color
|
||||||
final MTreeNode mNode = (MTreeNode) ((DefaultTreeNode<?>) node).getData();
|
Object data = ((DefaultTreeNode<?>) node).getData();
|
||||||
|
if (data instanceof MTreeNode) {
|
||||||
|
final MTreeNode mNode = (MTreeNode) data;
|
||||||
Color color = mNode.getColor();
|
Color color = mNode.getColor();
|
||||||
if (color != null){
|
if (color != null){
|
||||||
String hex = ZkCssHelper.createHexColorString(color);
|
String hex = ZkCssHelper.createHexColorString(color);
|
||||||
ZkCssHelper.appendStyle(tc, "color: #" + hex);
|
ZkCssHelper.appendStyle(tc, "color: #" + hex);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// End color
|
// End color
|
||||||
}else{
|
}else{
|
||||||
tr = ti.getTreerow();
|
tr = ti.getTreerow();
|
||||||
|
|
|
@ -350,6 +350,10 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
|
|
||||||
private void onPAttributeClick() {
|
private void onPAttributeClick() {
|
||||||
Integer productInteger = getSelectedRowKey();
|
Integer productInteger = getSelectedRowKey();
|
||||||
|
if (productInteger == null) {
|
||||||
|
m_PAttributeButton.setEnabled(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
String productName = (String)contentPanel.getValueAt(contentPanel.getSelectedRow(), findColumnIndex("Name"));
|
String productName = (String)contentPanel.getValueAt(contentPanel.getSelectedRow(), findColumnIndex("Name"));
|
||||||
|
|
||||||
if (productInteger == null || productInteger.intValue() == 0)
|
if (productInteger == null || productInteger.intValue() == 0)
|
||||||
|
@ -822,4 +826,13 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
}
|
}
|
||||||
super.prepareTable(layout, from, where, orderBy);
|
super.prepareTable(layout, from, where, orderBy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void executeQuery() {
|
||||||
|
super.executeQuery();
|
||||||
|
if (m_PAttributeButton != null)
|
||||||
|
m_PAttributeButton.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,18 +77,18 @@ public class AboutWindow extends Window implements EventListener<Event> {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 6573804051552633150L;
|
private static final long serialVersionUID = -305598686065143269L;
|
||||||
|
|
||||||
private Checkbox bErrorsOnly;
|
private Checkbox bErrorsOnly;
|
||||||
private Listbox logTable;
|
private Listbox logTable;
|
||||||
private Tabbox tabbox;
|
private Tabbox tabbox;
|
||||||
protected Tabpanels tabPanels;
|
protected Tabpanels tabPanels;
|
||||||
private Button btnDownload;
|
protected Button btnDownload;
|
||||||
private Button btnErrorEmail;
|
protected Button btnErrorEmail;
|
||||||
private Button btnViewLog;
|
protected Button btnViewLog;
|
||||||
protected Tab tabLog;
|
protected Tab tabLog;
|
||||||
|
|
||||||
private Button btnAdempiereLog;
|
protected Button btnAdempiereLog;
|
||||||
|
|
||||||
private Listbox levelListBox;
|
private Listbox levelListBox;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue