parent
241dc41d33
commit
2b1c10a816
|
|
@ -0,0 +1,272 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* This program is free software; you can redistribute it and/or modify it *
|
||||
* under the terms version 2 of the GNU General Public License as published *
|
||||
* by the Free Software Foundation. This program is distributed in the hope *
|
||||
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||
* See the GNU General Public License for more details. *
|
||||
* You should have received a copy of the GNU General Public License along *
|
||||
* with this program; if not, write to the Free Software Foundation, Inc., *
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||
* For the text or an alternative of this public license, you may reach us *
|
||||
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
||||
* or via info@compiere.org or http://www.compiere.org/license.html *
|
||||
*****************************************************************************/
|
||||
package andromedia.midsuit.doc;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.compiere.acct.Doc;
|
||||
import org.compiere.acct.DocLine;
|
||||
import org.compiere.acct.Fact;
|
||||
import org.compiere.acct.FactLine;
|
||||
import org.compiere.model.MAcctSchema;
|
||||
import org.compiere.model.MCostDetail;
|
||||
import org.compiere.model.MMovement;
|
||||
import org.compiere.model.MMovementLine;
|
||||
import org.compiere.model.MMovementLineMA;
|
||||
import org.compiere.model.MProduct;
|
||||
import org.compiere.model.ProductCost;
|
||||
import org.compiere.util.Env;
|
||||
|
||||
/**
|
||||
* Post Invoice Documents.
|
||||
* <pre>
|
||||
* Table: M_Movement (323)
|
||||
* Document Types: MMM
|
||||
* </pre>
|
||||
* @author Jorg Janke
|
||||
* @author Armen Rizal, Goodwill Consulting
|
||||
* <li>BF [ 1745154 ] Cost in Reversing Material Related Docs
|
||||
* @version $Id: Doc_Movement.java,v 1.3 2006/07/30 00:53:33 jjanke Exp $
|
||||
*/
|
||||
public class MID_DocMovement extends Doc
|
||||
{
|
||||
private int m_Reversal_ID = 0;
|
||||
@SuppressWarnings("unused")
|
||||
private String m_DocStatus = "";
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param as accounting schema
|
||||
* @param rs record
|
||||
* @param trxName trx
|
||||
*/
|
||||
public MID_DocMovement (MAcctSchema as, ResultSet rs, String trxName)
|
||||
{
|
||||
super (as, MMovement.class, rs, DOCTYPE_MatMovement, trxName);
|
||||
} // Doc_Movement
|
||||
|
||||
/**
|
||||
* Load Document Details
|
||||
* @return error message or null
|
||||
*/
|
||||
protected String loadDocumentDetails()
|
||||
{
|
||||
setC_Currency_ID(NO_CURRENCY);
|
||||
MMovement move = (MMovement)getPO();
|
||||
setDateDoc (move.getMovementDate());
|
||||
setDateAcct(move.getMovementDate());
|
||||
m_Reversal_ID = move.getReversal_ID();//store original (voided/reversed) document
|
||||
m_DocStatus = move.getDocStatus();
|
||||
// Contained Objects
|
||||
p_lines = loadLines(move);
|
||||
if (log.isLoggable(Level.FINE)) log.fine("Lines=" + p_lines.length);
|
||||
return null;
|
||||
} // loadDocumentDetails
|
||||
|
||||
/**
|
||||
* Load Invoice Line
|
||||
* @param move move
|
||||
* @return document lines (DocLine_Material)
|
||||
*/
|
||||
private DocLine[] loadLines(MMovement move)
|
||||
{
|
||||
ArrayList<DocLine> list = new ArrayList<DocLine>();
|
||||
MMovementLine[] lines = move.getLines(false);
|
||||
if(move.get_ValueAsBoolean("IsAsset"))
|
||||
return new DocLine[0];
|
||||
for (int i = 0; i < lines.length; i++)
|
||||
{
|
||||
MMovementLine line = lines[i];
|
||||
DocLine docLine = new DocLine (line, this);
|
||||
docLine.setQty(line.getMovementQty(), false);
|
||||
docLine.setReversalLine_ID(line.getReversalLine_ID());
|
||||
if (log.isLoggable(Level.FINE)) log.fine(docLine.toString());
|
||||
list.add (docLine);
|
||||
}
|
||||
|
||||
// Return Array
|
||||
DocLine[] dls = new DocLine[list.size()];
|
||||
list.toArray(dls);
|
||||
return dls;
|
||||
} // loadLines
|
||||
|
||||
/**
|
||||
* Get Balance
|
||||
* @return balance (ZERO) - always balanced
|
||||
*/
|
||||
public BigDecimal getBalance()
|
||||
{
|
||||
BigDecimal retValue = Env.ZERO;
|
||||
return retValue;
|
||||
} // getBalance
|
||||
|
||||
/**
|
||||
* Create Facts (the accounting logic) for
|
||||
* MMM.
|
||||
* <pre>
|
||||
* Movement
|
||||
* Inventory DR CR
|
||||
* InventoryTo DR CR
|
||||
* </pre>
|
||||
* @param as account schema
|
||||
* @return Fact
|
||||
*/
|
||||
public ArrayList<Fact> createFacts (MAcctSchema as)
|
||||
{
|
||||
// create Fact Header
|
||||
Fact fact = new Fact(this, as, Fact.POST_Actual);
|
||||
setC_Currency_ID(as.getC_Currency_ID());
|
||||
|
||||
// Line pointers
|
||||
FactLine dr = null;
|
||||
FactLine cr = null;
|
||||
|
||||
for (int i = 0; i < p_lines.length; i++)
|
||||
{
|
||||
DocLine line = p_lines[i];
|
||||
BigDecimal costs = null;
|
||||
|
||||
if (!isReversal(line))
|
||||
{
|
||||
MProduct product = (MProduct) line.getProduct();
|
||||
String costingLevel = product.getCostingLevel(as);
|
||||
if (MAcctSchema.COSTINGLEVEL_BatchLot.equals(costingLevel) )
|
||||
{
|
||||
if (line.getM_AttributeSetInstance_ID() == 0 )
|
||||
{
|
||||
MMovementLine mLine = (MMovementLine) line.getPO();
|
||||
MMovementLineMA mas[] = MMovementLineMA.get(getCtx(), mLine.get_ID(), getTrxName());
|
||||
if (mas != null && mas.length > 0 )
|
||||
{
|
||||
costs = BigDecimal.ZERO;
|
||||
for (int j = 0; j < mas.length; j++)
|
||||
{
|
||||
MMovementLineMA ma = mas[j];
|
||||
BigDecimal QtyMA = ma.getMovementQty();
|
||||
ProductCost pc = line.getProductCost();
|
||||
pc.setQty(QtyMA);
|
||||
pc.setM_M_AttributeSetInstance_ID(ma.getM_AttributeSetInstance_ID());
|
||||
BigDecimal maCosts = line.getProductCosts(as, line.getAD_Org_ID(), true, "M_MovementLine_ID=? AND IsSOTrx='N'");
|
||||
|
||||
costs = costs.add(maCosts);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
costs = line.getProductCosts(as, line.getAD_Org_ID(), true, "M_MovementLine_ID=? AND IsSOTrx='N'");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// MZ Goodwill
|
||||
// if Inventory Move CostDetail exist then get Cost from Cost Detail
|
||||
costs = line.getProductCosts(as, line.getAD_Org_ID(), true, "M_MovementLine_ID=? AND IsSOTrx='N'");
|
||||
// end MZ
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
costs = BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
// ** Inventory DR CR
|
||||
dr = fact.createLine(line,
|
||||
line.getAccount(ProductCost.ACCTTYPE_P_Asset, as),
|
||||
as.getC_Currency_ID(), costs.negate()); // from (-) CR
|
||||
if (dr == null)
|
||||
continue;
|
||||
dr.setM_Locator_ID(line.getM_Locator_ID());
|
||||
dr.setQty(line.getQty().negate()); // outgoing
|
||||
if (isReversal(line))
|
||||
{
|
||||
// Set AmtAcctDr from Original Movement
|
||||
if (!dr.updateReverseLine (MMovement.Table_ID,
|
||||
m_Reversal_ID, line.getReversalLine_ID(),Env.ONE))
|
||||
{
|
||||
p_Error = "Original Inventory Move not posted yet";
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// ** InventoryTo DR CR
|
||||
cr = fact.createLine(line,
|
||||
line.getAccount(ProductCost.ACCTTYPE_P_Asset, as),
|
||||
as.getC_Currency_ID(), costs); // to (+) DR
|
||||
if (cr == null)
|
||||
continue;
|
||||
cr.setM_Locator_ID(line.getM_LocatorTo_ID());
|
||||
cr.setQty(line.getQty());
|
||||
if (isReversal(line))
|
||||
{
|
||||
// Set AmtAcctCr from Original Movement
|
||||
if (!cr.updateReverseLine (MMovement.Table_ID,
|
||||
m_Reversal_ID, line.getReversalLine_ID(),Env.ONE))
|
||||
{
|
||||
p_Error = "Original Inventory Move not posted yet";
|
||||
return null;
|
||||
}
|
||||
costs = cr.getAcctBalance(); //get original cost
|
||||
}
|
||||
|
||||
// Only for between-org movements
|
||||
if (dr.getAD_Org_ID() != cr.getAD_Org_ID())
|
||||
{
|
||||
String costingLevel = line.getProduct().getCostingLevel(as);
|
||||
if (!MAcctSchema.COSTINGLEVEL_Organization.equals(costingLevel))
|
||||
continue;
|
||||
//
|
||||
String description = line.getDescription();
|
||||
if (description == null)
|
||||
description = "";
|
||||
// Cost Detail From
|
||||
if (!MCostDetail.createMovement(as, dr.getAD_Org_ID(), // locator org
|
||||
line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(),
|
||||
line.get_ID(), 0,
|
||||
costs.negate(), line.getQty().negate(), true,
|
||||
description + "(|->)", getTrxName()))
|
||||
{
|
||||
p_Error = "Failed to create cost detail record";
|
||||
return null;
|
||||
}
|
||||
// Cost Detail To
|
||||
if (!MCostDetail.createMovement(as, cr.getAD_Org_ID(), // locator org
|
||||
line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(),
|
||||
line.get_ID(), 0,
|
||||
costs, line.getQty(), false,
|
||||
description + "(|<-)", getTrxName()))
|
||||
{
|
||||
p_Error = "Failed to create cost detail record";
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
ArrayList<Fact> facts = new ArrayList<Fact>();
|
||||
facts.add(fact);
|
||||
return facts;
|
||||
} // createFact
|
||||
|
||||
private boolean isReversal(DocLine line) {
|
||||
return m_Reversal_ID !=0 && line.getReversalLine_ID() != 0;
|
||||
}
|
||||
|
||||
} // Doc_Movement
|
||||
|
|
@ -19,7 +19,9 @@ import andromedia.midsuit.doc.MID_DocDDOrder;
|
|||
import andromedia.midsuit.doc.MID_DocInvoice;
|
||||
import andromedia.midsuit.doc.MID_DocMRPPPO;
|
||||
import andromedia.midsuit.doc.MID_DocMidRequsiition;
|
||||
import andromedia.midsuit.doc.MID_DocMovement;
|
||||
import andromedia.midsuit.model.MID_Analysis;
|
||||
import andromedia.midsuit.model.MID_MMovement;
|
||||
import andromedia.midsuit.model.MID_MRequisitionTrx;
|
||||
import andromedia.midsuit.model.MID_PPO;
|
||||
|
||||
|
|
@ -69,7 +71,8 @@ public class MID_DocFactory implements IDocFactory{
|
|||
}
|
||||
if(tableName.equals(MDDOrder.Table_Name))
|
||||
return new MID_DocDDOrder(as, rs, trxName);
|
||||
|
||||
if(tableName.equals(MID_MMovement.Table_Name))
|
||||
return new MID_DocMovement(as, rs, trxName);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import java.util.Properties;
|
|||
|
||||
import org.adempiere.base.IModelFactory;
|
||||
import org.compiere.model.MMovement;
|
||||
import org.compiere.model.MMovementLine;
|
||||
import org.compiere.model.PO;
|
||||
import org.compiere.util.Env;
|
||||
|
||||
|
|
@ -69,6 +70,7 @@ public class MID_ModelFactory implements IModelFactory{
|
|||
mapTableModels.put(MID_UnrealizedRateLine.Table_Name, "andromedia.midsuit.model.MID_UnrealizedRateLine");
|
||||
mapTableModels.put(MID_MOrder.Table_Name, "andromedia.midsuit.model.MID_MOrder");
|
||||
mapTableModels.put(MMovement.Table_Name, "andromedia.midsuit.model.MID_MMovement");
|
||||
mapTableModels.put(MMovementLine.Table_Name, "andromedia.midsuit.model.MID_MMovementLine");
|
||||
mapTableModels.put(X_MID_UploadPEBLine.Table_Name, "andromedia.midsuit.model.X_MID_UploadPEBLine");
|
||||
mapTableModels.put(X_MID_UploadPEB.Table_Name, "andromedia.midsuit.model.X_MID_UploadPEB");
|
||||
mapTableModels.put(X_MID_UploadTPB.Table_Name, "andromedia.midsuit.model.X_MID_UploadTPB");
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import java.util.Properties;
|
|||
|
||||
import org.compiere.model.MMovement;
|
||||
import org.compiere.model.X_M_Movement;
|
||||
import org.compiere.process.DocAction;
|
||||
import org.compiere.util.DB;
|
||||
|
||||
public class MID_MMovement extends MMovement{
|
||||
|
|
@ -22,7 +23,26 @@ public class MID_MMovement extends MMovement{
|
|||
super(ctx, rs, trxName);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public String prepareIt() {
|
||||
if(get_ValueAsBoolean("IsAsset")) {
|
||||
setDocAction(DOCACTION_Complete);
|
||||
return DocAction.STATUS_InProgress;
|
||||
}
|
||||
|
||||
return super.prepareIt();
|
||||
}
|
||||
@Override
|
||||
public String completeIt() {
|
||||
if(get_ValueAsBoolean("IsAsset")) {
|
||||
setProcessed(true);
|
||||
setDocAction(DOCACTION_Close);
|
||||
return DocAction.STATUS_Completed;
|
||||
}
|
||||
return super.completeIt();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected boolean beforeSave(boolean newRecord) {
|
||||
if(!newRecord)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,46 @@
|
|||
package andromedia.midsuit.model;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.compiere.model.MMovement;
|
||||
import org.compiere.model.MMovementLine;
|
||||
import org.compiere.util.DB;
|
||||
|
||||
public class MID_MMovementLine extends MMovementLine{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1884915669018246342L;
|
||||
public MID_MMovementLine(MMovement parent) {
|
||||
super(parent);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
public MID_MMovementLine(Properties ctx, int M_MovementLine_ID, String trxName) {
|
||||
super(ctx, M_MovementLine_ID, trxName);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
public MID_MMovementLine(Properties ctx, ResultSet rs, String trxName) {
|
||||
super(ctx, rs, trxName);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean afterSave(boolean newRecord, boolean success) {
|
||||
if(success) {
|
||||
BigDecimal totalLines = DB.getSQLValueBD(get_TrxName(), "SELECT COALESCE(SUM(Price),0) FROM M_MovementLine WHERE M_Movement_ID =?", new Object[] { getM_Movement_ID() });
|
||||
int no = DB.executeUpdateEx("UPDATE M_Movement SET TotalLines =? WHERE M_Movement_ID =?", new Object[] { totalLines, getM_Movement_ID()},get_TrxName());
|
||||
}
|
||||
return super.afterSave(newRecord, success);
|
||||
}
|
||||
@Override
|
||||
protected boolean afterDelete(boolean success) {
|
||||
if(success) {
|
||||
BigDecimal totalLines = DB.getSQLValueBD(get_TrxName(), "SELECT COALESCE(SUM(Price),0) FROM M_MovementLine WHERE M_Movement_ID =?", new Object[] { getM_Movement_ID() });
|
||||
int no = DB.executeUpdateEx("UPDATE M_Movement SET TotalLines =? WHERE M_Movement_ID =?", new Object[] { totalLines, getM_Movement_ID()},get_TrxName());
|
||||
}
|
||||
return super.afterDelete(success);
|
||||
}
|
||||
}
|
||||
|
|
@ -43,9 +43,11 @@ public class MID_TPBUpdateOrder extends SvrProcess{
|
|||
if(line.getM_Requisition_ID()>0 && !isRetur) {
|
||||
MOrder order = createPurchaseOrder(line);
|
||||
createPurchaseOrderLine(line, order);
|
||||
line.setC_Order_ID(order.get_ID());
|
||||
}else if (line.getM_RMA_ID()>0 && isRetur) {
|
||||
MRMA RMA = createCustomerRMA(line);
|
||||
createCustomerRMALine(line, RMA);
|
||||
line.setM_RMA_ID(RMA.get_ID());
|
||||
}else {
|
||||
continue;
|
||||
}
|
||||
|
|
@ -112,8 +114,11 @@ public class MID_TPBUpdateOrder extends SvrProcess{
|
|||
retValue.setC_BPartner_Location_ID(line.getC_BPartner_Location_ID());
|
||||
retValue.setC_Currency_ID(line.getC_Currency_ID());
|
||||
retValue.setSalesRep_ID(line.getSalesRep_ID());
|
||||
retValue.setPOReference(line.getM_Requisition().getDocumentNo());
|
||||
retValue.set_ValueNoCheck("M_Requisition_ID", line.getM_Requisition_ID());
|
||||
retValue.setM_Warehouse_ID(line.getM_Warehouse_ID());
|
||||
retValue.setC_DocTypeTarget_ID(line.getC_DocTypeTarget_ID());
|
||||
retValue.setIsSOTrx(false);
|
||||
retValue.setM_PriceList_ID(line.getM_PriceList_ID());
|
||||
retValue.saveEx();
|
||||
String message = Msg.parseTranslation(getCtx(), "@PurchaseOrderCreated@ " + retValue.getDocumentNo());
|
||||
|
|
|
|||
|
|
@ -36,9 +36,11 @@ public class MID_TPBUpdateOrderLine extends SvrProcess{
|
|||
if(tpbLine.getM_Requisition_ID()>0 && !isRetur) {
|
||||
MOrder order = createPurchaseOrder(tpbLine);
|
||||
createPurchaseOrderLine(tpbLine, order);
|
||||
tpbLine.setC_Order_ID(order.get_ID());
|
||||
}else if (tpbLine.getM_RMA_ID()>0 && isRetur) {
|
||||
MRMA RMA = createCustomerRMA(tpbLine);
|
||||
createCustomerRMALine(tpbLine, RMA);
|
||||
tpbLine.setM_RMA_ID(RMA.get_ID());
|
||||
}else {
|
||||
throw new AdempiereException("Requisition / RMA Wajib diisi !!!");
|
||||
}
|
||||
|
|
@ -101,12 +103,15 @@ public class MID_TPBUpdateOrderLine extends SvrProcess{
|
|||
retValue.set_ValueNoCheck("RegisterDate", line.getRegisterDate());
|
||||
retValue.set_ValueNoCheck("RegisterNo", line.getRegisterNo());
|
||||
retValue.set_ValueNoCheck("MID_AJUDocumentType_ID", line.getMID_AJUDocumentType_ID());
|
||||
retValue.setPOReference(line.getM_Requisition().getDocumentNo());
|
||||
retValue.setC_BPartner_ID(line.getC_BPartner_ID());
|
||||
retValue.setC_BPartner_Location_ID(line.getC_BPartner_Location_ID());
|
||||
retValue.set_ValueNoCheck("M_Requisition_ID", line.getM_Requisition_ID());
|
||||
retValue.setC_Currency_ID(line.getC_Currency_ID());
|
||||
retValue.setSalesRep_ID(line.getSalesRep_ID());
|
||||
retValue.setM_Warehouse_ID(line.getM_Warehouse_ID());
|
||||
retValue.setC_DocTypeTarget_ID(line.getC_DocTypeTarget_ID());
|
||||
retValue.setIsSOTrx(false);
|
||||
retValue.setM_PriceList_ID(line.getM_PriceList_ID());
|
||||
retValue.saveEx();
|
||||
String message = Msg.parseTranslation(getCtx(), "@PurchaseOrderCreated@ " + retValue.getDocumentNo());
|
||||
|
|
|
|||
|
|
@ -61,7 +61,11 @@ public class MID_UploadTPB extends SvrProcess{
|
|||
|
||||
X_MID_UploadTPBLine line = createTPBDocumentLine(row);
|
||||
|
||||
Sheet Barang = workbook.getSheet("Barang");
|
||||
Sheet Barang = null;
|
||||
if(AJU_DocType_Value.equals("27a") || AJU_DocType_Value.equals("27b"))
|
||||
Barang = workbook.getSheet("BahanBaku");
|
||||
else
|
||||
Barang = workbook.getSheet("Barang");
|
||||
Iterator<Row> rowsBarang = Barang.rowIterator();
|
||||
int rowBarangNum = 0;
|
||||
while(rowsBarang.hasNext()){
|
||||
|
|
@ -126,6 +130,9 @@ public class MID_UploadTPB extends SvrProcess{
|
|||
if(C_Currency_ID <=0)
|
||||
throw new AdempiereException("Currency Not Found "+dataRow.getCell(88).getStringCellValue()+" !!!");
|
||||
tpbLine.setC_BPartner_ID(C_BPartner_ID);
|
||||
if(MBPartnerLocation.getForBPartner(getCtx(), C_BPartner_ID, get_TrxName())[0].getC_BPartner_Location_ID()==0) {
|
||||
throw new AdempiereException("No Location for this Business Partner !!!");
|
||||
}
|
||||
tpbLine.setC_BPartner_Location_ID(MBPartnerLocation.getForBPartner(getCtx(), C_BPartner_ID, get_TrxName())[0].getC_BPartner_Location_ID());
|
||||
tpbLine.setC_DocTypeTarget_ID(p_C_DocType_ID);
|
||||
tpbLine.setSalesRep_ID(30178);
|
||||
|
|
@ -150,7 +157,7 @@ public class MID_UploadTPB extends SvrProcess{
|
|||
BigDecimal PriceList = Env.ZERO;
|
||||
BigDecimal Discount = Env.ZERO;
|
||||
BigDecimal PriceActual = Env.ZERO;
|
||||
if(AJU_DocType_Value.equals("23") || AJU_DocType_Value.equals("40")){
|
||||
if(AJU_DocType_Value.equals("23") || AJU_DocType_Value.equals("40") || AJU_DocType_Value.equals("262")){
|
||||
M_Product_ID = DB.getSQLValue(get_TrxName(), "SELECT M_Product_ID FROM M_Product WHERE Value =?", new Object[] { rowBarang.getCell(20).getStringCellValue() });
|
||||
C_UOM_ID = DB.getSQLValue(get_TrxName(), " SELECT C_UOM_ID FROM C_UOM WHERE UOMSymbol =?", new Object[] { rowBarang.getCell(27).getStringCellValue()});
|
||||
|
||||
|
|
@ -171,19 +178,28 @@ public class MID_UploadTPB extends SvrProcess{
|
|||
}
|
||||
|
||||
|
||||
if(AJU_DocType_Value.equals("23")){
|
||||
if(AJU_DocType_Value.equals("23") || AJU_DocType_Value.equals("262")){
|
||||
Qty = new BigDecimal(rowBarang.getCell(16).getStringCellValue());
|
||||
PriceList = new BigDecimal(rowBarang.getCell(12).getStringCellValue());
|
||||
Discount = new BigDecimal(rowBarang.getCell(5).getStringCellValue());
|
||||
try {
|
||||
Discount = new BigDecimal(rowBarang.getCell(5).getStringCellValue());
|
||||
|
||||
}catch (Exception e) {
|
||||
Discount = Env.ZERO;
|
||||
}
|
||||
PriceActual = PriceList.subtract(Discount.divide(Env.ONEHUNDRED, 2,BigDecimal.ROUND_DOWN).multiply(PriceList));
|
||||
}else if (AJU_DocType_Value.equals("40")){
|
||||
Qty = new BigDecimal(rowBarang.getCell(32).getStringCellValue());
|
||||
PriceList = new BigDecimal(rowBarang.getCell(29).getStringCellValue());
|
||||
PriceList = new BigDecimal(rowBarang.getCell(11).getStringCellValue());
|
||||
PriceList = PriceList.divide(Qty,2,BigDecimal.ROUND_DOWN);
|
||||
PriceActual = PriceList;
|
||||
}else{
|
||||
Qty = new BigDecimal(rowBarang.getCell(8).getStringCellValue());
|
||||
PriceList = new BigDecimal(rowBarang.getCell(12).getStringCellValue());
|
||||
PriceActual = new BigDecimal(rowBarang.getCell(5).getStringCellValue());
|
||||
if(AJU_DocType_Value.equals("27"))
|
||||
PriceList = new BigDecimal(rowBarang.getCell(12).getStringCellValue());
|
||||
else
|
||||
PriceList = PriceActual;
|
||||
}
|
||||
|
||||
if(AJU_DocType_Value.equals("27")){
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ public class MID_InOutValidator {
|
|||
return "";
|
||||
}
|
||||
private static String beforePrepare(MInOut inOut) {
|
||||
if(inOut.getMovementType().equals(MInOut.MOVEMENTTYPE_VendorReturns) || inOut.getMovementType().equals(MInOut.MOVEMENTTYPE_CustomerReturns))
|
||||
return "";
|
||||
for(MInOutLine line : inOut.getLines()) {
|
||||
int countAttLines = new Query(inOut.getCtx(), X_M_InOutLineMA.Table_Name, "M_InOutLine_ID =?", inOut.get_TrxName())
|
||||
.setParameters(new Object[] { line.getM_InOutLine_ID() })
|
||||
|
|
|
|||
Loading…
Reference in New Issue