IDEMPIERE-570 Doc_Production - production posting problems

This commit is contained in:
Carlos Ruiz 2013-04-23 22:14:02 -05:00
parent 234b3caa2a
commit 516b6893c2
12 changed files with 108 additions and 63 deletions

View File

@ -0,0 +1,28 @@
-- Apr 23, 2013 8:44:22 PM COT
-- IDEMPIERE-570 Doc_Production - production posting problems
UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2013-04-23 20:44:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=3609
;
-- Apr 23, 2013 8:44:35 PM COT
UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2013-04-23 20:44:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=6537
;
-- Apr 23, 2013 8:44:57 PM COT
UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2013-04-23 20:44:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=59961
;
-- Apr 23, 2013 8:45:05 PM COT
UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_DATE('2013-04-23 20:45:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=4752
;
-- Apr 23, 2013 9:08:12 PM COT
UPDATE AD_Table SET AccessLevel='1',Updated=TO_DATE('2013-04-23 21:08:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Table_ID=325
;
-- Apr 23, 2013 9:08:21 PM COT
UPDATE AD_Table SET AccessLevel='1',Updated=TO_DATE('2013-04-23 21:08:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Table_ID=326
;
SELECT register_migration_script('201304232046_IDEMPIERE-570.sql') FROM dual
;

View File

@ -0,0 +1,28 @@
-- Apr 23, 2013 8:44:22 PM COT
-- IDEMPIERE-570 Doc_Production - production posting problems
UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2013-04-23 20:44:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=3609
;
-- Apr 23, 2013 8:44:35 PM COT
UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2013-04-23 20:44:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=6537
;
-- Apr 23, 2013 8:44:57 PM COT
UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2013-04-23 20:44:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=59961
;
-- Apr 23, 2013 8:45:05 PM COT
UPDATE AD_Column SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2013-04-23 20:45:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=4752
;
-- Apr 23, 2013 9:08:12 PM COT
UPDATE AD_Table SET AccessLevel='1',Updated=TO_DATE('2013-04-23 21:08:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Table_ID=325
;
-- Apr 23, 2013 9:08:21 PM COT
UPDATE AD_Table SET AccessLevel='1',Updated=TO_DATE('2013-04-23 21:08:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Table_ID=326
;
SELECT register_migration_script('201304232046_IDEMPIERE-570.sql') FROM dual
;

View File

@ -19,7 +19,7 @@
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc}"/> <stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc}"/>
<stringAttribute key="pde.version" value="3.3"/> <stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.adempiere.server.server_product"/> <stringAttribute key="product" value="org.adempiere.server.server_product"/>
<stringAttribute key="selected_target_plugins" value="com.springsource.javax.ejb@default:default,com.springsource.javax.jms@default:default,com.springsource.javax.mail@default:default,com.springsource.javax.management.j2ee@default:default,com.springsource.javax.persistence@default:default,com.springsource.javax.transaction@default:default,com.springsource.javax.xml.rpc@default:default,com.springsource.javax.xml.soap@default:default,com.springsource.net.sf.cglib@default:default,com.springsource.org.aopalliance@default:default,com.springsource.org.apache.activemq@default:default,com.springsource.org.apache.commons.logging@default:default,com.springsource.org.apache.kahadb@default:default,javax.el@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.ant@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.poi@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.junit@default:default,org.restlet.ext.net@default:default,org.restlet@default:default,org.springframework.aop@default:default,org.springframework.beans@default:default,org.springframework.context@default:default,org.springframework.core@default:default"/> <stringAttribute key="selected_target_plugins" value="com.springsource.javax.ejb@default:default,com.springsource.javax.jms@default:default,com.springsource.javax.mail@default:default,com.springsource.javax.management.j2ee@default:default,com.springsource.javax.persistence@default:default,com.springsource.javax.transaction@default:default,com.springsource.javax.xml.rpc@default:default,com.springsource.javax.xml.soap@default:default,com.springsource.net.sf.cglib@default:default,com.springsource.org.aopalliance@default:default,com.springsource.org.apache.activemq@default:default,com.springsource.org.apache.commons.logging@default:default,com.springsource.org.apache.kahadb@default:default,javax.el@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.ant@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.poi@default:default,org.apache.xerces@default:default,org.apache.xml.resolver@default:default,org.apache.xml.serializer@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.junit@default:default,org.restlet.ext.net@default:default,org.restlet.ext.ssl@default:default,org.restlet@default:default,org.springframework.aop@default:default,org.springframework.beans@default:default,org.springframework.context@default:default,org.springframework.core@default:default"/>
<stringAttribute key="selected_workspace_plugins" value="org.adempiere.base@default:default,org.adempiere.eclipse.equinox.http.servlet@default:default,org.adempiere.eclipse.equinox.http.servletbridge@default:default,org.adempiere.eclipse.equinox.servletbridge@default:default,org.adempiere.extend@default:false,org.adempiere.install@default:default,org.adempiere.plugin.utils@default:default,org.apache.ecs@default:default,org.compiere.db.oracle.provider@default:default,org.compiere.db.postgresql.provider@default:default,org.idempiere.fitrecorder@default:default,org.w3c.dom.fragment@default:false"/> <stringAttribute key="selected_workspace_plugins" value="org.adempiere.base@default:default,org.adempiere.eclipse.equinox.http.servlet@default:default,org.adempiere.eclipse.equinox.http.servletbridge@default:default,org.adempiere.eclipse.equinox.servletbridge@default:default,org.adempiere.extend@default:false,org.adempiere.install@default:default,org.adempiere.plugin.utils@default:default,org.apache.ecs@default:default,org.compiere.db.oracle.provider@default:default,org.compiere.db.postgresql.provider@default:default,org.idempiere.fitrecorder@default:default,org.w3c.dom.fragment@default:false"/>
<booleanAttribute key="show_selected_only" value="false"/> <booleanAttribute key="show_selected_only" value="false"/>
<stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/> <stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>

View File

@ -46,6 +46,7 @@ import org.eevolution.model.MPPProductBOMLine;
* @author victor.perez@e-evolution.com * @author victor.perez@e-evolution.com
* @contributor: Carlos Ruiz (globalqss) - review backward compatibility - implement mustBeStocked properly * @contributor: Carlos Ruiz (globalqss) - review backward compatibility - implement mustBeStocked properly
*/ */
@Deprecated // replaced by ProductionProcess
public class M_Production_Run extends SvrProcess { public class M_Production_Run extends SvrProcess {
/** The Record */ /** The Record */

View File

@ -3,6 +3,7 @@ package org.compiere.process;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.logging.Level; import java.util.logging.Level;
import org.compiere.model.MClient;
import org.compiere.model.MProduction; import org.compiere.model.MProduction;
import org.compiere.model.MProductionLine; import org.compiere.model.MProductionLine;
import org.compiere.util.AdempiereSystemError; import org.compiere.util.AdempiereSystemError;
@ -84,7 +85,14 @@ public class ProductionProcess extends SvrProcess {
m_production.setProcessed(true); m_production.setProcessed(true);
m_production.saveEx(get_TrxName()); m_production.saveEx(get_TrxName());
StringBuilder msgreturn = new StringBuilder().append(processed).append(" production lines were processed");
/* Immediate accounting */
if (MClient.isClientAccountingImmediate()) {
@SuppressWarnings("unused")
String ignoreError = DocumentEngine.postImmediate(getCtx(), getAD_Client_ID(), m_production.get_Table_ID(), m_production.get_ID(), true, get_TrxName());
}
StringBuilder msgreturn = new StringBuilder("@Processed@ #").append(processed);
return msgreturn.toString(); return msgreturn.toString();
} }

View File

@ -520,12 +520,6 @@ public abstract class Doc
p_Status = postLogic (); p_Status = postLogic ();
} }
} }
catch (AverageCostingNegativeQtyException e)
{
if (log.isLoggable(Level.INFO))log.log(Level.INFO, e.getLocalizedMessage(), e);
p_Status = STATUS_NotPosted;
p_Error = e.toString();
}
catch (Exception e) catch (Exception e)
{ {
log.log(Level.SEVERE, "", e); log.log(Level.SEVERE, "", e);

View File

@ -157,59 +157,45 @@ public class Doc_Production extends Doc
// Calculate Costs // Calculate Costs
BigDecimal costs = null; BigDecimal costs = null;
/* adaxa-pb don't use cost details
// MZ Goodwill // MZ Goodwill
// if Production CostDetail exist then get Cost from Cost Detail // if Production CostDetail exist then get Cost from Cost Detail
MCostDetail cd = MCostDetail.get (as.getCtx(), "M_ProductionLine_ID=?", MCostDetail cd = MCostDetail.get (as.getCtx(), "M_ProductionLine_ID=?",
line.get_ID(), line.getM_AttributeSetInstance_ID(), as.getC_AcctSchema_ID(), getTrxName()); line.get_ID(), line.getM_AttributeSetInstance_ID(), as.getC_AcctSchema_ID(), getTrxName());
if (cd != null) if (cd != null) {
costs = cd.getAmt(); costs = cd.getAmt();
else } else {
*/
{
int variedHeader = 0;
BigDecimal variance = null;
costs = line.getProductCosts(as, line.getAD_Org_ID(), false); costs = line.getProductCosts(as, line.getAD_Org_ID(), false);
if (line.isProductionBOM() && line.getM_Production_ID() != variedHeader ) }
if (line.isProductionBOM())
{
// Get BOM Cost - Sum of individual lines
BigDecimal bomCost = Env.ZERO;
for (int ii = 0; ii < p_lines.length; ii++)
{ {
// Get BOM Cost - Sum of individual lines DocLine line0 = p_lines[ii];
BigDecimal bomCost = Env.ZERO; if (line0.getM_Production_ID() != line.getM_Production_ID())
for (int ii = 0; ii < p_lines.length; ii++) continue;
{ //pb changed this 20/10/06
DocLine line0 = p_lines[ii]; if (!line0.isProductionBOM())
if (line0.getM_Production_ID() != line.getM_Production_ID())
continue;
//pb changed this 20/10/06
if (!line0.isProductionBOM())
bomCost = bomCost.add(line0.getProductCosts(as, line.getAD_Org_ID(), false).setScale(2,BigDecimal.ROUND_HALF_UP)); bomCost = bomCost.add(line0.getProductCosts(as, line.getAD_Org_ID(), false).setScale(2,BigDecimal.ROUND_HALF_UP));
}
variance = (costs.setScale(2,BigDecimal.ROUND_HALF_UP)).subtract(bomCost.negate());
//TODO use currency precision instead of hardcoded 2
// get variance account
int validCombination = MAcctSchemaDefault.get(getCtx(),
as.get_ID()).getP_RateVariance_Acct();
MAccount base = MAccount.get(getCtx(), validCombination);
MAccount account = MAccount.get(getCtx(),as.getAD_Client_ID(),as.getAD_Org_ID(),
as.get_ID(), base.getAccount_ID(), 0,0,0,0,0,0,0,0,0,0,0,0,0,0);
//
// only post variance if it's not zero
if (variance.signum() != 0)
{
//post variance
fl = fact.createLine(line,
account,
as.getC_Currency_ID(), variance.negate());
if (fl == null)
{
p_Error = "Couldn't post variance " + line.getLine() + " - " + line;
return null;
}
fl.setQty(Env.ZERO);
}
// costs = bomCost.negate();
} }
else int precision = as.getStdPrecision();
costs = line.getProductCosts(as, line.getAD_Org_ID(), false); BigDecimal variance = (costs.setScale(precision, BigDecimal.ROUND_HALF_UP)).subtract(bomCost.negate());
// only post variance if it's not zero
if (variance.signum() != 0)
{
//post variance
fl = fact.createLine(line,
line.getAccount(ProductCost.ACCTTYPE_P_RateVariance, as),
as.getC_Currency_ID(), variance.negate());
if (fl == null)
{
p_Error = "Couldn't post variance " + line.getLine() + " - " + line;
return null;
}
fl.setQty(Env.ZERO);
}
// costs = bomCost.negate();
} }
// end MZ // end MZ

View File

@ -35,9 +35,9 @@ public interface I_M_Production
KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name); KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name);
/** AccessLevel = 3 - Client - Org /** AccessLevel = 1 - Org
*/ */
BigDecimal accessLevel = BigDecimal.valueOf(3); BigDecimal accessLevel = BigDecimal.valueOf(1);
/** Load Meta Data */ /** Load Meta Data */

View File

@ -35,9 +35,9 @@ public interface I_M_ProductionLine
KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name); KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name);
/** AccessLevel = 3 - Client - Org /** AccessLevel = 1 - Org
*/ */
BigDecimal accessLevel = BigDecimal.valueOf(3); BigDecimal accessLevel = BigDecimal.valueOf(1);
/** Load Meta Data */ /** Load Meta Data */

View File

@ -178,15 +178,15 @@ public class MCost extends X_M_Cost
+ ", CostingMethod=" + cm + ", CostingMethod=" + cm
+ ", Percent=" + percent); + ", Percent=" + percent);
// //
if (currentCostPrice.signum() != 0 || currentCostPriceLL.signum() != 0) if (currentCostPrice != null && currentCostPrice.signum() != 0)
{ {
if (cm != null) if (cm != null)
{ {
materialCostEach = materialCostEach.add(currentCostPrice).add(currentCostPriceLL); materialCostEach = materialCostEach.add(currentCostPrice);
} }
else else
{ {
otherCostEach = otherCostEach.add(currentCostPrice).add(currentCostPriceLL); otherCostEach = otherCostEach.add(currentCostPrice);
} }
} }
if (percent != null && percent.signum() != 0) if (percent != null && percent.signum() != 0)

View File

@ -33,7 +33,7 @@ public class X_M_Production extends PO implements I_M_Production, I_Persistent
/** /**
* *
*/ */
private static final long serialVersionUID = 20130317L; private static final long serialVersionUID = 20130423L;
/** Standard Constructor */ /** Standard Constructor */
public X_M_Production (Properties ctx, int M_Production_ID, String trxName) public X_M_Production (Properties ctx, int M_Production_ID, String trxName)
@ -63,7 +63,7 @@ public class X_M_Production extends PO implements I_M_Production, I_Persistent
} }
/** AccessLevel /** AccessLevel
* @return 3 - Client - Org * @return 1 - Org
*/ */
protected int get_AccessLevel() protected int get_AccessLevel()
{ {

View File

@ -32,7 +32,7 @@ public class X_M_ProductionLine extends PO implements I_M_ProductionLine, I_Pers
/** /**
* *
*/ */
private static final long serialVersionUID = 20121031L; private static final long serialVersionUID = 20130423L;
/** Standard Constructor */ /** Standard Constructor */
public X_M_ProductionLine (Properties ctx, int M_ProductionLine_ID, String trxName) public X_M_ProductionLine (Properties ctx, int M_ProductionLine_ID, String trxName)
@ -60,7 +60,7 @@ public class X_M_ProductionLine extends PO implements I_M_ProductionLine, I_Pers
} }
/** AccessLevel /** AccessLevel
* @return 3 - Client - Org * @return 1 - Org
*/ */
protected int get_AccessLevel() protected int get_AccessLevel()
{ {