Author: jleroux Date: Fri Sep 20 08:52:08 2013 New Revision: 1524950 URL: http://svn.apache.org/r1524950 Log: For "If you clear the last packed item from from a shipment with two items and then complete the pack, you get the exception below" https://issues.apache.org/jira/browse/OFBIZ-5308
If you clear the last packed item from from a shipment with two items and then complete the pack, you get the exception below: Exception thrown while creating the "newEntity" ....ShipmentPackageContent ... Key ... is not present in table shipment_package This is happening because org.ofbiz.shipment.packing.PackingSession.clearLine() around line 600 is decrementing packageSeq from 1 to zero. This causes createPackages() to not generate any ShipmentPackages because of the for statement on packageSeq and therefore the subsequent exception. I fixed this by just commenting out the block starting with "if(line.packageSeq ==". I did not submit a patch because I do not fully understand the logic and do not have time now to learn it now. Hopefully the author will be better equipped to deal with it properly. Skip jleroux: the path's author (https://issues.apache.org/jira/browse/OFBIZ-2163) Karim Rahimpur did not answer. But by analogy with clearAllLines I decided that packageSeq should not be less than 1! Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java?rev=1524950&r1=1524949&r2=1524950&view=diff ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java Fri Sep 20 08:52:08 2013 @@ -590,7 +590,7 @@ public class PackingSession implements j } this.packageWeights.put(line.packageSeq, packageWeight); } - if (line.packageSeq == packageSeq) { + if (line.packageSeq == packageSeq && packageSeq > 1) { packageSeq--; } }