xtuple/qt-client — pull request #479 by krauseo (2014-09-15 15:47:21+00:00)
Title: Issue 23525 - force integer entry for non-fractional item

This issue reflects a general issue with the Post Production process. If you have a work order for a non-fractional item, regardless of its cost type, and you post production for a fractional amount, the system will post production on the work order (and show a received amount) of the fractional amount entered rounded up to the next whole number. It would be better if the postProduction.cpp program forced the entry of a non-fractional number in this case.

For job-cost items specifically, under the scenario outlined in the Steps to Reproduce here, the Post Production process receives a quantity of 1 against the work order, but puts the fractional amount of .55 as shipped on the sales order. The system used to prevent the use of Post Production for job cost items, and only allowed production posting through the Issue to Shipping process. The code to do that was commented out of postProduction.cpp (at line 170) for V4.0 as part of the resolution of #16606, and the system now calls IssueToShipping() within postProduction.cpp if production is posted for a job-cost item. However, the system does not check the fractional flag on the item before calling IssueToShipping and round up the value entered like it does when doing the receipt on the work order, it just passes the entered quantity. Thus, while qty 1 is received on the work order, qty .55 is issued to the sales order.

The simple fix for this is to check the item_fractional field for the item in postProduction.cpp and force the entry of a non-fractional quantity for non-fractional items. Alternately, the system could check item_fractional and round up before doing IssueToShipping, but to this user it is more intuitive to force a correct entry in the first place. While I'm not a hardened C++ or Qt developer, I believe the attached changes make this happen.