use of org.compiere.model.MRMALine in project adempiere by adempiere.
the class RMACreateOrder method doIt.
@Override
protected String doIt() throws Exception {
// Load RMA
MRMA rma = new MRMA(getCtx(), rmaId, get_TrxName());
// Load Original Order
MOrder originalOrder = rma.getOriginalOrder();
if (rma.get_ID() == 0) {
throw new Exception("No RMA defined");
}
if (originalOrder == null) {
throw new Exception("Could not load the original order");
}
// Create new order and set the different values based on original order/RMA doc
MOrder order = new MOrder(getCtx(), 0, get_TrxName());
order.setAD_Org_ID(rma.getAD_Org_ID());
order.setC_BPartner_ID(originalOrder.getC_BPartner_ID());
order.setC_BPartner_Location_ID(originalOrder.getC_BPartner_Location_ID());
order.setAD_User_ID(originalOrder.getAD_User_ID());
order.setBill_BPartner_ID(originalOrder.getBill_BPartner_ID());
order.setBill_Location_ID(originalOrder.getBill_Location_ID());
order.setBill_User_ID(originalOrder.getBill_User_ID());
order.setSalesRep_ID(rma.getSalesRep_ID());
order.setM_PriceList_ID(originalOrder.getM_PriceList_ID());
order.setIsSOTrx(originalOrder.isSOTrx());
order.setM_Warehouse_ID(originalOrder.getM_Warehouse_ID());
order.setC_DocTypeTarget_ID(originalOrder.getC_DocTypeTarget_ID());
order.setC_PaymentTerm_ID(originalOrder.getC_PaymentTerm_ID());
order.setDeliveryRule(originalOrder.getDeliveryRule());
if (!order.save()) {
throw new IllegalStateException("Could not create order");
}
MRMALine[] lines = rma.getLines(true);
for (MRMALine line : lines) {
if (line.getShipLine() != null && line.getShipLine().getC_OrderLine_ID() != 0) {
// Create order lines if the RMA Doc line has a shipment line
MOrderLine orderLine = new MOrderLine(order);
MOrderLine originalOLine = new MOrderLine(getCtx(), line.getShipLine().getC_OrderLine_ID(), null);
orderLine.setAD_Org_ID(line.getAD_Org_ID());
orderLine.setM_Product_ID(originalOLine.getM_Product_ID());
orderLine.setM_AttributeSetInstance_ID(originalOLine.getM_AttributeSetInstance_ID());
orderLine.setC_UOM_ID(originalOLine.getC_UOM_ID());
orderLine.setC_Tax_ID(originalOLine.getC_Tax_ID());
orderLine.setM_Warehouse_ID(originalOLine.getM_Warehouse_ID());
orderLine.setC_Currency_ID(originalOLine.getC_Currency_ID());
orderLine.setQty(line.getQty());
orderLine.setC_Project_ID(originalOLine.getC_Project_ID());
orderLine.setC_Activity_ID(originalOLine.getC_Activity_ID());
orderLine.setC_Campaign_ID(originalOLine.getC_Campaign_ID());
orderLine.setPrice();
orderLine.setPrice(line.getAmt());
if (!orderLine.save()) {
throw new IllegalStateException("Could not create Order Line");
}
}
}
rma.setC_Order_ID(order.getC_Order_ID());
if (!rma.save()) {
throw new IllegalStateException("Could not update RMA document");
}
return "Order Created: " + order.getDocumentNo();
}
use of org.compiere.model.MRMALine in project adempiere by adempiere.
the class InOutGenerateRMA method createShipmentLines.
private MInOutLine[] createShipmentLines(MRMA rma, MInOut shipment) {
ArrayList<MInOutLine> shipLineList = new ArrayList<MInOutLine>();
MRMALine[] rmaLines = rma.getLines(true);
for (MRMALine rmaLine : rmaLines) {
if (rmaLine.getM_InOutLine_ID() != 0) {
MInOutLine shipLine = new MInOutLine(shipment);
shipLine.setM_RMALine_ID(rmaLine.get_ID());
shipLine.setLine(rmaLine.getLine());
shipLine.setDescription(rmaLine.getDescription());
shipLine.setM_Product_ID(rmaLine.getM_Product_ID());
shipLine.setM_AttributeSetInstance_ID(rmaLine.getM_AttributeSetInstance_ID());
shipLine.setC_UOM_ID(rmaLine.getC_UOM_ID());
shipLine.setQty(rmaLine.getQty());
shipLine.setM_Locator_ID(rmaLine.getM_Locator_ID());
shipLine.setC_Project_ID(rmaLine.getC_Project_ID());
shipLine.setC_Campaign_ID(rmaLine.getC_Campaign_ID());
shipLine.setC_Activity_ID(rmaLine.getC_Activity_ID());
shipLine.setC_ProjectPhase_ID(rmaLine.getC_ProjectPhase_ID());
shipLine.setC_ProjectTask_ID(rmaLine.getC_ProjectTask_ID());
shipLine.setUser1_ID(rmaLine.getUser1_ID());
shipLine.setUser2_ID(rmaLine.getUser2_ID());
shipLine.setUser3_ID(rmaLine.getUser3_ID());
shipLine.setUser4_ID(rmaLine.getUser4_ID());
shipLine.saveEx();
shipLineList.add(shipLine);
//
// Link to corresponding Invoice Line (if any) - teo_sarca [ 2818523 ]
// The MMatchInv records will be automatically generated on MInOut.completeIt()
MInvoiceLine invoiceLine = new Query(shipment.getCtx(), I_C_InvoiceLine.Table_Name, I_C_InvoiceLine.COLUMNNAME_M_RMALine_ID + "=?", shipment.get_TrxName()).setParameters(rmaLine.getM_RMALine_ID()).firstOnly();
if (invoiceLine != null) {
invoiceLine.setM_InOutLine_ID(shipLine.getM_InOutLine_ID());
invoiceLine.saveEx();
}
}
}
MInOutLine[] shipLines = new MInOutLine[shipLineList.size()];
shipLineList.toArray(shipLines);
return shipLines;
}
use of org.compiere.model.MRMALine in project adempiere by adempiere.
the class InvoiceGenerateRMA method createInvoiceLines.
private MInvoiceLine[] createInvoiceLines(MRMA rma, MInvoice invoice) {
ArrayList<MInvoiceLine> invLineList = new ArrayList<MInvoiceLine>();
MRMALine[] rmaLines = rma.getLines(true);
for (MRMALine rmaLine : rmaLines) {
if (rmaLine.getM_InOutLine_ID() == 0) {
throw new IllegalStateException("No customer return line - RMA = " + rma.getDocumentNo() + ", Line = " + rmaLine.getLine());
}
MInvoiceLine invLine = new MInvoiceLine(invoice);
invLine.setRMALine(rmaLine);
if (!invLine.save()) {
throw new IllegalStateException("Could not create invoice line");
}
invLineList.add(invLine);
}
MInvoiceLine[] invLines = new MInvoiceLine[invLineList.size()];
invLineList.toArray(invLines);
return invLines;
}
use of org.compiere.model.MRMALine in project adempiere by adempiere.
the class CreateFromShipment method save.
/**
* Save - Create Invoice Lines
* @return true if saved
*/
public boolean save(IMiniTable miniTable, String trxName) {
/*
dataTable.stopEditor(true);
log.config("");
TableModel model = dataTable.getModel();
int rows = model.getRowCount();
if (rows == 0)
return false;
//
Integer defaultLoc = (Integer) locatorField.getValue();
if (defaultLoc == null || defaultLoc.intValue() == 0) {
locatorField.setBackground(AdempierePLAF.getFieldBackground_Error());
return false;
}
*/
int M_Locator_ID = defaultLocator_ID;
if (M_Locator_ID == 0) {
return false;
}
// Get Shipment
MInOut inout = new MInOut(Env.getCtx(), m_Record_ID, trxName);
log.config(inout + ", C_Locator_ID=" + M_Locator_ID);
// Lines
for (int i = 0; i < miniTable.getRowCount(); i++) {
if (((Boolean) miniTable.getValueAt(i, 0)).booleanValue()) {
// variable values
// Qty
BigDecimal QtyEntered = (BigDecimal) miniTable.getValueAt(i, 1);
// UOM
KeyNamePair pp = (KeyNamePair) miniTable.getValueAt(i, 2);
int C_UOM_ID = pp.getKey();
// Locator
pp = (KeyNamePair) miniTable.getValueAt(i, 3);
// If a locator is specified on the product, choose that otherwise default locator
M_Locator_ID = pp != null && pp.getKey() != 0 ? pp.getKey() : defaultLocator_ID;
// Product
pp = (KeyNamePair) miniTable.getValueAt(i, 4);
int M_Product_ID = pp.getKey();
int C_OrderLine_ID = 0;
// OrderLine
pp = (KeyNamePair) miniTable.getValueAt(i, 6);
if (pp != null)
C_OrderLine_ID = pp.getKey();
int M_RMALine_ID = 0;
// RMA
pp = (KeyNamePair) miniTable.getValueAt(i, 7);
// If we have RMA
if (pp != null)
M_RMALine_ID = pp.getKey();
int C_InvoiceLine_ID = 0;
MInvoiceLine il = null;
// InvoiceLine
pp = (KeyNamePair) miniTable.getValueAt(i, 8);
if (pp != null)
C_InvoiceLine_ID = pp.getKey();
if (C_InvoiceLine_ID != 0)
il = new MInvoiceLine(Env.getCtx(), C_InvoiceLine_ID, trxName);
//boolean isInvoiced = (C_InvoiceLine_ID != 0);
// Precision of Qty UOM
int precision = 2;
if (M_Product_ID != 0) {
MProduct product = MProduct.get(Env.getCtx(), M_Product_ID);
precision = product.getUOMPrecision();
}
QtyEntered = QtyEntered.setScale(precision, BigDecimal.ROUND_HALF_DOWN);
//
log.fine("Line QtyEntered=" + QtyEntered + ", Product=" + M_Product_ID + ", OrderLine=" + C_OrderLine_ID + ", InvoiceLine=" + C_InvoiceLine_ID);
// Credit Memo - negative Qty
if (m_invoice != null && m_invoice.isCreditMemo())
QtyEntered = QtyEntered.negate();
// Create new InOut Line
MInOutLine iol = new MInOutLine(inout);
// Line UOM
iol.setM_Product_ID(M_Product_ID, C_UOM_ID);
// Movement/Entered
iol.setQty(QtyEntered);
//
MOrderLine ol = null;
MRMALine rmal = null;
if (C_OrderLine_ID != 0) {
iol.setC_OrderLine_ID(C_OrderLine_ID);
ol = new MOrderLine(Env.getCtx(), C_OrderLine_ID, trxName);
if (ol.getQtyEntered().compareTo(ol.getQtyOrdered()) != 0) {
iol.setMovementQty(QtyEntered.multiply(ol.getQtyOrdered()).divide(ol.getQtyEntered(), 12, BigDecimal.ROUND_HALF_UP));
iol.setC_UOM_ID(ol.getC_UOM_ID());
}
iol.setM_AttributeSetInstance_ID(ol.getM_AttributeSetInstance_ID());
iol.setDescription(ol.getDescription());
//
iol.setC_Project_ID(ol.getC_Project_ID());
iol.setC_ProjectPhase_ID(ol.getC_ProjectPhase_ID());
iol.setC_ProjectTask_ID(ol.getC_ProjectTask_ID());
iol.setC_Activity_ID(ol.getC_Activity_ID());
iol.setC_Campaign_ID(ol.getC_Campaign_ID());
iol.setAD_OrgTrx_ID(ol.getAD_OrgTrx_ID());
iol.setUser1_ID(ol.getUser1_ID());
iol.setUser2_ID(ol.getUser2_ID());
iol.setUser3_ID(ol.getUser3_ID());
iol.setUser4_ID(ol.getUser4_ID());
} else if (il != null) {
if (il.getQtyEntered().compareTo(il.getQtyInvoiced()) != 0) {
iol.setQtyEntered(QtyEntered.multiply(il.getQtyInvoiced()).divide(il.getQtyEntered(), 12, BigDecimal.ROUND_HALF_UP));
iol.setC_UOM_ID(il.getC_UOM_ID());
}
iol.setDescription(il.getDescription());
iol.setC_Project_ID(il.getC_Project_ID());
iol.setC_ProjectPhase_ID(il.getC_ProjectPhase_ID());
iol.setC_ProjectTask_ID(il.getC_ProjectTask_ID());
iol.setC_Activity_ID(il.getC_Activity_ID());
iol.setC_Campaign_ID(il.getC_Campaign_ID());
iol.setAD_OrgTrx_ID(il.getAD_OrgTrx_ID());
iol.setUser1_ID(il.getUser1_ID());
iol.setUser2_ID(il.getUser2_ID());
iol.setUser3_ID(il.getUser3_ID());
iol.setUser4_ID(il.getUser4_ID());
} else if (M_RMALine_ID != 0) {
rmal = new MRMALine(Env.getCtx(), M_RMALine_ID, trxName);
iol.setM_RMALine_ID(M_RMALine_ID);
iol.setQtyEntered(QtyEntered);
iol.setDescription(rmal.getDescription());
iol.setM_AttributeSetInstance_ID(rmal.getM_AttributeSetInstance_ID());
iol.setC_Project_ID(rmal.getC_Project_ID());
iol.setC_ProjectPhase_ID(rmal.getC_ProjectPhase_ID());
iol.setC_ProjectTask_ID(rmal.getC_ProjectTask_ID());
iol.setC_Activity_ID(rmal.getC_Activity_ID());
iol.setAD_OrgTrx_ID(rmal.getAD_OrgTrx_ID());
iol.setUser1_ID(rmal.getUser1_ID());
iol.setUser2_ID(rmal.getUser2_ID());
iol.setUser3_ID(rmal.getUser3_ID());
iol.setUser4_ID(rmal.getUser4_ID());
}
// Charge
if (M_Product_ID == 0) {
if (// from order
ol != null && ol.getC_Charge_ID() != 0)
iol.setC_Charge_ID(ol.getC_Charge_ID());
else if (// from invoice
il != null && il.getC_Charge_ID() != 0)
iol.setC_Charge_ID(il.getC_Charge_ID());
else if (// from rma
rmal != null && rmal.getC_Charge_ID() != 0)
iol.setC_Charge_ID(rmal.getC_Charge_ID());
}
// Set locator
iol.setM_Locator_ID(M_Locator_ID);
if (!iol.save())
log.log(Level.SEVERE, "Line NOT created #" + i);
else // Create Invoice Line Link
if (il != null) {
il.setM_InOutLine_ID(iol.getM_InOutLine_ID());
il.saveEx();
}
}
// if selected
}
/**
* Update Header
* - if linked to another order/invoice/rma - remove link
* - if no link set it
*/
if (p_order != null && p_order.getC_Order_ID() != 0) {
inout.setC_Order_ID(p_order.getC_Order_ID());
inout.setAD_OrgTrx_ID(p_order.getAD_OrgTrx_ID());
inout.setC_Project_ID(p_order.getC_Project_ID());
inout.setC_Campaign_ID(p_order.getC_Campaign_ID());
inout.setC_Activity_ID(p_order.getC_Activity_ID());
inout.setUser1_ID(p_order.getUser1_ID());
inout.setUser2_ID(p_order.getUser2_ID());
inout.setUser3_ID(p_order.getUser3_ID());
inout.setUser4_ID(p_order.getUser4_ID());
if (p_order.isDropShip()) {
inout.setM_Warehouse_ID(p_order.getM_Warehouse_ID());
inout.setIsDropShip(p_order.isDropShip());
inout.setDropShip_BPartner_ID(p_order.getDropShip_BPartner_ID());
inout.setDropShip_Location_ID(p_order.getDropShip_Location_ID());
inout.setDropShip_User_ID(p_order.getDropShip_User_ID());
}
}
if (m_invoice != null && m_invoice.getC_Invoice_ID() != 0) {
if (inout.getC_Order_ID() == 0)
inout.setC_Order_ID(m_invoice.getC_Order_ID());
inout.setC_Invoice_ID(m_invoice.getC_Invoice_ID());
inout.setAD_OrgTrx_ID(m_invoice.getAD_OrgTrx_ID());
inout.setC_Project_ID(m_invoice.getC_Project_ID());
inout.setC_Campaign_ID(m_invoice.getC_Campaign_ID());
inout.setC_Activity_ID(m_invoice.getC_Activity_ID());
inout.setUser1_ID(m_invoice.getUser1_ID());
inout.setUser2_ID(m_invoice.getUser2_ID());
inout.setUser3_ID(m_invoice.getUser3_ID());
inout.setUser4_ID(m_invoice.getUser4_ID());
}
if (m_rma != null && m_rma.getM_RMA_ID() != 0) {
MInOut originalIO = m_rma.getShipment();
inout.setIsSOTrx(m_rma.isSOTrx());
inout.setC_Order_ID(0);
inout.setC_Invoice_ID(0);
inout.setM_RMA_ID(m_rma.getM_RMA_ID());
inout.setAD_OrgTrx_ID(originalIO.getAD_OrgTrx_ID());
inout.setC_Project_ID(originalIO.getC_Project_ID());
inout.setC_Campaign_ID(originalIO.getC_Campaign_ID());
inout.setC_Activity_ID(originalIO.getC_Activity_ID());
inout.setUser1_ID(originalIO.getUser1_ID());
inout.setUser2_ID(originalIO.getUser2_ID());
inout.setUser3_ID(originalIO.getUser3_ID());
inout.setUser4_ID(originalIO.getUser4_ID());
}
inout.saveEx();
return true;
}
use of org.compiere.model.MRMALine in project adempiere by adempiere.
the class CreateFromInvoice method save.
/**
* Save - Create Invoice Lines
* @return true if saved
*/
public boolean save(IMiniTable miniTable, String trxName) {
// Invoice
// Yamel Senih FR [ 114 ] get Record ID from record
MInvoice invoice = new MInvoice(Env.getCtx(), m_Record_ID, trxName);
log.config(invoice.toString());
if (p_order != null) {
// overwrite header values
invoice.setOrder(p_order);
invoice.saveEx();
}
if (m_rma != null) {
invoice.setM_RMA_ID(m_rma.getM_RMA_ID());
invoice.saveEx();
}
// Lines
for (int i = 0; i < miniTable.getRowCount(); i++) {
if (((Boolean) miniTable.getValueAt(i, 0)).booleanValue()) {
MProduct product = null;
// variable values
// 1-Qty
BigDecimal QtyEntered = (BigDecimal) miniTable.getValueAt(i, 1);
// 2-UOM
KeyNamePair pp = (KeyNamePair) miniTable.getValueAt(i, 2);
int C_UOM_ID = pp.getKey();
//
// 3-Product
pp = (KeyNamePair) miniTable.getValueAt(i, 3);
int M_Product_ID = 0;
if (pp != null)
M_Product_ID = pp.getKey();
//
int C_OrderLine_ID = 0;
// 5-OrderLine
pp = (KeyNamePair) miniTable.getValueAt(i, 5);
if (pp != null)
C_OrderLine_ID = pp.getKey();
int M_InOutLine_ID = 0;
// 6-Shipment
pp = (KeyNamePair) miniTable.getValueAt(i, 6);
if (pp != null)
M_InOutLine_ID = pp.getKey();
//
int M_RMALine_ID = 0;
// 7-RMALine
pp = (KeyNamePair) miniTable.getValueAt(i, 7);
if (pp != null)
M_RMALine_ID = pp.getKey();
// Precision of Qty UOM
int precision = 2;
if (M_Product_ID != 0) {
product = MProduct.get(Env.getCtx(), M_Product_ID);
precision = product.getUOMPrecision();
}
QtyEntered = QtyEntered.setScale(precision, BigDecimal.ROUND_HALF_DOWN);
//
log.fine("Line QtyEntered=" + QtyEntered + ", Product_ID=" + M_Product_ID + ", OrderLine_ID=" + C_OrderLine_ID + ", InOutLine_ID=" + M_InOutLine_ID);
// Create new Invoice Line
MInvoiceLine invoiceLine = new MInvoiceLine(invoice);
// Line UOM
invoiceLine.setM_Product_ID(M_Product_ID, C_UOM_ID);
// Invoiced/Entered
invoiceLine.setQty(QtyEntered);
BigDecimal QtyInvoiced = null;
if (M_Product_ID > 0 && product.getC_UOM_ID() != C_UOM_ID) {
QtyInvoiced = MUOMConversion.convertProductFrom(Env.getCtx(), M_Product_ID, C_UOM_ID, QtyEntered);
}
if (QtyInvoiced == null)
QtyInvoiced = QtyEntered;
invoiceLine.setQtyInvoiced(QtyInvoiced);
// Info
MOrderLine orderLine = null;
if (C_OrderLine_ID != 0)
orderLine = new MOrderLine(Env.getCtx(), C_OrderLine_ID, trxName);
//
MRMALine rmaLine = null;
if (M_RMALine_ID > 0)
rmaLine = new MRMALine(Env.getCtx(), M_RMALine_ID, null);
//
MInOutLine inoutLine = null;
if (M_InOutLine_ID != 0) {
inoutLine = new MInOutLine(Env.getCtx(), M_InOutLine_ID, trxName);
if (orderLine == null && inoutLine.getC_OrderLine_ID() != 0) {
C_OrderLine_ID = inoutLine.getC_OrderLine_ID();
orderLine = new MOrderLine(Env.getCtx(), C_OrderLine_ID, trxName);
}
} else if (C_OrderLine_ID > 0) {
String whereClause = "EXISTS (SELECT 1 FROM M_InOut io WHERE io.M_InOut_ID=M_InOutLine.M_InOut_ID AND io.DocStatus IN ('CO','CL'))";
MInOutLine[] lines = MInOutLine.getOfOrderLine(Env.getCtx(), C_OrderLine_ID, whereClause, trxName);
log.fine("Receipt Lines with OrderLine = #" + lines.length);
if (lines.length > 0) {
for (int j = 0; j < lines.length; j++) {
MInOutLine line = lines[j];
if (line.getQtyEntered().compareTo(QtyEntered) == 0) {
inoutLine = line;
M_InOutLine_ID = inoutLine.getM_InOutLine_ID();
break;
}
}
if (inoutLine == null) {
// first as default
inoutLine = lines[0];
M_InOutLine_ID = inoutLine.getM_InOutLine_ID();
}
}
} else if (M_RMALine_ID != 0) {
String whereClause = "EXISTS (SELECT 1 FROM M_InOut io WHERE io.M_InOut_ID=M_InOutLine.M_InOut_ID AND io.DocStatus IN ('CO','CL'))";
MInOutLine[] lines = MInOutLine.getOfRMALine(Env.getCtx(), M_RMALine_ID, whereClause, null);
log.fine("Receipt Lines with RMALine = #" + lines.length);
if (lines.length > 0) {
for (int j = 0; j < lines.length; j++) {
MInOutLine line = lines[j];
if (rmaLine.getQty().compareTo(QtyEntered) == 0) {
inoutLine = line;
M_InOutLine_ID = inoutLine.getM_InOutLine_ID();
break;
}
}
if (rmaLine == null) {
// first as default
inoutLine = lines[0];
M_InOutLine_ID = inoutLine.getM_InOutLine_ID();
}
}
}
// Shipment Info
if (inoutLine != null) {
// overwrites
invoiceLine.setShipLine(inoutLine);
} else {
log.fine("No Receipt Line");
// Order Info
if (orderLine != null) {
// overwrites
invoiceLine.setOrderLine(orderLine);
} else {
log.fine("No Order Line");
invoiceLine.setPrice();
invoiceLine.setTax();
}
//RMA Info
if (rmaLine != null) {
// overwrites
invoiceLine.setRMALine(rmaLine);
} else
log.fine("No RMA Line");
}
invoiceLine.saveEx();
}
// if selected
}
return true;
}
Aggregations