Requirements
- Android App 1.5.8
Description
Order line grouping can be used to group similar order lines which are normally split into separate order lines by the backend. The goal of this functionality is to combine similar order lines, removing redundant order line selection and registration for the user.
When a grouped order line is selected, it can be expanded to view the individual order lines. That functionality is disabled as soon a registration has been made on either the group order line or any of the individual order lines.
See also: How-to: Group matching order lines (GroupBy) (Business Central customization example)
How to group order lines
In order to enable this functionality, all order lines which should be grouped into one order line need to be placed in a XML group element, as listed below.
The grouped order line which is displayed on the order lines page gets its values from the first BaseOrderLine element in the group. However, if that is not sufficient, a display order line can be added which has the element name of GroupOrderLine. If a GroupOrderLine element is added, the displayed group order line will get it's values from that order line.
Notice that the backend controls the LineNumber of the display order line if the GroupOrderLine is sent out. If not, a unique LineNumber is automatically generated for the representation of the grouped order lines.
An order line response can contain multiple order line groups, which can be ungrouped individually.
<responseData> <BaseOrderLine> <OrderBackendID>PU000006</OrderBackendID> <LineNumber>20000</LineNumber> ... </BaseOrderLine> <BaseOrderLine> <OrderBackendID>PU000006</OrderBackendID> <LineNumber>40000</LineNumber> ... </BaseOrderLine> <Group> <!-- Optional group element for custom representation --> <GroupOrderLine> <OrderBackendID>PU000006</OrderBackendID> <LineNumber>G_60000</LineNumber> ... </GroupOrderLine> <!-- End --> <BaseOrderLine> <OrderBackendID>PU000006</OrderBackendID> <LineNumber>60000</LineNumber> ... </BaseOrderLine> <BaseOrderLine> <OrderBackendID>PU000006</OrderBackendID> <LineNumber>80000</LineNumber> ... </BaseOrderLine> <BaseOrderLine> <OrderBackendID>PU000006</OrderBackendID> <LineNumber>100000</LineNumber> </BaseOrderLine> </Group> </responseData>
Registrations
When registrations are performed on an order line group, the quantity is added to the individual underlying order lines. So if a group order line has a Quantity of 30, where each individual order line has a Quantity of 10. Then registering 15, will add 10 to the first order line, and 5 to the next. In cases where over delivery is enabled and 40 is registered to the empty order line group, then the first two order lines will be registered with 10, and the last will receive the remaining, which in this case is 20.
As registrations will be done on the individual order lines, posting an order line group will not differ in the request from the mobile application. Hence, no change needs to be done here. Only if the GroupOrderLine is defined with different attributes than the individual order lines.
Toggling the grouped order line
In order to be able to toggle the grouped order lines, a new menu item needs to be added to the order lines page.
<page id="PutAwayLines" type="OrderLines" icon="mainmenuputaway"> <title defaultValue="@{PagePutAwayOrderLinesTitle}"/> <orderLinesConfiguration> ... <toggleOrderLineGrouping enabled="true" title="@{MenuItemOrderLineUngroup}" icon="menuplus" groupTitle="@{MenuItemOrderLineGroup}" groupIcon="menuminus" contextMenuPlacement="1" menuPlacement="1" disableOnRegistration="false"/> ... </orderLinesConfiguration> </page>
The disableOnRegistration attribute dictates whether or not the toggling between grouping and individual order lines can happen after registration in either grouped or individual mode has been made. The default is to allow it.
Recommendations
When using this functionality for registering serial numbers, and the serial numbers are known, it is recommended that a GroupOrderLine is added. The GroupOrderLine should not have an expected serial number set, as that will prevent other serial numbers from being registered.
Limitations
Order line grouping does not support Tote functionality, and should therefore not be used where totes are needed.
The reason for that is, that the grouped order line uses the destination from either the <GroupOrderLine/> or the first <BaseOrderLine/>, and will therefore link all registrations to that destination.
See also
-
OnAfterGroupByBaseOrderLineElements (Support Knowledge Base)
-
-
-