hg merge release-2.1 (merge release2.1 into development)

This commit is contained in:
Carlos Ruiz 2015-04-16 16:32:24 -05:00
commit 58254de9a4
19 changed files with 311 additions and 73 deletions

View File

@ -0,0 +1,11 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- IDEMPIERE-2535 Date material policy BUG on receipt
-- Apr 9, 2015 12:04:34 PM COT
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_DATE('2015-04-09 12:04:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208342
;
SELECT register_migration_script('201504091207_IDEMPIERE-2535.sql') FROM dual
;

View File

@ -0,0 +1,55 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
update ad_process_para set seqno=seqno+1000 where ad_process_id=53161 and seqno>=80;
update ad_process_para set seqno=seqno-990 where ad_process_id=53161 and seqno>=1080;
-- IDEMPIERE-2549 Password rule break Initial Client Setup
-- Apr 15, 2015 12:17:41 PM COT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (202876,0,0,'Y',TO_DATE('2015-04-15 12:17:40','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-04-15 12:17:40','YYYY-MM-DD HH24:MI:SS'),100,'IsSetInitialPassword','IsSetInitialPassword','IsSetInitialPassword','D','0e03fdbc-cb25-4705-bbd8-4442b02563af')
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_Element SET Name='Set Initial Password', PrintName='Set Initial Password',Updated=TO_DATE('2015-04-15 12:17:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=202876
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_Column SET ColumnName='IsSetInitialPassword', Name='Set Initial Password', Description=NULL, Help=NULL WHERE AD_Element_ID=202876
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_Process_Para SET ColumnName='IsSetInitialPassword', Name='Set Initial Password', Description=NULL, Help=NULL, AD_Element_ID=202876 WHERE UPPER(ColumnName)='ISSETINITIALPASSWORD' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_Process_Para SET ColumnName='IsSetInitialPassword', Name='Set Initial Password', Description=NULL, Help=NULL WHERE AD_Element_ID=202876 AND IsCentrallyMaintained='Y'
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_InfoColumn SET ColumnName='IsSetInitialPassword', Name='Set Initial Password', Description=NULL, Help=NULL WHERE AD_Element_ID=202876 AND IsCentrallyMaintained='Y'
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_Field SET Name='Set Initial Password', Description=NULL, Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=202876) AND IsCentrallyMaintained='Y'
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_PrintFormatItem SET PrintName='Set Initial Password', Name='Set Initial Password' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=202876)
;
-- Apr 15, 2015 12:18:34 PM COT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200132,0,0,'Y',TO_DATE('2015-04-15 12:18:34','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-04-15 12:18:34','YYYY-MM-DD HH24:MI:SS'),100,'Set Initial Password',53161,80,20,'N',1,'Y','Y','IsSetInitialPassword','Y','D',202876,'54bfb648-044e-47d3-b232-bb61a4632772','N')
;
-- Apr 15, 2015 12:19:10 PM COT
UPDATE AD_Process SET IsActive='N',Updated=TO_DATE('2015-04-15 12:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=288
;
-- Apr 15, 2015 12:36:59 PM COT
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Force change on next login',0,0,'Y',TO_DATE('2015-04-15 12:36:59','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-04-15 12:36:59','YYYY-MM-DD HH24:MI:SS'),100,200349,'ForceChangeOnNextLogin','D','ef609a89-2d65-44f8-8aaf-4a29854510c9')
;
SELECT register_migration_script('201504151220_IDEMPIERE-2549.sql') FROM dual
;

View File

@ -0,0 +1,35 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- IDEMPIERE-476 Report Engine related bugs
-- 15/04/2015 05:50:45 PM COT
UPDATE AD_Element SET Name='Calculate Maximum (↑)',Updated=TO_DATE('2015-04-15 17:50:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=2207
;
-- 15/04/2015 05:50:45 PM COT
UPDATE AD_Column SET ColumnName='IsMaxCalc', Name='Calculate Maximum (↑)', Description='Calculate the maximum amount', Help='Calculate the Maximum (↑) of the data if the field is numeric, otherwise maximum length of the field.' WHERE AD_Element_ID=2207
;
-- 15/04/2015 05:50:46 PM COT
UPDATE AD_Process_Para SET ColumnName='IsMaxCalc', Name='Calculate Maximum (↑)', Description='Calculate the maximum amount', Help='Calculate the Maximum (↑) of the data if the field is numeric, otherwise maximum length of the field.', AD_Element_ID=2207 WHERE UPPER(ColumnName)='ISMAXCALC' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL
;
-- 15/04/2015 05:50:46 PM COT
UPDATE AD_Process_Para SET ColumnName='IsMaxCalc', Name='Calculate Maximum (↑)', Description='Calculate the maximum amount', Help='Calculate the Maximum (↑) of the data if the field is numeric, otherwise maximum length of the field.' WHERE AD_Element_ID=2207 AND IsCentrallyMaintained='Y'
;
-- 15/04/2015 05:50:46 PM COT
UPDATE AD_InfoColumn SET ColumnName='IsMaxCalc', Name='Calculate Maximum (↑)', Description='Calculate the maximum amount', Help='Calculate the Maximum (↑) of the data if the field is numeric, otherwise maximum length of the field.' WHERE AD_Element_ID=2207 AND IsCentrallyMaintained='Y'
;
-- 15/04/2015 05:50:46 PM COT
UPDATE AD_Field SET Name='Calculate Maximum (↑)', Description='Calculate the maximum amount', Help='Calculate the Maximum (↑) of the data if the field is numeric, otherwise maximum length of the field.' WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=2207) AND IsCentrallyMaintained='Y'
;
-- 15/04/2015 05:50:46 PM COT
UPDATE AD_PrintFormatItem SET PrintName='Calc Max', Name='Calculate Maximum (↑)' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=2207)
;
SELECT register_migration_script('201504151752_IDEMPIERE-476.sql') FROM dual
;

View File

@ -0,0 +1,8 @@
-- IDEMPIERE-2535 Date material policy BUG on receipt
-- Apr 9, 2015 12:04:34 PM COT
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_TIMESTAMP('2015-04-09 12:04:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=208342
;
SELECT register_migration_script('201504091207_IDEMPIERE-2535.sql') FROM dual
;

View File

@ -0,0 +1,52 @@
update ad_process_para set seqno=seqno+1000 where ad_process_id=53161 and seqno>=80;
update ad_process_para set seqno=seqno-990 where ad_process_id=53161 and seqno>=1080;
-- IDEMPIERE-2549 Password rule break Initial Client Setup
-- Apr 15, 2015 12:17:41 PM COT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (202876,0,0,'Y',TO_TIMESTAMP('2015-04-15 12:17:40','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-04-15 12:17:40','YYYY-MM-DD HH24:MI:SS'),100,'IsSetInitialPassword','IsSetInitialPassword','IsSetInitialPassword','D','0e03fdbc-cb25-4705-bbd8-4442b02563af')
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_Element SET Name='Set Initial Password', PrintName='Set Initial Password',Updated=TO_TIMESTAMP('2015-04-15 12:17:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=202876
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_Column SET ColumnName='IsSetInitialPassword', Name='Set Initial Password', Description=NULL, Help=NULL WHERE AD_Element_ID=202876
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_Process_Para SET ColumnName='IsSetInitialPassword', Name='Set Initial Password', Description=NULL, Help=NULL, AD_Element_ID=202876 WHERE UPPER(ColumnName)='ISSETINITIALPASSWORD' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_Process_Para SET ColumnName='IsSetInitialPassword', Name='Set Initial Password', Description=NULL, Help=NULL WHERE AD_Element_ID=202876 AND IsCentrallyMaintained='Y'
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_InfoColumn SET ColumnName='IsSetInitialPassword', Name='Set Initial Password', Description=NULL, Help=NULL WHERE AD_Element_ID=202876 AND IsCentrallyMaintained='Y'
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_Field SET Name='Set Initial Password', Description=NULL, Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=202876) AND IsCentrallyMaintained='Y'
;
-- Apr 15, 2015 12:17:58 PM COT
UPDATE AD_PrintFormatItem SET PrintName='Set Initial Password', Name='Set Initial Password' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=202876)
;
-- Apr 15, 2015 12:18:34 PM COT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200132,0,0,'Y',TO_TIMESTAMP('2015-04-15 12:18:34','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-04-15 12:18:34','YYYY-MM-DD HH24:MI:SS'),100,'Set Initial Password',53161,80,20,'N',1,'Y','Y','IsSetInitialPassword','Y','D',202876,'54bfb648-044e-47d3-b232-bb61a4632772','N')
;
-- Apr 15, 2015 12:19:10 PM COT
UPDATE AD_Process SET IsActive='N',Updated=TO_TIMESTAMP('2015-04-15 12:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=288
;
-- Apr 15, 2015 12:36:59 PM COT
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','Force change on next login',0,0,'Y',TO_TIMESTAMP('2015-04-15 12:36:59','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-04-15 12:36:59','YYYY-MM-DD HH24:MI:SS'),100,200349,'ForceChangeOnNextLogin','D','ef609a89-2d65-44f8-8aaf-4a29854510c9')
;
SELECT register_migration_script('201504151220_IDEMPIERE-2549.sql') FROM dual
;

View File

@ -0,0 +1,34 @@
SET CLIENT_ENCODING TO 'UTF8';
-- IDEMPIERE-476 Report Engine related bugs
-- 15/04/2015 05:50:45 PM COT
UPDATE AD_Element SET Name='Calculate Maximum (↑)',Updated=TO_TIMESTAMP('2015-04-15 17:50:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=2207
;
-- 15/04/2015 05:50:45 PM COT
UPDATE AD_Column SET ColumnName='IsMaxCalc', Name='Calculate Maximum (↑)', Description='Calculate the maximum amount', Help='Calculate the Maximum (↑) of the data if the field is numeric, otherwise maximum length of the field.' WHERE AD_Element_ID=2207
;
-- 15/04/2015 05:50:46 PM COT
UPDATE AD_Process_Para SET ColumnName='IsMaxCalc', Name='Calculate Maximum (↑)', Description='Calculate the maximum amount', Help='Calculate the Maximum (↑) of the data if the field is numeric, otherwise maximum length of the field.', AD_Element_ID=2207 WHERE UPPER(ColumnName)='ISMAXCALC' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL
;
-- 15/04/2015 05:50:46 PM COT
UPDATE AD_Process_Para SET ColumnName='IsMaxCalc', Name='Calculate Maximum (↑)', Description='Calculate the maximum amount', Help='Calculate the Maximum (↑) of the data if the field is numeric, otherwise maximum length of the field.' WHERE AD_Element_ID=2207 AND IsCentrallyMaintained='Y'
;
-- 15/04/2015 05:50:46 PM COT
UPDATE AD_InfoColumn SET ColumnName='IsMaxCalc', Name='Calculate Maximum (↑)', Description='Calculate the maximum amount', Help='Calculate the Maximum (↑) of the data if the field is numeric, otherwise maximum length of the field.' WHERE AD_Element_ID=2207 AND IsCentrallyMaintained='Y'
;
-- 15/04/2015 05:50:46 PM COT
UPDATE AD_Field SET Name='Calculate Maximum (↑)', Description='Calculate the maximum amount', Help='Calculate the Maximum (↑) of the data if the field is numeric, otherwise maximum length of the field.' WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=2207) AND IsCentrallyMaintained='Y'
;
-- 15/04/2015 05:50:46 PM COT
UPDATE AD_PrintFormatItem SET PrintName='Calc Max', Name='Calculate Maximum (↑)' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=2207)
;
SELECT register_migration_script('201504151752_IDEMPIERE-476.sql') FROM dual
;

View File

@ -62,6 +62,7 @@ public class InitialClientSetup extends SvrProcess
private String p_OrgName = null; private String p_OrgName = null;
private String p_AdminUserName = null; private String p_AdminUserName = null;
private String p_NormalUserName = null; private String p_NormalUserName = null;
private boolean p_IsSetInitialPassword = true;
private int p_C_Currency_ID = 0; private int p_C_Currency_ID = 0;
private int p_C_Country_ID = 0; private int p_C_Country_ID = 0;
private int p_C_Region_ID = 0; private int p_C_Region_ID = 0;
@ -110,6 +111,8 @@ public class InitialClientSetup extends SvrProcess
p_AdminUserName = (String) para[i].getParameter(); p_AdminUserName = (String) para[i].getParameter();
else if (name.equals("NormalUserName")) else if (name.equals("NormalUserName"))
p_NormalUserName = (String) para[i].getParameter(); p_NormalUserName = (String) para[i].getParameter();
else if (name.equals("IsSetInitialPassword"))
p_IsSetInitialPassword = para[i].getParameterAsBoolean();
else if (name.equals("C_Currency_ID")) else if (name.equals("C_Currency_ID"))
p_C_Currency_ID = para[i].getParameterAsInt(); p_C_Currency_ID = para[i].getParameterAsInt();
else if (name.equals("C_Country_ID")) else if (name.equals("C_Country_ID"))
@ -175,6 +178,7 @@ public class InitialClientSetup extends SvrProcess
.append(", OrgName=").append(p_OrgName) .append(", OrgName=").append(p_OrgName)
.append(", AdminUserName=").append(p_AdminUserName) .append(", AdminUserName=").append(p_AdminUserName)
.append(", NormalUserName=").append(p_NormalUserName) .append(", NormalUserName=").append(p_NormalUserName)
.append(", IsSetInitialPassword=").append(p_IsSetInitialPassword)
.append(", C_Currency_ID=").append(p_C_Currency_ID) .append(", C_Currency_ID=").append(p_C_Currency_ID)
.append(", C_Country_ID=").append(p_C_Country_ID) .append(", C_Country_ID=").append(p_C_Country_ID)
.append(", C_Region_ID=").append(p_C_Region_ID) .append(", C_Region_ID=").append(p_C_Region_ID)
@ -259,7 +263,7 @@ public class InitialClientSetup extends SvrProcess
MSetup ms = new MSetup(Env.getCtx(), WINDOW_THIS_PROCESS); MSetup ms = new MSetup(Env.getCtx(), WINDOW_THIS_PROCESS);
try { try {
if (! ms.createClient(p_ClientName, p_OrgValue, p_OrgName, p_AdminUserName, p_NormalUserName if (! ms.createClient(p_ClientName, p_OrgValue, p_OrgName, p_AdminUserName, p_NormalUserName
, p_Phone, p_Phone2, p_Fax, p_EMail, p_TaxID, p_AdminUserEmail, p_NormalUserEmail)) { , p_Phone, p_Phone2, p_Fax, p_EMail, p_TaxID, p_AdminUserEmail, p_NormalUserEmail, p_IsSetInitialPassword)) {
ms.rollback(); ms.rollback();
throw new AdempiereException("Create client failed"); throw new AdempiereException("Create client failed");
} }

View File

@ -376,7 +376,6 @@ public class CommissionCalc extends SvrProcess
if (!cd.save()) if (!cd.save())
throw new IllegalArgumentException ("CommissionCalc - Detail Not saved"); throw new IllegalArgumentException ("CommissionCalc - Detail Not saved");
} }
pstmt = null;
} }
catch (Exception e) catch (Exception e)
{ {

View File

@ -336,7 +336,7 @@ public class GridTabCSVImporter implements IGridTabImporter
} }
if (!isMasterok && isDetail){ if (!isMasterok && isDetail){
rawLine = rawLine + delimiter + quoteChar + Msg.getMsg(Env.getCtx(),"NotProccesed") + quoteChar + "\n"; rawLine = rawLine + delimiter + quoteChar + Msg.getMsg(Env.getCtx(),"NotProcessed") + quoteChar + "\n";
rowsTmpResult.add(rawLine); rowsTmpResult.add(rawLine);
continue; continue;
}else if(isMasterok && isDetail && !isDetailok){ }else if(isMasterok && isDetail && !isDetailok){

View File

@ -45,8 +45,6 @@ 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;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.eevolution.model.MPPProductBOM;
import org.eevolution.model.MPPProductBOMLine;
/** /**
@ -1538,7 +1536,7 @@ public class MInvoice extends X_C_Invoice implements DocAction
int lineNo = line.getLine (); int lineNo = line.getLine ();
//find default BOM with valid dates and to this product //find default BOM with valid dates and to this product
MPPProductBOM bom = MPPProductBOM.get(product, getAD_Org_ID(),getDateInvoiced(), get_TrxName()); /*MPPProductBOM bom = MPPProductBOM.get(product, getAD_Org_ID(),getDateInvoiced(), get_TrxName());
if(bom != null) if(bom != null)
{ {
MPPProductBOMLine[] bomlines = bom.getLines(getDateInvoiced()); MPPProductBOMLine[] bomlines = bom.getLines(getDateInvoiced());
@ -1557,25 +1555,20 @@ public class MInvoice extends X_C_Invoice implements DocAction
newLine.setPrice (); newLine.setPrice ();
newLine.saveEx (get_TrxName()); newLine.saveEx (get_TrxName());
} }
}
/*MProductBOM[] boms = MProductBOM.getBOMLines (product);
for (int j = 0; j < boms.length; j++)
{
MProductBOM bom = boms[j];
MInvoiceLine newLine = new MInvoiceLine (this);
newLine.setLine (++lineNo);
newLine.setM_Product_ID (bom.getProduct().getM_Product_ID(),
bom.getProduct().getC_UOM_ID());
newLine.setQty (line.getQtyInvoiced().multiply(
bom.getBOMQty ())); // Invoiced/Entered
if (bom.getDescription () != null)
newLine.setDescription (bom.getDescription ());
//
newLine.setPrice ();
newLine.save (get_TrxName());
}*/ }*/
for (MProductBOM bom : MProductBOM.getBOMLines(product))
{
MInvoiceLine newLine = new MInvoiceLine(this);
newLine.setLine(++lineNo);
newLine.setM_Product_ID(bom.getM_ProductBOM_ID(), true);
newLine.setQty(line.getQtyInvoiced().multiply(bom.getBOMQty()));
if (bom.getDescription() != null)
newLine.setDescription(bom.getDescription());
newLine.setPrice();
newLine.save(get_TrxName());
}
// Convert into Comment Line // Convert into Comment Line
line.setM_Product_ID (0); line.setM_Product_ID (0);
line.setM_AttributeSetInstance_ID (0); line.setM_AttributeSetInstance_ID (0);

View File

@ -435,7 +435,8 @@ public class MMovement extends X_M_Movement implements DocAction
M_AttributeSetInstanceTo_ID = ma.getM_AttributeSetInstance_ID(); M_AttributeSetInstanceTo_ID = ma.getM_AttributeSetInstance_ID();
} }
//Update Storage //Update Storage
if (!MStorageOnHand.add(getCtx(),locator.getM_Warehouse_ID(), MLocator locatorTo = new MLocator (getCtx(), line.getM_LocatorTo_ID(), get_TrxName());
if (!MStorageOnHand.add(getCtx(),locatorTo.getM_Warehouse_ID(),
line.getM_LocatorTo_ID(), line.getM_LocatorTo_ID(),
line.getM_Product_ID(), line.getM_Product_ID(),
M_AttributeSetInstanceTo_ID, M_AttributeSetInstanceTo_ID,
@ -473,17 +474,13 @@ public class MMovement extends X_M_Movement implements DocAction
// Fallback - We have ASI // Fallback - We have ASI
if (trxFrom == null) if (trxFrom == null)
{ {
I_M_AttributeSetInstance asi = line.getM_AttributeSetInstance();
Timestamp dateMPolicy= getMovementDate();
dateMPolicy = asi.getCreated();
MLocator locator = new MLocator (getCtx(), line.getM_Locator_ID(), get_TrxName()); MLocator locator = new MLocator (getCtx(), line.getM_Locator_ID(), get_TrxName());
//Update Storage //Update Storage
if (!MStorageOnHand.add(getCtx(),locator.getM_Warehouse_ID(), if (!MStorageOnHand.add(getCtx(),locator.getM_Warehouse_ID(),
line.getM_Locator_ID(), line.getM_Locator_ID(),
line.getM_Product_ID(), line.getM_Product_ID(),
line.getM_AttributeSetInstance_ID(), line.getM_AttributeSetInstance_ID(),
line.getMovementQty().negate(),dateMPolicy, get_TrxName())) line.getMovementQty().negate(), null, get_TrxName()))
{ {
String lastError = CLogger.retrieveErrorString(""); String lastError = CLogger.retrieveErrorString("");
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError; m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;
@ -491,11 +488,12 @@ public class MMovement extends X_M_Movement implements DocAction
} }
//Update Storage //Update Storage
if (!MStorageOnHand.add(getCtx(),locator.getM_Warehouse_ID(), MLocator locatorTo = new MLocator (getCtx(), line.getM_LocatorTo_ID(), get_TrxName());
if (!MStorageOnHand.add(getCtx(),locatorTo.getM_Warehouse_ID(),
line.getM_LocatorTo_ID(), line.getM_LocatorTo_ID(),
line.getM_Product_ID(), line.getM_Product_ID(),
line.getM_AttributeSetInstanceTo_ID(), line.getM_AttributeSetInstanceTo_ID(),
line.getMovementQty(),dateMPolicy, get_TrxName())) line.getMovementQty(), null, get_TrxName()))
{ {
String lastError = CLogger.retrieveErrorString(""); String lastError = CLogger.retrieveErrorString("");
m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError; m_processMsg = "Cannot correct Inventory OnHand (MA) - " + lastError;

View File

@ -47,8 +47,6 @@ 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;
import org.eevolution.model.MPPProductBOM;
import org.eevolution.model.MPPProductBOMLine;
/** /**
@ -1605,7 +1603,7 @@ public class MOrder extends X_C_Order implements DocAction
// New Lines // New Lines
int lineNo = line.getLine (); int lineNo = line.getLine ();
//find default BOM with valid dates and to this product //find default BOM with valid dates and to this product
MPPProductBOM bom = MPPProductBOM.get(product, getAD_Org_ID(),getDatePromised(), get_TrxName()); /*/MPPProductBOM bom = MPPProductBOM.get(product, getAD_Org_ID(),getDatePromised(), get_TrxName());
if(bom != null) if(bom != null)
{ {
MPPProductBOMLine[] bomlines = bom.getLines(getDatePromised()); MPPProductBOMLine[] bomlines = bom.getLines(getDatePromised());
@ -1624,30 +1622,19 @@ public class MOrder extends X_C_Order implements DocAction
newLine.setPrice (); newLine.setPrice ();
newLine.save (get_TrxName()); newLine.save (get_TrxName());
} }
} } */
/*MProductBOM[] boms = MProductBOM.getBOMLines (product); for (MProductBOM bom : MProductBOM.getBOMLines(product))
for (int j = 0; j < boms.length; j++)
{ {
//MProductBOM bom = boms[j]; MOrderLine newLine = new MOrderLine(this);
MPPProductBOMLine bom = boms[j]; newLine.setLine(++lineNo);
MOrderLine newLine = new MOrderLine (this); newLine.setM_Product_ID(bom.getM_ProductBOM_ID(), true);
newLine.setLine (++lineNo); newLine.setQty(line.getQtyOrdered().multiply(bom.getBOMQty()));
//newLine.setM_Product_ID (bom.getProduct () if (bom.getDescription() != null)
// .getM_Product_ID ()); newLine.setDescription(bom.getDescription());
newLine.setM_Product_ID (bom.getM_Product_ID ()); newLine.setPrice();
//newLine.setC_UOM_ID (bom.getProduct ().getC_UOM_ID ()); newLine.save(get_TrxName());
newLine.setC_UOM_ID (bom.getC_UOM_ID ()); }
//newLine.setQty (line.getQtyOrdered ().multiply (
// bom.getBOMQty ()));
newLine.setQty (line.getQtyOrdered ().multiply (
bom.getQtyBOM()));
if (bom.getDescription () != null)
newLine.setDescription (bom.getDescription ());
//
newLine.setPrice ();
newLine.save (get_TrxName());
}*/
// Convert into Comment Line // Convert into Comment Line
line.setM_Product_ID (0); line.setM_Product_ID (0);

View File

@ -96,6 +96,10 @@ public class MProduction extends X_M_Production implements DocAction {
return status; return status;
} }
m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_BEFORE_COMPLETE);
if (m_processMsg != null)
return DocAction.STATUS_Invalid;
StringBuilder errors = new StringBuilder(); StringBuilder errors = new StringBuilder();
int processed = 0; int processed = 0;
@ -125,7 +129,15 @@ public class MProduction extends X_M_Production implements DocAction {
} }
} }
setProcessed(true); // User Validation
String valid = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_AFTER_COMPLETE);
if (valid != null)
{
m_processMsg = valid;
return DocAction.STATUS_Invalid;
}
setProcessed(true);
setDocAction(DOCACTION_Close); setDocAction(DOCACTION_Close);
return DocAction.STATUS_Completed; return DocAction.STATUS_Completed;
} }
@ -562,6 +574,12 @@ public class MProduction extends X_M_Production implements DocAction {
@Override @Override
public boolean voidIt() { public boolean voidIt() {
if (log.isLoggable(Level.INFO)) log.info(toString());
// Before Void
m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_BEFORE_VOID);
if (m_processMsg != null)
return false;
if (DOCSTATUS_Closed.equals(getDocStatus()) if (DOCSTATUS_Closed.equals(getDocStatus())
|| DOCSTATUS_Reversed.equals(getDocStatus()) || DOCSTATUS_Reversed.equals(getDocStatus())
|| DOCSTATUS_Voided.equals(getDocStatus())) || DOCSTATUS_Voided.equals(getDocStatus()))
@ -612,6 +630,11 @@ public class MProduction extends X_M_Production implements DocAction {
return reverseCorrectIt(); return reverseCorrectIt();
} }
// After Void
m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_AFTER_VOID);
if (m_processMsg != null)
return false;
setProcessed(true); setProcessed(true);
setDocAction(DOCACTION_None); setDocAction(DOCACTION_None);
return true; return true;
@ -769,8 +792,8 @@ public class MProduction extends X_M_Production implements DocAction {
@Override @Override
public boolean reverseAccrualIt() { public boolean reverseAccrualIt() {
if (log.isLoggable(Level.INFO)) log.info(toString()); if (log.isLoggable(Level.INFO)) log.info(toString());
// Before reverseCorrect // Before reverseAccrual
m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_BEFORE_REVERSECORRECT); m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_BEFORE_REVERSEACCRUAL);
if (m_processMsg != null) if (m_processMsg != null)
return false; return false;
@ -778,8 +801,8 @@ public class MProduction extends X_M_Production implements DocAction {
if (reversal == null) if (reversal == null)
return false; return false;
// After reverseCorrect // After reverseAccrual
m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_AFTER_REVERSECORRECT); m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_AFTER_REVERSEACCRUAL);
if (m_processMsg != null) if (m_processMsg != null)
return false; return false;
@ -790,7 +813,17 @@ public class MProduction extends X_M_Production implements DocAction {
@Override @Override
public boolean reActivateIt() { public boolean reActivateIt() {
throw new UnsupportedOperationException(); if (log.isLoggable(Level.INFO)) log.info("reActivateIt - " + toString());
// Before reActivate
m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_BEFORE_REACTIVATE);
if (m_processMsg != null)
return false;
// After reActivate
m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_AFTER_REACTIVATE);
if (m_processMsg != null)
return false;
return false;
} }
@Override @Override

View File

@ -108,11 +108,12 @@ public final class MSetup
* @param orgName org name * @param orgName org name
* @param userClient user id client * @param userClient user id client
* @param userOrg user id org * @param userOrg user id org
* @param isSetInitialPassword
* @return true if created * @return true if created
*/ */
public boolean createClient (String clientName, String orgValue, String orgName, public boolean createClient (String clientName, String orgValue, String orgName,
String userClient, String userOrg, String phone, String phone2, String fax, String eMail, String taxID, String userClient, String userOrg, String phone, String phone2, String fax, String eMail, String taxID,
String adminEmail, String userEmail) String adminEmail, String userEmail, boolean isSetInitialPassword)
{ {
log.info(clientName); log.info(clientName);
m_trx.start(); m_trx.start();
@ -286,7 +287,8 @@ public final class MSetup
if (name == null || name.length() == 0) if (name == null || name.length() == 0)
name = m_clientName + "Client"; name = m_clientName + "Client";
clientAdminUser.setPassword(name); if (isSetInitialPassword)
clientAdminUser.setPassword(name);
clientAdminUser.setDescription(name); clientAdminUser.setDescription(name);
clientAdminUser.setName(name); clientAdminUser.setName(name);
clientAdminUser.setAD_Client_ID(AD_Client_ID); clientAdminUser.setAD_Client_ID(AD_Client_ID);
@ -320,7 +322,8 @@ public final class MSetup
if (name == null || name.length() == 0) if (name == null || name.length() == 0)
name = m_clientName + "Org"; name = m_clientName + "Org";
clientUser.setPassword(name); if (isSetInitialPassword)
clientUser.setPassword(name);
clientUser.setDescription(name); clientUser.setDescription(name);
clientUser.setName(name); clientUser.setName(name);
clientUser.setAD_Client_ID(AD_Client_ID); clientUser.setAD_Client_ID(AD_Client_ID);

View File

@ -713,7 +713,7 @@ public class MStorageOnHand extends X_M_StorageOnHand
if (M_AttributeSetInstance_ID > 0) if (M_AttributeSetInstance_ID > 0)
{ {
MAttributeSetInstance asi = new MAttributeSetInstance(ctx, M_AttributeSetInstance_ID, trxName); MAttributeSetInstance asi = new MAttributeSetInstance(ctx, M_AttributeSetInstance_ID, trxName);
dateMPolicy = asi.getCreated(); dateMPolicy = asi.getCreated();
} }
else else
{ {

View File

@ -137,10 +137,10 @@ public class PrintDataFunction
mean = mean.setScale(4, BigDecimal.ROUND_HALF_UP); mean = mean.setScale(4, BigDecimal.ROUND_HALF_UP);
return mean; return mean;
} }
// Variance = sum of squares - (square of sum / count) // Variance = ( sum of squares - (square of sum / count) ) / count
BigDecimal ss = m_sum.multiply(m_sum); BigDecimal ss = m_sum.multiply(m_sum);
ss = ss.divide(count, 4, BigDecimal.ROUND_HALF_UP); ss = ss.divide(count, 10, BigDecimal.ROUND_HALF_UP);
BigDecimal variance = m_sumSquare.subtract(ss); BigDecimal variance = m_sumSquare.subtract(ss).divide(count, 10, BigDecimal.ROUND_HALF_UP);
if (function == F_VARIANCE) if (function == F_VARIANCE)
{ {
if (variance.scale() > 4) if (variance.scale() > 4)

View File

@ -474,7 +474,7 @@ public class VSetup extends CPanel
m_frame.setBusyTimer(45); m_frame.setBusyTimer(45);
// Step 1 // Step 1
boolean ok = ms.createClient(fClientName.getText(), fOrgValue.getText(), fOrgName.getText(), boolean ok = ms.createClient(fClientName.getText(), fOrgValue.getText(), fOrgName.getText(),
fUserClient.getText(), fUserOrg.getText(), null, null, null, null, null, null, null); // this form is not used fUserClient.getText(), fUserOrg.getText(), null, null, null, null, null, null, null, true); // this form is not used
String info = ms.getInfo(); String info = ms.getInfo();
if (ok) if (ok)

View File

@ -413,6 +413,7 @@ public class WBOMDrop extends ADForm implements EventListener<Event>
this.appendChild(confirmPanel); this.appendChild(confirmPanel);
this.appendChild(new Separator()); this.appendChild(new Separator());
this.setBorder("normal"); this.setBorder("normal");
this.setContentStyle("overflow: auto");
Caption title = new Caption(Msg.getMsg(Env.getCtx(), "SelectProduct")); Caption title = new Caption(Msg.getMsg(Env.getCtx(), "SelectProduct"));
@ -467,6 +468,17 @@ public class WBOMDrop extends ADForm implements EventListener<Event>
} }
}); });
// 2nd sort by Line Number in order to correspond with BOM Structure, patch 2015-03-31
Arrays.sort(bomLines, new Comparator<MProductBOM>() {
@Override
public int compare(MProductBOM arg0, MProductBOM arg1) {
String t1 = String.valueOf(arg0.getLine()+100000);
String t2 = String.valueOf(arg1.getLine()+100000);
return t1.compareTo(t2);
}
});
for (int i = 0; i < bomLines.length; i++) for (int i = 0; i < bomLines.length; i++)
{ {
addBOMLine (bomLines[i], qty, parentPanel, bomLevel); addBOMLine (bomLines[i], qty, parentPanel, bomLevel);
@ -592,7 +604,8 @@ public class WBOMDrop extends ADForm implements EventListener<Event>
if (MProductBOM.BOMTYPE_StandardPart.equals(bomType) || MProductBOM.BOMTYPE_OptionalPart.equals(bomType)) { if (MProductBOM.BOMTYPE_StandardPart.equals(bomType) || MProductBOM.BOMTYPE_OptionalPart.equals(bomType)) {
outerContainer.appendChild(outerProductPanel); outerContainer.appendChild(outerProductPanel);
} else { } else {
String groupName = String.valueOf(parentM_Product_ID) + "_" + bomType; // String groupName = String.valueOf(parentM_Product_ID) + "_" + bomType;
String groupName = String.valueOf(parentM_Product_ID) + "_" + bomType + "_" + parentPanel.toString();
Radiogroup group = m_buttonGroups.get(groupName); Radiogroup group = m_buttonGroups.get(groupName);
if (group == null) { if (group == null) {

View File

@ -17,6 +17,7 @@ package org.adempiere.webui.apps.form;
import java.util.logging.Level; import java.util.logging.Level;
import org.adempiere.exceptions.AdempiereException; import org.adempiere.exceptions.AdempiereException;
import org.adempiere.webui.component.Checkbox;
import org.adempiere.webui.component.Column; import org.adempiere.webui.component.Column;
import org.adempiere.webui.component.ConfirmPanel; import org.adempiere.webui.component.ConfirmPanel;
import org.adempiere.webui.component.Grid; import org.adempiere.webui.component.Grid;
@ -75,6 +76,7 @@ public class WResetPassword implements IFormController, EventListener<Event>, Va
private Textbox txtOldPassword; private Textbox txtOldPassword;
private Textbox txtNewPassword; private Textbox txtNewPassword;
private Textbox txtRetypeNewPassword; private Textbox txtRetypeNewPassword;
private Checkbox cbForceChangeNextLogin;
private Textbox txtNewEMail; private Textbox txtNewEMail;
private Textbox txtNewEMailUser; private Textbox txtNewEMailUser;
private Textbox txtNewEMailUserPW; private Textbox txtNewEMailUserPW;
@ -144,7 +146,11 @@ public class WResetPassword implements IFormController, EventListener<Event>, Va
txtRetypeNewPassword.setType("password"); txtRetypeNewPassword.setType("password");
txtRetypeNewPassword.setCols(25); txtRetypeNewPassword.setCols(25);
txtRetypeNewPassword.setWidth("220px"); txtRetypeNewPassword.setWidth("220px");
cbForceChangeNextLogin = new Checkbox();
cbForceChangeNextLogin.setLabel(Msg.getMsg(Env.getCtx(), "ForceChangeOnNextLogin"));
cbForceChangeNextLogin.setChecked(false);
txtNewEMail = new Textbox(); txtNewEMail = new Textbox();
txtNewEMail.setId("txtNewEMail"); txtNewEMail.setId("txtNewEMail");
txtNewEMail.setCols(25); txtNewEMail.setCols(25);
@ -209,6 +215,11 @@ public class WResetPassword implements IFormController, EventListener<Event>, Va
row.appendChild(lblRetypeNewPassword.rightAlign()); row.appendChild(lblRetypeNewPassword.rightAlign());
row.appendChild(txtRetypeNewPassword); row.appendChild(txtRetypeNewPassword);
row = new Row();
rows.appendChild(row);
row.appendChild(new Label());
row.appendChild(cbForceChangeNextLogin);
row = new Row(); row = new Row();
rows.appendChild(row); rows.appendChild(row);
row.appendChild(lblNewEMail.rightAlign()); row.appendChild(lblNewEMail.rightAlign());
@ -327,6 +338,8 @@ public class WResetPassword implements IFormController, EventListener<Event>, Va
user.setEMailUser(p_NewEMailUser); user.setEMailUser(p_NewEMailUser);
if (!Util.isEmpty(p_NewEMailUserPW)) if (!Util.isEmpty(p_NewEMailUserPW))
user.setEMailUserPW(p_NewEMailUserPW); user.setEMailUserPW(p_NewEMailUserPW);
if (cbForceChangeNextLogin.isChecked())
user.setIsExpired(true);
try { try {
user.saveEx(); user.saveEx();