Hi All,
I am trying to implement the Generate Movement process of Libero Distribution Module into iDempiere
The old code shows error because MStorage class is deprecated to a view instead there is two new tables MStorageOnHand and MStorageReservation
So how to modify or handle the following code
MStorage[] storages = getStorages ( l.getM_Warehouse_ID(), line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(), product.getM_AttributeSet_ID(),
line.getM_AttributeSetInstance_ID()==0, minGuaranteeDate, MClient.MMPOLICY_FiFo.equals(MMPolicy) );
and also
for (int j = 0; j < storages.length; j++)
{
MStorage storage = storages[j];
onHand = onHand.add(storage.getQtyOnHand());
}
boolean fullLine = onHand.compareTo(toDeliver) >= 0
|| toDeliver.signum() < 0;
and also
if (!MDDOrder.DELIVERYRULE_CompleteOrder.equals(order.getDeliveryRule())) // printed later
createLine (order, line, toDeliver, null, false);
continue;
CreateLine is defined as
/**************************************************************************
* Create Line
* @param Distribution order order
* @param orderLine line
* @param qty qty
* @param storages storage info
* @param force force delivery
*/
private void createLine (MDDOrder order, MDDOrderLine orderLine, BigDecimal qty,
MStorage[] storages, boolean force)
{
// Complete last Shipment - can have multiple shipments
if (m_lastC_BPartner_Location_ID != order.getC_BPartner_Location_ID() )
completeMovement();
m_lastC_BPartner_Location_ID = order.getC_BPartner_Location_ID();
// Create New Shipment
if (m_movement == null)
{
MLocator locator = MLocator.get(getCtx(),orderLine.getM_Locator_ID());
m_movement = createMovement(order, m_movementDate);
m_movement.setAD_Org_ID(locator.getAD_Org_ID());
//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())
m_movement.setC_BPartner_ID(order.getC_BPartner_ID());
if (order.getC_BPartner_Location_ID() != order.getC_BPartner_Location_ID())
m_movement.setC_BPartner_Location_ID(order.getC_BPartner_Location_ID());