How to port MStorage class in Libero Distribution Order into iDempiere 5.1

98 views
Skip to first unread message

shiju01

unread,
May 16, 2018, 8:24:46 AM5/16/18
to iDempiere
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());

Carlos Antonio Ruiz Gomez

unread,
May 16, 2018, 8:52:41 AM5/16/18
to idem...@googlegroups.com
Have you checked the work from red1 on that topic?
https://bitbucket.org/red1/org.libero.manufacturing/src/default/src/org/libero/process/MovementGenerate.java

Regards,

Carlos Ruiz
--

shiju01

unread,
May 16, 2018, 9:52:13 AM5/16/18
to iDempiere

Thank you Carlos for your kind support .. definitely i will check that
 
Mean while I found a shortcut  ... take InOutGemerate.java and

   - replace all C_Order with DD_Order
   -
replace all M_Inout with M_Movement
   - then fix red marks (:



sujit punnadi

unread,
Jun 23, 2018, 9:09:13 AM6/23/18
to iDempiere
Hi Shiju et al,

I've a similar kind of a problem. I followed steps mentioned in iDempiereMigrationGuide.pdf for trying out POS integraion. This results in MStorage related errors reproduced below for your reference:


Bound mismatch: The generic method list() of type Query is not applicable for the arguments (). The inferred type MStorage is not a valid substitute for the bounded parameter <T extends PO>    Export2Queue.java    /PosIntegration/src/org/adempiere/process    line 200    Java Problem
MStorage cannot be resolved to a type    Export2Queue.java    /PosIntegration/src/org/adempiere/process    line 197    Java Problem
MStorage cannot be resolved to a type    Export2Queue.java    /PosIntegration/src/org/adempiere/process    line 202    Java Problem
MStorage cannot be resolved to a variable    Export2Queue.java    /PosIntegration/src/org/adempiere/process    line 192    Java Problem
MStorage cannot be resolved to a variable    Export2Queue.java    /PosIntegration/src/org/adempiere/process    line 192    Java Problem
MStorage cannot be resolved to a variable    Export2Queue.java    /PosIntegration/src/org/adempiere/process    line 197    Java Problem
MStorage cannot be resolved to a variable    Export2Queue.java    /PosIntegration/src/org/adempiere/process    line 197    Java Problem
The import org.compiere.model.MStorage cannot be resolved    Export2Queue.java    /PosIntegration/src/org/adempiere/process    line 32    Java Problem

How do i get rid of this error?

Thanks,
Sujit

redhuan d. oon

unread,
Jun 26, 2018, 9:18:14 PM6/26/18
to iDempiere
Hi Sujit,
I maintain these code so i will be interested to improve or fix any errors in them. Is this a separate topic from Libero? This seems to be for POS Integration Export2Queue (Message Queue of Apache MQ)?
If so please post in a new thread giving your steps and data input.
Thanks for your testing.
Reply all
Reply to author
Forward
0 new messages