Public changelog

What we shipped, in plain language.

Every release to Biztimize — new features, improvements, fixes, and breaking changes — documented here, for everyone. No marketing gloss.

3.36.31

Payroll Finds Its Net Pay Account, and a New Tenant Gets a Chart of Accounts

September 02, 2026
Production

The balancing leg of a payroll journal is mapped through the wage type that has always existed for it, an out-of-date mapping window is named as one, and a tenant with no chart of accounts is given the standard chart on deploy.

Bug Fix

A Mapping Dated After the Period Is Named, Not Called Missing

A GL mapping takes effect from the day it is created, so a mapping added while closing last month’s payroll is dated after the period end and is correctly filtered out — but the refusal then said the wage type was not mapped while the operator was looking straight at the mapping they had just saved.

The message now names the effective window and says to widen it, rather than inviting a second mapping row that will not help either.

Human Resources Global
Bug Fix

The Net Pay Leg Is Mapped Through Wage Type 9920

The posting service looked for a wage type code that no catalogue has ever contained, so the balancing net-pay leg could never be mapped however carefully the mapping table was filled in. It now reads 9920 Net Pay, which has been in the standard catalogue since the payroll engine shipped.

Creating a second wage type meaning “net pay” would have left two codes for one concept and an even chance of an operator mapping the wrong one.

Human Resources Global
Improvement

A Tenant With No Chart of Accounts Is Given the Standard One

The chart of accounts came only from a command run by hand per tenant, and three production tenants had never had it run — which blocks GL account creation outright, because an account has to hang off a chart. The deploy now seeds it.

It seeds only into an empty chart. The shipped template is not the only chart in use, codes collide across standards, and renumbering a chart that already carries posted journals is a supervised act — not something a deploy may do behind the operator’s back.

Finance Global
3.36.30

The Leads Grid Pages, Sorts and Searches on the Server

September 02, 2026
Production

The Leads list now asks the server for the page it is showing instead of pulling every lead in the tenant into the browser first.

Improvement

Leads Load a Page at a Time

The Leads grid fetched the whole table and then paged, sorted and searched it in the browser, so the wait to open the screen grew with every lead ever created. Paging, sorting, searching and column filters are now answered by the server, and the screen opens as quickly on the thousandth lead as on the first.

The task list shares the change, and both grids keep their Excel export over the whole result set rather than the page on screen.

CRM Global
3.36.28

Task Dashboard: Co-Assignees, an Editable Time Spent, and a Grid That Searches What It Shows

September 02, 2026
Production

A task can now be assigned to several people, a supervisor can correct the Time Spent total without rewriting anybody’s timer entries, and the task list’s search, sort and filters finally reach the Project, Assignee and Status columns it displays.

Bug Fix

The Task List Searches, Sorts and Filters the Columns It Displays

The task list’s search box only ever looked at the task’s own fields, so searching for a project or an assignee — both plainly on screen — returned nothing, which reads as a broken search. It now covers what the grid shows: task, project, category, priority and assignee, employees and contacts alike.

Three related faults are gone with it:

  • The box now means one phrase. Searching “Website Creation” used to return a task called “Creation of banner” on a project called “Website Redesign” — a row containing neither of the words the user typed together.
  • Typing anything into the box raised a server error, because the search named two fields a task does not have. An unsearched list loaded fine, which is why it went unnoticed.
  • Sorting and filtering on Project, Category, Priority and Assignee were being dropped in silence — the click did nothing and said nothing. Status now filters by picking from the real list rather than by typing a label that never matched, and the export answers to the same column names the grid filters on, so a download matches what is on screen.

Paging is steadier too: rows sharing a creation timestamp could previously swap between page fetches, showing one task twice and another not at all.

Task Management Global
New Feature

A Supervisor Can Correct the Time Spent Total

The Time Spent figure on the task list is now editable, and the cell also opens the full list of time entries behind the total — everyone’s entries, not just your own — so a number can be explained before it is changed.

Correcting the total is a supervisory act: the assignee’s supervisor, anyone above them in the chain, or a system administrator. The person whose hours they are cannot quietly restate them.

Timer entries are facts and are never rewritten. The difference between what the timers recorded and the total asked for is carried by a single adjustment entry, recalculated on each edit rather than stacking up a new row every time somebody changes their mind. Two things are refused by name: a total below what the timers already logged — the honest way to remove logged time is to correct the entry that logged it, and the message says how much is logged — and any edit while a timer is still running.

Task Management Global
New Feature

A Task Can Be Assigned to More Than One Person

A task carried exactly one assignee, so shared work had to be duplicated into a task each. A task — and a recurring task definition, so every occurrence it generates — can now name additional assignees alongside the primary one.

The primary assignee is unchanged and remains the one owner every existing report, notification and filter reads, so nothing that worked before changes meaning. What the co-assignees add is visibility: a task whose primary owner sits outside your part of the organisation is still yours if you are on it, and it appears in your list accordingly.

Task Management Global
3.36.25

Payroll Posting Refuses Rather Than Writing a Wrong Journal

September 02, 2026
Production

Posting a payroll run to the general ledger now stops and names what is missing — an unmapped wage type, or no net-pay account — instead of quietly posting less salary expense than was paid, or an unbalanced entry already marked posted.

Bug Fix

The Net Pay Credit Can No Longer Go Missing

The net-pay credit leg had no check on it at all. Where no net-pay account was configured the leg was simply left out — and because payroll writes its journal as already posted, the ledger accepted an unbalanced entry marked POSTED with no error raised anywhere. A missing net-pay mapping is now refused by name before anything is written.

Human Resources Global
Bug Fix

A Failed Posting No Longer Leaves the Journal Behind

The posting wrapped its writes in a transaction opened on the wrong database connection, so on a tenant it was effectively running unwrapped. A failure part way through left the journal committed while the payroll run stayed Approved and no posting record was written — a general ledger entry that no payroll document admitted to.

The posting is now one transaction on the tenant’s own connection: it either completes in full or leaves nothing behind.

Human Resources Global
Bug Fix

An Unmapped Wage Type Stops the Posting and Is Named

A wage type with no GL account mapped against it was skipped, with a line in the server log and nothing on the screen. It did not even show up as an imbalance: the salary-payable credit is derived from the debits, so dropping an earning shrank the credit to match. The journal balanced perfectly while posting less salary expense than the run actually paid — the worst shape a defect can take, because everything downstream reconciles.

Posting now refuses, and the message lists every unmapped wage type with its amount in one go, so the mapping table is completed in a single pass rather than one refusal at a time. The refusal comes back as a plain validation message with the remedy in it, not a server error.

Human Resources Global
3.36.26

HR Can Record an Absence on Behalf of an Employee

September 02, 2026
Production

A new Absence Entry screen lets HR record, amend and cancel leave for any employee — including the people who have no self-service login at all — against the same record, the same quota and the same payroll the employee’s own request uses.

Improvement

One Definition of a Working Day, Shared With Payroll

Two answers to “what is a working day” were live in the product and they disagreed. Leave counted Monday to Friday and ignored holidays and the published roster; payroll already used the proper ladder. An employee whose three-day sick leave deducted three days of quota but two days of pay was a dispute the system could not answer.

There is now one definition, shared by leave and payroll: the published roster first, then the plant’s weekly pattern less that plant’s holidays, and only then the plain calendar fallback — and each answer says which rung it came from.

Human Resources Global
New Feature

Absence Entry on Behalf of an Employee

Until now an absence could only be entered by the employee, through self-service. On a factory floor that is the wrong way round: absence is observed, not applied for, and many of the people it happens to have no login. The only way in was the raw database admin, which writes the row with no duration, no quota deduction, no overlap check and no trail.

Time › Absence Entry closes that. HR picks the employee, the absence type and the dates, and the entry lands on the same record the employee’s own request would have created — so payroll, the leave balance and HR analytics need no special knowledge that it came from HR.

An HR entry is an observation, not an application. It is recorded as approved and the quota is deducted in the same transaction; it does not invent an approval trail through people who never saw it. What it does record is how it came to be there: whether the employee, HR or an import entered it, the reason HR gave, and whether a quota was overridden. Every audit and every payroll dispute reads those from the row rather than guessing.

Where a quota is short the entry is refused. HR may override — real absence must not be blocked by a balance nobody loaded — but only by asking for it, only with the right to do so, and the row is stamped with the fact for ever.

Corrections are honest too. Amending an absence reverses the original and reapplies rather than editing it under the balance, so the quota can never drift. A cancellation hands the quota back. Marking a whole shift or department absent reports row by row — the ones recorded, and each one that was not, with the reason — instead of one number that hides the failures.

Human Resources Global
3.36.27

Short Permission — Late-In, Early-Out and Gate Pass

September 02, 2026
Production

A few hours away from the shift is now a thing the system can express: an hours-denominated permission against the rostered shift, with a monthly entitlement, an ESS request path and a Permission Register — and an approved permission excuses the late-in without erasing what the terminal measured.

Bug Fix

Hours Can Never Be Deducted From a Quota Counted in Days

The leave quota engine matched a balance by category alone and never looked at the unit it was counted in. The first hours-denominated absence would have taken two days of annual leave for a two-hour errand — silently, and in the direction that costs the employee.

Hours now deduct from hours and days from days, on deduction and on cancellation alike, and a balance that holds both is reported as two figures rather than one meaningless sum. Where no balance of the right unit exists at all, the refusal names the unit — a different problem from “you have none left”, with a different fix.

Administrators: a monthly permission entitlement is itself an hours quota block, generated per employee and per month. Until it is generated the Permission Register has nothing to draw on. Unpaid permission is refused by name until payroll can express it, rather than being recorded as though it were free.

Human Resources Global
Improvement

An Approved Permission Excuses the Exception, Not the Fact

When a permission covers a late arrival, the time evaluation stops raising the exception — but what the terminal measured stays on the record for ever. The minutes late are the measurement; the excused minutes are the judgement, and they are capped at what the permission actually granted. Two hours late on a one-hour permission is still an hour late.

The excused time is credited to the day’s paid hours as well, without which a two-hour permitted late-in would silently have turned the day into a half day.

Human Resources Global
New Feature

Short Permission, Measured in Hours Against the Shift

Coming in late, leaving early or stepping out mid-shift had no record other than the exception it raised. Short Permission gives it one: an absence measured in hours, granted against the shift the employee was rostered onto, in the three shapes the shop floor actually uses — late-in, early-out and a mid-shift gate pass.

Employees request one from the Permission tab of their leave page; HR records and reviews them on the new Permission Register, and can record one on an employee’s behalf exactly as with any other absence.

A permission is meaningless without a shift to measure it against, so an employee with no published roster day is refused by name rather than being measured against a nine-to-five the plant does not work. The monthly entitlement is checked when the permission is asked for, not discovered at month end: past the cap it is refused, or deliberately overridden and stamped.

A mid-shift gate pass is recorded but costs nothing — the middle punches are not part of the day’s pairing, so the excursion is already inside paid time. It is kept because the fact that someone left the premises matters, not because it changes the pay.

Human Resources Global
3.36.23

A Half-Day Absence Costs Half a Day of Pay

September 01, 2026
Production

Payroll proration now reads how much of the day an unpaid absence actually covered, so a half-day leave stops docking a full day’s pay.

Bug Fix

A Half-Day Leave No Longer Deducts a Whole Day

Loss-of-pay proration counted one full day for every date an unpaid absence touched, whatever the absence said about itself. A half-day leave — a shape the leave screen has always offered and the quota engine has always honoured — therefore cost the employee twice the intended deduction, quietly, with nothing on the payslip to show why.

The day’s weight now comes from the absence record itself: a full day counts as one, a half day as a half, and a partial absence spread over several dates is shared across the span it covers. A weight that could only come from contradictory data is held between nothing and one whole day rather than being trusted.

A full-day absence is deliberately not divided across its span: leave is counted in working days while a span is counted in calendar days, so dividing one by the other would discount every leave that happens to straddle a weekend.

Administrators: this changes net pay for any employee with half-day unpaid absence. On one August run the affected employee moved from 16 to 17 paid days out of 25. Runs already posted are not restated — recalculate the period if the earlier figure needs correcting.

Human Resources Global
3.36.16

Dropdowns That Fill In Without Module Access

September 01, 2026
Production

The customer, warehouse and storage location dropdowns on three forms are served from the reference tier, so the people who use those forms no longer see an empty list where a permission gate refused a master-data endpoint.

Bug Fix

The Customer Dropdown on Direct Invoices and Adjustment Notes

The Customer box on the AR direct invoice and on an adjustment note was blank for accounts-receivable users. The list was being read from the CRM customer master, which those users are correctly not members of, and the refusal was swallowed into an empty dropdown — so a permission gate doing its job looked exactly like a broken screen.

Both forms now read the customer list from the reference tier, under a permission the affected roles already hold. Nobody gains access to the CRM module in order to fill in a dropdown. The list carries the credit currency and payment term with it, because the invoice defaults both from the customer.

Two further consequences of the same fault are gone. A refusal now names the missing permission on the field instead of showing an empty list. And the adjustment note loaded its five lookups as one batch, so a single refusal emptied companies, currencies, suppliers and the chart of accounts too and reported “Failed to load reference data”; each list now stands on its own. An invoice raised against a customer since deactivated shows that customer’s name rather than an empty box.

Finance Global
Bug Fix

Warehouse and Storage Location at the Front Desk

The gate operators recording a front-desk entry had no warehouse or storage location to choose from: both lists came from the inventory master, and no front-desk role grants inventory module access.

Both lists are now served from the reference tier under a permission those roles already hold, and the storage location list carries its parent warehouse so the second dropdown still narrows to the first.

System Global
3.36.17

A Foreign-Currency Receipt Relieves the Ledger at the Invoice Rate

September 01, 2026
Production

A receipt against foreign-currency invoices now credits the customer ledger with the amount those invoices were booked at, so the customer ledger and the receivables control account agree and the exchange difference sits only on the exchange account.

Bug Fix

The Customer Ledger No Longer Absorbs the Exchange Gain

An export receipt settles invoices that were booked at their own exchange rates, while the bank pays at today’s. The gap between the two is the realised exchange difference and it belongs on the gain or loss account.

The journal has posted it that way since the foreign-currency work shipped, which is why Simulate always showed the right figures. The customer ledger row did not: it converted the receipt at the receipt’s own rate, so the difference landed on the customer’s account as well as on the exchange account, and the customer ledger disagreed with the receivables control account by exactly the gain. In foreign currency the customer was always square; in rupees the account was overstated.

The ledger row now takes the settlement figure from the same calculation the journal uses — read, not recomputed — so there is one definition of what the receipt relieved and not two. Reversing a receipt no longer quietly puts the difference back onto the customer either.

Administrators: rows written before this can be repaired with the backfill_receipt_local_relief command. It refuses a row it cannot settle honestly — a foreign-currency invoice carrying no usable rate, or a home-currency row, where a gap is a discrepancy rather than an exchange difference — and names it for someone to look at.

Finance Global
3.36.18

Tasks Upload

September 01, 2026
Production

Drop the TA template workbook onto Tasks Upload, review exactly what will be created and what will not, then commit — instead of keying a project plan in task by task.

New Feature

Load a TA Template Workbook Into a Project

Tasks Upload takes the TA template Excel sheet a merchandiser already maintains and creates the project’s tasks from it. The upload is in two steps: a preview that writes nothing, showing the project it resolved, the counts and every question it has, and then a commit.

Only the rows marked Task reqmnt = Y are loaded. An N row is a task the plan says this order does not need — it is counted and reported as not required, never as a failure.

Where the sheet and the system disagree, the upload reports rather than guesses:

  • A department name matching more than one department in the hierarchy is refused, naming both candidates, rather than picked.
  • A near-miss spelling is matched, but the substitution is stated in full — both spellings, on the row — never applied silently.
  • An employee is resolved by id; if the Name column disagrees with the record found, that is reported, and the name never overrides the id.
  • The Dependent Task column is free text that does not name a task exactly, so it is recorded in the task’s notes and never turned into a real dependency. A dependency guessed from prose would drive the schedule off unvalidated text.

Re-uploading over a project whose work has already begun is safe: the opening status is set on creation only, so a task already in progress or completed is never walked back and no recorded progress is erased. The commit re-reads and re-checks the file itself rather than trusting the preview sent back to it, so an edited preview cannot slip a row past validation.

Reading the preview needs task view access; committing needs the right to create tasks.

Task Management Global

Want a walkthrough of what's new?

We run monthly release briefings for customers — what shipped, what changed, what's next. Bring your team.