✨ Vertical property import — Redesigned the import screen with a clearer step-by-step flow, summary cards, and shorter messages instead of raw data dumps.
✨ Vertical property import — Multi-sheet Excel files now import from the Property Profile Upload worksheet when present; otherwise the first sheet is used as before.
✨ Vertical property import — Re-importing a file now updates existing tower or building records when the name already exists, instead of blocking the import.
✨ Improved — Clearer review step on vertical property import with compact tags instead of long alert messages.
???? Vertical property import — The import now blocks duplicate tower or building names in the same file and names that already exist in the system.
???? Charge Reversal on Cancellation — Cancelling an approved service request now automatically reverses the charge that was raised against the resident's account. The reversal is reflected on the resident's next billing statement and surfaces on the Finance Transaction Report as a Cancelled row alongside the original Approved row, so the full lifecycle of the charge is visible in one place. Service requests cancelled before this release are not affected; from this release onward, every new cancellation triggers the reversal automatically.
???? Vertical property import — Fixed an error that blocked confirming the import when the sheet included building height in storeys.
???? Total Bill Calculation — Fixed an issue where the Total Bill for service requests booked across multiple billing windows was showing only a single window's charge (for example, a 15-hour booking at $200 per 2 hours was billing only $200 plus add-ons, instead of the full duration). Bookings are now correctly charged for the actual duration reserved, proportional to the billing window configured for the service. Partial windows are charged proportionally — for example, a 1-hour 30-minute booking on a 2-hour window is charged 75% of the rate, not the full window.
✨ Vertical property import — Redesigned the import screen with a clearer step-by-step flow, summary cards, and shorter messages instead of raw data dumps.
???? Service Request Status Display — Fixed an issue on the Service Request details page where a request that had been cancelled, closed, or rejected continued showing the status of its linked ticket — making the request appear as if it were still open. The details page now correctly shows the Service Request's own final status in those cases.
???? Charge Reversal on Cancellation — Cancelling an approved amenity booking now automatically reverses the charge that was raised against the resident's account. The reversal is reflected on the resident's next billing statement and surfaces on the Finance Transaction Report as a Cancelled row alongside the original Approved row, so the full lifecycle of the charge is visible in one place. Bookings cancelled before this release are not affected; from this release onward, every new cancellation triggers the reversal automatically.
✨ Vertical property import — Multi-sheet Excel files now import from the Property Profile Upload worksheet when present; otherwise the first sheet is used as before.
✨ Vertical property import — Re-importing a file now updates existing tower or building records when the name already exists, instead of blocking the import.
???? Pending Status Label Color — Fixed an issue where the "Pending" status label on the Service Request list and details pages appeared with no background color. The label now displays in blue, in line with the other status indicators.
✨ Improved — Clearer review step on vertical property import with compact tags instead of long alert messages.
???? Vertical property import — The import now blocks duplicate tower or building names in the same file and names that already exist in the system.
???? Charge Reversal on Cancellation — Cancelling an approved service request now automatically reverses the charge that was raised against the resident's account. The reversal is reflected on the resident's next billing statement and surfaces on the Finance Transaction Report as a Cancelled row alongside the original Approved row, so the full lifecycle of the charge is visible in one place. Service requests cancelled before this release are not affected; from this release onward, every new cancellation triggers the reversal automatically.
???? Vertical property import — Fixed an error that blocked confirming the import when the sheet included building height in storeys.
???? Fixed "Upgrade Database" error on the Menu Builder module — Administrators clicking the Upgrade Database action on the Menu Builder module no longer see an error about a missing migration. The action now completes silently because the module has no schema to upgrade.
???? Total Bill Calculation — Fixed an issue where the Total Bill for service requests booked across multiple billing windows was showing only a single window's charge (for example, a 15-hour booking at $200 per 2 hours was billing only $200 plus add-ons, instead of the full duration). Bookings are now correctly charged for the actual duration reserved, proportional to the billing window configured for the service. Partial windows are charged proportionally — for example, a 1-hour 30-minute booking on a 2-hour window is charged 75% of the rate, not the full window.
✨ Vertical property import — Redesigned the import screen with a clearer step-by-step flow, summary cards, and shorter messages instead of raw data dumps.
???? Service Request Status Display — Fixed an issue on the Service Request details page where a request that had been cancelled, closed, or rejected continued showing the status of its linked ticket — making the request appear as if it were still open. The details page now correctly shows the Service Request's own final status in those cases.
???? Charge Reversal on Cancellation — Cancelling an approved amenity booking now automatically reverses the charge that was raised against the resident's account. The reversal is reflected on the resident's next billing statement and surfaces on the Finance Transaction Report as a Cancelled row alongside the original Approved row, so the full lifecycle of the charge is visible in one place. Bookings cancelled before this release are not affected; from this release onward, every new cancellation triggers the reversal automatically.
✨ Vertical property import — Multi-sheet Excel files now import from the Property Profile Upload worksheet when present; otherwise the first sheet is used as before.
✨ Vertical property import — Re-importing a file now updates existing tower or building records when the name already exists, instead of blocking the import.
???? Pending Status Label Color — Fixed an issue where the "Pending" status label on the Service Request list and details pages appeared with no background color. The label now displays in blue, in line with the other status indicators.
✨ Unit import — Horizontal and vertical imports now share one page under Import Units, with a simpler layout and no separate import button on the units list.
???? Regulatory Document Types card on the Import Center dashboard — The Import Center main page now shows a new "Compliance" section with the Regulatory Document Types import, so it can be opened directly from the dashboard alongside the other import flows.
???? Vertical property import — Fixed utility contact fields (provider name, account number, and account officer details) mapping incorrectly during preview and import from Field/Value spreadsheets.
✨ Vertical property import — When a property sheet lists multiple towers, the vertical import now creates one Tower/Building/Phase record per tower instead of a single combined record.
✨ Unit import — Horizontal import now uses the same drag-and-drop spreadsheet upload as vertical import, without separate URL or file fields.
???? Unit Tab — Quick Edit — Added an editable Unit tab on the customer profile where staff can update every unit detail (tower, floor, prefix, number, block, SAP business, SAP customer reference, vacancy, inventory flag, under-construction flag, resident type, ownership type, developer turnover date and description) directly from the resident's profile, without leaving the page.
✨ File preview on the mapping screen — When mapping columns on the Regulatory Document Types import, the system now shows a small sample (the first 3 rows) of the data it actually read from your file. This makes it easy to confirm the spreadsheet was loaded correctly before you continue, even when your column names happen to match the system's field names.
✨ Unit import — The horizontal import section now matches the vertical layout, with separate template and instructions downloads clearly labeled for horizontal import only.
✨ Clearer feedback while importing — On the Regulatory Document Types import, the preview now lists every single row from the spreadsheet (instead of only the first 25) so the entire change can be reviewed before confirming. Clicking "Import" now shows a spinner and a progress message so it is obvious the system is working — and the back button is briefly disabled to prevent accidental double-imports.
✨ Improved Regulatory Document Types Import — The system now recognizes column headers automatically even when they are written in Portuguese, have accents, or use slightly different wording (for example "Tipo de Documento", "Situação", or "Permit Name (Long)"). You can also paste a Google Sheets link as the data source instead of uploading a file.
???? Fixed "Access denied" on Regulatory Document Types upload — On some properties, the upload step rejected files with an "Access denied" message even when the user had full permission and the Import Center module was activated. The upload step now uses the same access rules as the page that opens it, so anyone who can see the upload form can also submit a file.
???? Vertical property import — Added a second import option on the units list for Excel files laid out as Field and Value rows. Each file creates one Tower/Building/Phase record; tower breakdown details are stored separately without creating extra buildings. The original spreadsheet import remains available.
✨ Document Types Spreadsheet Works Everywhere — The "Export Template" button now always produces a true Excel (.xlsx) file, even on servers without the optional zip extension installed. The import accepts the same Excel files in return, so the round-trip workflow no longer falls back to plain CSV when the server is missing optional components.
✨ Better "Access denied" diagnostics on Regulatory Document Types import — When the upload is blocked, the system now returns a short code naming which check failed (module not active, missing bulk-import capability, or missing document-types permission) so support can pinpoint the cause without server access.
???? Fixed Import Center sidebar label — The "Others" sidebar shortcut to Import Center could appear with an untranslated code label instead of the proper name on some installations. The label is now refreshed automatically on the next page load so the menu reads "Import Center" everywhere.
✨ Document Types toggle in Import Center settings — The per-property Import Center settings page now includes a checkbox to show or hide the Regulatory Document Types import card on the dashboard, matching every other import flow.
???? Upgrade Database — Fixed an issue where the new service-request email templates could not be applied on existing environments through the Setup → Modules → Upgrade Database button. The button now picks up the new acknowledgement template and the rewritten approval, cancellation and rejection emails without requiring the module to be deactivated and reactivated.
✨ Unit import — Horizontal and vertical imports now share one page under Import Units, with a simpler layout and no separate import button on the units list.
???? Regulatory Document Types card on the Import Center dashboard — The Import Center main page now shows a new "Compliance" section with the Regulatory Document Types import, so it can be opened directly from the dashboard alongside the other import flows.
???? Vertical property import — Fixed utility contact fields (provider name, account number, and account officer details) mapping incorrectly during preview and import from Field/Value spreadsheets.
✨ Vertical property import — When a property sheet lists multiple towers, the vertical import now creates one Tower/Building/Phase record per tower instead of a single combined record.
✨ Unit import — Horizontal import now uses the same drag-and-drop spreadsheet upload as vertical import, without separate URL or file fields.
???? Pending Approval Acknowledgement Email — When a resident submits an amenity booking — whether from the resident portal, the mobile app, or directly by an administrator — they now receive an immediate acknowledgement email confirming receipt. The email lists the event name, amenity, transaction number, date, time, attendee count, payment method, sub-total, transaction fee and total amount due, and clearly states that the Property Management Office will review and assess the request shortly.
???? Transaction Number & Line Item Text Aligned with Finance Spec — The Transaction Number shown to residents and staff on service requests (in confirmation emails, request detail screens, and the mobile app) now follows the format defined in the signed Finance specification: Company Code, period (month and year), series and sequence — for example 0155-0526SR000495 for a service request submitted in May 2026. The line item written to the invoice for each approved service request now also follows the spec format: the Transaction Number, the service name, and the request date (e.g. 0155-0526SR000495 - Plumbing 01/05/2026). This description flows straight through to the Finance Transaction Report, so the Line Item Text column there now matches the spec. Existing invoices keep the descriptions they were created with.