> For the complete documentation index, see [llms.txt](https://knowledge.maica.com.au/maica-release-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://knowledge.maica.com.au/maica-release-notes/client-delivery/version-0.160.md).

# Version 0.160

Client Delivery V0.160 introduces two enhancements and three fixes. The headline additions are **NDIS Claim-Type Variant Billing Against the Child Support Item** and the ability to **Cancel a Single Occurrence of a Recurring Unavailability**. The fixes cover Appointment check-out with an Asset resource, lookup search handling of special characters, and Travel Time generation for zero-kilometre trips.

{% hint style="info" %}
The claim-type variant billing enhancement requires a post-install step. See [Post-Install Steps](#post-install-steps) at the bottom of this page.
{% endhint %}

## Installation Information&#x20;

Use the buttons below to install the latest version of **Maica Client Delivery** into the appropriate Salesforce org type. Select the link that matches your environment using the Buttons below.

{% hint style="info" %}
We always recommend installing the package into a **Sandbox** first to validate the release before deploying to **Production**. If you're unsure which option to select, please contact **Maica Support**.
{% endhint %}

**Production & Developer Edition Orgs**: <a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04tQp000000pJAHIA2" class="button primary">Production URL</a>

**Sandbox & Scratch Orgs:** <a href="https://test.salesforce.com/packaging/installPackage.apexp?p0=04tQp000000pJAHIA2" class="button secondary">Sandbox URL</a>

{% hint style="success" %}
If you are on a Journey Agreement with us, your Account Manager will connect with you to organise the upgrade.
{% endhint %}

## At a glance

<table><thead><tr><th width="320">Headline</th><th width="140">Type</th><th>Area</th></tr></thead><tbody><tr><td><strong>NDIS Claim-Type Variant Billing Against the Child Support Item</strong></td><td>Enhancement</td><td>Billing</td></tr><tr><td><strong>Cancel a Single Occurrence of a Recurring Unavailability</strong></td><td>Enhancement</td><td>Planner</td></tr><tr><td><strong>Appointments with an Asset Resource Now Complete Correctly</strong></td><td>Fix</td><td>Appointments</td></tr><tr><td><strong>Lookup Search Handles Special Characters</strong></td><td>Fix</td><td>Platform</td></tr><tr><td><strong>Travel Time Generated Correctly for Zero-Kilometre Trips</strong></td><td>Fix</td><td>Travel Management</td></tr></tbody></table>

## Enhancements

### NDIS Claim-Type Variant Billing Against the Child Support Item

**Reference:** CC-733

We have introduced support for billing 2026-27 NDIS claim-type variants against their child Support Item, at the child's own price, instead of always billing the parent item.

**What's changed**

* A new **Parent Support Item** field on Support Item links a claim-type child variant back to its parent.
* When an Appointment Service carries a claim type and its Agreement Item is bucket-funded (priced from a Price List rather than a fixed Agreement Item rate), Maica now resolves the matching child Support Item for that claim type and bills against the child's own price where one is configured.
* Where no matching child exists, or the child has no price on the applicable Price List, billing continues against the parent Support Item exactly as it does today.
* Stated-rate Agreement Items are unaffected: the NDIA does not permit stated supports to claim a variant, so these always continue to bill the parent item.

**Example scenarios**

* ✅ An Appointment Service has no claim type → the parent Support Item is billed, unchanged.
* ✅ An Appointment Service has a claim type with a matching, priced child Support Item, on a bucket-funded Agreement Item → the child Support Item is billed at its own price.
* ✅ An Appointment Service has a claim type on a stated-rate Agreement Item → the parent Support Item is billed.
* ✅ A claim type has no matching child Support Item → the parent Support Item is billed with the claim type recorded, unchanged.
* ✅ A matching child Support Item exists but has no price on the Agreement's Price List → the parent Support Item is billed and the gap is logged for review.

{% hint style="warning" %}
**Post-install step required.** See [NDIS Claim-Type Variant Billing](#ndis-claim-type-variant-billing) under Post-Install Steps at the bottom of this page.
{% endhint %}

### Cancel a Single Occurrence of a Recurring Unavailability

**Reference:** CC-721

We have introduced the ability to cancel a single occurrence of a recurring Unavailability without affecting the rest of the series. Previously, removing one occurrence caused the nightly recurring Unavailability batch to recreate it the following day, since the batch had no way to distinguish a deliberately removed occurrence from one it had not yet generated.

**What's changed**

* A **Cancel** action is now available on individual Unavailability occurrences in the Manage Unavailability grid, alongside the existing Delete action.
* Cancelling an occurrence sets its status to **Cancelled**. The nightly recurring Unavailability batch now recognises this status and does not recreate a cancelled occurrence, the same way it already respects an Approved one.
* A cancelled occurrence no longer blocks the Resource from being assigned to Appointments in that time slot, and the rest of the recurrence series continues to generate as normal.
* Cancelled occurrences are shown on the Planner in a distinct colour and opacity, both configurable via new **Cancelled Unavailability Colour** and **Cancelled Unavailability Opacity** Planner Settings.
* Deleting the master record of a recurring series continues to remove the whole series as before; deleting or cancelling an individual occurrence is now handled through the new Cancel action rather than Delete.

**Example scenarios**

* ✅ A Coordinator cancels a single occurrence of a recurring Unavailability → the occurrence is marked Cancelled, the Resource becomes available for that slot, and the rest of the series is unaffected.
* ✅ The nightly recurring Unavailability batch runs after an occurrence has been cancelled → the cancelled occurrence is not recreated.
* ✅ A Planner user views the schedule → cancelled occurrences display using the configured Cancelled Unavailability colour and opacity, distinguishing them from active Unavailability.

## Fixes

### Appointments with an Asset Resource Now Complete Correctly

**Reference:** CC-728

We have updated Appointment check-out so that Appointments carrying an Asset resource correctly transition to Completed once all human Resources have checked out.

**What's changed**

* The check-out completion check no longer counts Asset resources when determining whether any Resources are still checked in.
* An Appointment with an Asset resource now completes as soon as its human Resources have all checked out, without requiring the Asset itself to be checked out first.

**Example scenarios**

* ✅ An Appointment has one human Resource and one Asset resource. The human Resource checks out → the Appointment transitions to Completed.
* ✅ An Appointment has multiple human Resources and an Asset resource. All human Resources check out → the Appointment transitions to Completed once the last human Resource checks out.

### Lookup Search Handles Special Characters

**Reference:** CC-730

We have updated the lookup search component so that searches containing special characters no longer fail to return results.

**What's changed**

* Search terms are now correctly escaped before being used to highlight matched text and before being used in the underlying record query.

**Example scenarios**

* ✅ A user searches a lookup field using a term containing special characters (for example, punctuation) → matching results are returned as expected.

### Travel Time Generated Correctly for Zero-Kilometre Trips

**Reference:** CC-731

We have updated Travel Time generation so that time-based travel is charged correctly even when the recorded travel distance is zero kilometres. Previously, a zero-kilometre distance also suppressed the time-based travel charge for the same trip.

**What's changed**

* Time-based and distance-based travel charging are now evaluated independently of one another.
* A trip with zero recorded kilometres but a non-zero travel time now still generates the appropriate time-based Travel charge.

**Example scenarios**

* ✅ A Resource records a trip with a travel time but 0 KM travelled (for example, a same-site transfer) → the time-based Travel charge is generated as expected.
* ✅ A Resource records a trip with both travel time and travel distance → both charges continue to generate as before.

## Post-Install Steps

### NDIS Claim-Type Variant Billing

#### Prerequisites

* Client Delivery package version **0.160** or later installed
* System Administrator profile or equivalent permissions, with access to Execute Anonymous Apex

{% stepper %}
{% step %}

#### Backfill the Support Item Catalogue

The new **Parent Support Item** and **Active** fields on Support Item are populated from the Product catalogue as Products are created or updated from this point forward. Existing Support Items that predate this release will not have these fields populated until the catalogue is re-synced.

Until this step is completed, claim-type variant billing will not resolve any child Support Items and Appointments will continue to bill against the parent Support Item, exactly as they do today. No incorrect billing can occur before this step is run; the feature simply has no effect until it is.

To backfill the catalogue, run the following in **Setup > Apex Anonymous Execution**:

```apex
new maica.vertic_UpdateRecordsBatch(Product2.SObjectType).setOptAllOrNone(false).run(200);
```

{% hint style="info" %}
This re-processes every Product record in the org to repopulate the Support Item mirror fields. On a large catalogue this may take some time to complete; it can be safely re-run if it does not finish or does not cover the full catalogue on the first pass.
{% endhint %}
{% endstep %}
{% endstepper %}

## Verification Checklist

After completing the post-install step above, verify the setup is working as expected.

* [ ] Anonymous Apex batch executed successfully against Product2
* [ ] A known claim-type child Support Item shows a value in **Parent Support Item** and **Active** is checked
* [ ] A test Appointment Service with a claim type on a bucket-funded Agreement Item bills against the expected child Support Item
