Process to Generate Movement from DO is Implemented
This commit is contained in:
parent
979d9c553f
commit
847fe3d1ed
base/src/org/eevolution/process
|
@ -211,13 +211,13 @@ public class MovementGenerate extends SvrProcess
|
||||||
|| (m_movement != null
|
|| (m_movement != null
|
||||||
&& (m_movement.getC_BPartner_Location_ID() != order.getC_BPartner_Location_ID()
|
&& (m_movement.getC_BPartner_Location_ID() != order.getC_BPartner_Location_ID()
|
||||||
|| m_movement.getM_Shipper_ID() != order.getM_Shipper_ID() )))
|
|| m_movement.getM_Shipper_ID() != order.getM_Shipper_ID() )))
|
||||||
completeShipment();
|
completeMovement();
|
||||||
log.fine("check: " + order + " - DeliveryRule=" + order.getDeliveryRule());
|
log.fine("check: " + order + " - DeliveryRule=" + order.getDeliveryRule());
|
||||||
//
|
//
|
||||||
Timestamp minGuaranteeDate = m_movementDate;
|
Timestamp minGuaranteeDate = m_movementDate;
|
||||||
boolean completeOrder = MDDOrder.DELIVERYRULE_CompleteOrder.equals(order.getDeliveryRule());
|
boolean completeOrder = MDDOrder.DELIVERYRULE_CompleteOrder.equals(order.getDeliveryRule());
|
||||||
// OrderLine WHERE
|
// OrderLine WHERE
|
||||||
String where = " AND M_Warehouse_ID=" + p_M_Warehouse_ID;
|
String where = " AND " + p_M_Warehouse_ID + " IN (SELECT l.M_Warehouse_ID FROM M_Locator l WHERE l.M_Locator_ID=M_Locator_ID) ";
|
||||||
if (p_DatePromised != null)
|
if (p_DatePromised != null)
|
||||||
where += " AND (TRUNC(DatePromised)<=" + DB.TO_DATE(p_DatePromised, true)
|
where += " AND (TRUNC(DatePromised)<=" + DB.TO_DATE(p_DatePromised, true)
|
||||||
+ " OR DatePromised IS NULL)";
|
+ " OR DatePromised IS NULL)";
|
||||||
|
@ -230,10 +230,10 @@ public class MovementGenerate extends SvrProcess
|
||||||
// Exclude Unconfirmed
|
// Exclude Unconfirmed
|
||||||
if (!p_IsUnconfirmedInOut)
|
if (!p_IsUnconfirmedInOut)
|
||||||
where += " AND NOT EXISTS (SELECT * FROM M_MovementLine iol"
|
where += " AND NOT EXISTS (SELECT * FROM M_MovementLine iol"
|
||||||
+ " INNER JOIN M_InOut io ON (iol.M_Movement_ID=io.M_Movement_ID) "
|
+ " INNER JOIN M_Movement io ON (iol.M_Movement_ID=io.M_Movement_ID) "
|
||||||
+ "WHERE iol.DD_OrderLine_ID=DD_OrderLine.DD_OrderLine_ID AND io.DocStatus IN ('IP','WC'))";
|
+ "WHERE iol.DD_OrderLine_ID=DD_OrderLine.DD_OrderLine_ID AND io.DocStatus IN ('IP','WC'))";
|
||||||
// Deadlock Prevention - Order by M_Product_ID
|
// Deadlock Prevention - Order by M_Product_ID
|
||||||
MDDOrderLine[] lines = order.getLines (where, "ORDER BY C_BPartner_Location_ID, M_Product_ID");
|
MDDOrderLine[] lines = order.getLines (where, "ORDER BY M_Product_ID");
|
||||||
for (int i = 0; i < lines.length; i++)
|
for (int i = 0; i < lines.length; i++)
|
||||||
{
|
{
|
||||||
MDDOrderLine line = lines[i];
|
MDDOrderLine line = lines[i];
|
||||||
|
@ -242,7 +242,8 @@ public class MovementGenerate extends SvrProcess
|
||||||
continue;
|
continue;
|
||||||
log.fine("check: " + line);
|
log.fine("check: " + line);
|
||||||
BigDecimal onHand = Env.ZERO;
|
BigDecimal onHand = Env.ZERO;
|
||||||
BigDecimal toDeliver = line.getQtyOrdered()
|
//BigDecimal toDeliver = line.getQtyOrdered()
|
||||||
|
BigDecimal toDeliver = line.getConfirmedQty()
|
||||||
.subtract(line.getQtyDelivered());
|
.subtract(line.getQtyDelivered());
|
||||||
MProduct product = line.getProduct();
|
MProduct product = line.getProduct();
|
||||||
// Nothing to Deliver
|
// Nothing to Deliver
|
||||||
|
@ -411,7 +412,7 @@ public class MovementGenerate extends SvrProcess
|
||||||
{
|
{
|
||||||
pstmt = null;
|
pstmt = null;
|
||||||
}
|
}
|
||||||
completeShipment();
|
completeMovement();
|
||||||
return "@Created@ = " + m_created;
|
return "@Created@ = " + m_created;
|
||||||
} // generate
|
} // generate
|
||||||
|
|
||||||
|
@ -430,25 +431,27 @@ public class MovementGenerate extends SvrProcess
|
||||||
{
|
{
|
||||||
// Complete last Shipment - can have multiple shipments
|
// Complete last Shipment - can have multiple shipments
|
||||||
if (m_lastC_BPartner_Location_ID != order.getC_BPartner_Location_ID() )
|
if (m_lastC_BPartner_Location_ID != order.getC_BPartner_Location_ID() )
|
||||||
completeShipment();
|
completeMovement();
|
||||||
m_lastC_BPartner_Location_ID = order.getC_BPartner_Location_ID();
|
m_lastC_BPartner_Location_ID = order.getC_BPartner_Location_ID();
|
||||||
// Create New Shipment
|
// Create New Shipment
|
||||||
if (m_movement == null)
|
if (m_movement == null)
|
||||||
{
|
{
|
||||||
m_movement = new MMovement (order, 0, m_movementDate);
|
m_movement = new MMovement (order, 0, m_movementDate);
|
||||||
//m_movement.setM_Warehouse_ID(orderLine.getM_Warehouse_ID()); // sets Org too
|
//m_movement.setM_Warehouse_ID(orderLine.getM_Warehouse_ID()); // sets Org too
|
||||||
|
m_movement.setIsInTransit(true);
|
||||||
|
m_movement.setDD_Order_ID(order.getDD_Order_ID());
|
||||||
if (order.getC_BPartner_ID() != order.getC_BPartner_ID())
|
if (order.getC_BPartner_ID() != order.getC_BPartner_ID())
|
||||||
m_movement.setC_BPartner_ID(order.getC_BPartner_ID());
|
m_movement.setC_BPartner_ID(order.getC_BPartner_ID());
|
||||||
if (order.getC_BPartner_Location_ID() != order.getC_BPartner_Location_ID())
|
if (order.getC_BPartner_Location_ID() != order.getC_BPartner_Location_ID())
|
||||||
m_movement.setC_BPartner_Location_ID(order.getC_BPartner_Location_ID());
|
m_movement.setC_BPartner_Location_ID(order.getC_BPartner_Location_ID());
|
||||||
if (!m_movement.save())
|
if (!m_movement.save())
|
||||||
throw new IllegalStateException("Could not create Shipment");
|
throw new IllegalStateException("Could not create Movement");
|
||||||
}
|
}
|
||||||
// Non Inventory Lines
|
// Non Inventory Lines
|
||||||
if (storages == null)
|
if (storages == null)
|
||||||
{
|
{
|
||||||
MMovementLine line = new MMovementLine (m_movement);
|
MMovementLine line = new MMovementLine (m_movement);
|
||||||
line.setOrderLine(orderLine, 0, Env.ZERO);
|
line.setOrderLine(orderLine, Env.ZERO, false);
|
||||||
line.setMovementQty(qty); // Correct UOM
|
line.setMovementQty(qty); // Correct UOM
|
||||||
if (orderLine.getQtyEntered().compareTo(orderLine.getQtyOrdered()) != 0)
|
if (orderLine.getQtyEntered().compareTo(orderLine.getQtyOrdered()) != 0)
|
||||||
line.setMovementQty(qty
|
line.setMovementQty(qty
|
||||||
|
@ -505,7 +508,7 @@ public class MovementGenerate extends SvrProcess
|
||||||
if (line == null) // new line
|
if (line == null) // new line
|
||||||
{
|
{
|
||||||
line = new MMovementLine (m_movement);
|
line = new MMovementLine (m_movement);
|
||||||
line.setOrderLine(orderLine, M_Locator_ID, order.isSOTrx() ? deliver : Env.ZERO);
|
line.setOrderLine(orderLine, deliver , false);
|
||||||
line.setMovementQty(deliver);
|
line.setMovementQty(deliver);
|
||||||
list.add(line);
|
list.add(line);
|
||||||
}
|
}
|
||||||
|
@ -569,7 +572,7 @@ public class MovementGenerate extends SvrProcess
|
||||||
/**
|
/**
|
||||||
* Complete Shipment
|
* Complete Shipment
|
||||||
*/
|
*/
|
||||||
private void completeShipment()
|
private void completeMovement()
|
||||||
{
|
{
|
||||||
if (m_movement != null)
|
if (m_movement != null)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue