# Availability on bundles Two product types **ManagedStructure** and **ManagedERPPackageWithCalc** (and their unmanaged legacy versions) has their Onhand values calculated by Norce Commerce based on the child products. > Read about how Norce calculates availability here: [Availability structures](/solution-portal/detailed-design/availability-structure) for ordinary products. The fields that are calculated are: - **OnHandValue**: Calculated as the lowest value after division with quantity. - **IncomingValue**: Calculated as the lowest value after division with quantity (ignoring null values). - **NextDeliveryDate**: Calculated as the latest date among the child items, unless any of them does not have it. In that case, it is null. - **LeadTime**: Calculated as the largest number from the children. The calculation is based on the data of children that have the same warehouse and location. Bundles will not receive a total calculation for all warehouses, but rather a specific calculation for each warehouse/location pair. ### Some examples The bundle has two child items one piece of A and two pieces of B. #### **Example 1** | Product | OnHandValue | IncomingValue | NextDeliveryDate | LeadTime | | --- | --- | --- | --- | --- | | Child A | 10 | Null | Null | 1 | | Child B | 10 | Null | Null | 1 | | Bundle(1 pc A, 2 pcs B) | **5** | Null | Null | 1 | Child B have the OnHandValue **10**, but the bundle needs **2**, therefore, the value is **10/2 = 5**. #### **Example 2** Child B is not active on the warehouse/location. | Product | OnHandValue | IncomingValue | NextDeliveryDate | LeadTime | | --- | --- | --- | --- | --- | | Child A | 20 | Null | Null | 1 | | Child B | - | - | - | - | | Bundle(1 pc A, 2 pcs B) | - | - | - | - | At least one child **is not enabled on the warehouse**. Therefore, the bundle cannot be picked on this location at all. #### **Example 3** | Product | OnHandValue | IncomingValue | NextDeliveryDate | LeadTime | | --- | --- | --- | --- | --- | | Child A | 0 | 10 | 2022-01-01 | 1 | | Child B | 20 | Null | Null | 1 | | Bundle(1 pc A, 2 pcs B) | 0 | **10** | **2022-01-01** | 1 | Child A has no OnHandValue. Instead, the IncomingValue is shown. #### **Example 4** | Product | OnHandValue | IncomingValue | NextDeliveryDate | LeadTime | | --- | --- | --- | --- | --- | | Child A | 0 | 10 | 2022-01-01 | 1 | | Child B | 0 | 22 | 2022-02-01 | 1 | | Bundle(1 pc A, 2 pcs B) | 0 | **10** | **2022-02-01** | 1 | In this case, Child A has the lowest value for IncomingValue, when quantity is taken into account, but the NextDeliveryDate comes from Child B since its date is further into the future. #### **Example 5** | Product | OnHandValue | IncomingValue | NextDeliveryDate | LeadTime | | --- | --- | --- | --- | --- | | Child A | 10 | Null | Null | 5 | | Child B | 10 | Null | Null | 1 | | Bundle(1 pc A, 2 pcs B) | 5 | Null | Null | **5** | The OnHandValue is 10 for both Child A and Child B. The bundle product requires 1 quantity of Child A and 2 quantities of Child B. As a result, the on-hand value for the bundle is calculated as 5 by dividing the lowest on-hand value by the required quantity. The lead time for the bundle is calculated as 5, which is the longest lead time among the child products. #### **Example 6** | Product | OnHandValue | Reservation | | --- | --- | --- | | Child A | 10(*) | 5 | | Child B | 25 | 0 | | Bundle(1 pc A, 2 pcs B) | **5** | 0(**) | The onhand calculation takes into account the reserved quantities, however, reservation values are not saved on the bundle. (*) OnHandValue is shown with the reservation removed from the value in the Admin UI and in Norce Commerce Services (but not in Norce Commerce Query). (**) Reservation field is not used on the **ManagedStructure** or **ManagedERPPackageWithCalc** products. It is instead taken into account when calculating the OnhandValue.