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.38.6

An Hours Absence Type Is Refused on the Day-Leave Path

September 10, 2026
Production

A leave application for an hours-denominated type was accepted, routed for approval, and only then refused — leaving a request whose only exit was Reject.

Bug Fix

Refused at the Form, Not at the Approval

Short Permission is counted in hours. Applying for it through the day-leave screen was written down as a day request, sent for approval, and refused only at the point of deduction — correct, and far too late: the request is a dead end whose only exits are Reject or Cancel, and the approver is told about a quota block that was never supposed to exist.

Nothing stopped it because the type appeared in the day-leave dropdown and neither day-granular entry path checked the unit. Both dropdowns now exclude hours types, and both entry paths refuse by name — naming the Permission screen rather than talking about quota blocks. The deduction-time refusal stays as the last rung, for a row written before this change.

Human Resources Global
3.38.7

A Sales Order BOM Explodes Every Manufactured Level

September 10, 2026
Production

Generating a sales order BOM produced only the ordered item’s own level, so the fabric two levels down sat outside the order entirely. MRP now also carries the parent’s colour and size one level down.

Bug Fix

Every Manufactured Component Gets Its Own Structure

A sales order BOM is one structure per manufactured material, not one per order line. Generating only the line’s own level left the fabric — two levels down, under the stitched garment and the cut panel — outside the order entirely, so nothing planned, costed or procured it.

The explosion now walks down through every manufactured component. A manufactured component with no structure behind it is reported, never swallowed, and an active BOM that happens to hold no components is named in a warnings list rather than producing an empty structure under a success message.

Two things that made this look broken when the walk was actually right: an order generated before multi-level explosion existed answered “already exists” and did nothing — Generate now fills in the missing sub-levels — and with all three levels present the list was ordered newest-first, so the sub-levels filled the first page and their finished good sat on page two. A tree is now contiguous and starts at its finished good.

Anything that totals a sales order now counts top-level structures only — the budget conversion above all, or the garment is charged two or three times over.

Production Global
Improvement

MRP Carries the Parent’s Variant One Level Down

Where a component material has an unambiguous variant of its own matching the parent’s attributes, the requirement is now planned against that variant — so a size grid and a colour assortment plan per colour and size rather than in bulk. Everywhere the match is ambiguous the behaviour is exactly what it was.

Production Global
Improvement

Server-Side Invoices, Planned Orders, Put-Away and Purchase Orders

The Invoices, Planned Orders, Put-Away, Goods Issue to Cost Centre and Purchase Order grids now page, sort, search and filter on the server, and export the whole result set rather than the page on screen.

CRM Global
3.38.8

A Credit or Debit Note Line Can Cite Its Sales Order

September 10, 2026
Production

An adjustment note line may now name the sales order it adjusts, and the HSN column is labelled HSN/SAC, which is what a service line carries.

New Feature

The Sales Order on a Note Line

A note line can cite the sales order it adjusts, so a customer reading the note can tie it back to the order rather than to the invoice alone. It is optional by design: a rate-difference or billing-error note frequently has no order behind it, and a payables note never does.

Finance Global
3.38.9

Round Off Can Be Decided per Vendor Invoice

September 10, 2026
Production

Auto round off was a company-wide setting with no way to differ on one document. An invoice can now overrule it either way — and leaving it alone behaves exactly as before.

New Feature

A Per-Invoice Round Off Toggle

The rounding toggle on a vendor invoice has three states, not two. Unset — the default, and every invoice raised before this existed — means the operator has overruled nothing and the company’s AP posting configuration decides, exactly as it always did. Only an explicit yes or no overrules it.

The rounding difference must have somewhere to post, so a configured round off account is a precondition even when the toggle is switched on by hand: an invoice that cannot post is worse than one that is not rounded.

Finance Global
3.38.10

An Over-Billed Purchase Invoice Raises a Debit Note

September 10, 2026
Production

Billing more than was received is a claim on the vendor, not a coding question. With the setting on, posting the invoice raises an AP debit note for the excess — and the difference never revalues stock.

New Feature

Automatic Debit Note on Over-Billing

Where a vendor bills more than the goods receipt supports, the excess is now raised as an AP debit note when the invoice posts, rather than being coded away as a price or quantity difference. An over-billed line is a claim on the vendor, and a claim is a document.

The difference therefore does not move the stock valuation: the goods are worth what was received, and the excess is money to be recovered. Reversing the invoice takes the note with it.

Under-billing deliberately raises nothing. A note in the vendor’s favour is theirs to issue, not ours to invent.

Administrators: the behaviour is off until enabled per company in the AP posting configuration.

Procurement Global
3.38.12

Editing a Customer Receipt Stops Wiping Its Allocation

September 10, 2026
Production

Opening a saved receipt in edit mode showed every invoice unmatched, and saving from that screen destroyed the allocation for good.

Bug Fix

A Saved Receipt Comes Back With the Invoices It Was Applied To

The form has a guard that clears the selection when the customer or currency changes, so a choice made for one customer cannot leak into the next. On an edit screen the form mounts empty and the receipt loads a moment later — which the guard read as a change of customer, and it wiped the selection the loader had just restored.

The display was only half of it. The save then sent an empty allocation, which is taken as an instruction to delete the rows outright — so a save from the edit screen destroyed them, with nothing recording what the allocation had been, and the receipt afterwards settled the oldest open items in turn instead of the invoices the operator chose.

The loader now stamps the record’s own customer and currency before the guard sees them. The cross-customer protection is unchanged: changing customer or currency in edit mode still clears the selection.

Finance Global
3.38.0

Realized Exchange Gain and Loss on Vendor Advances

September 09, 2026
Production

An advance is booked at its own rate and the payable at the invoice’s, so applying one posts a third leg — the realized gain or loss. Reversing a payment now also gives the advance back, and a contra takes the date of the journal it reverses.

Bug Fix

Reversing a Payment Gives the Advance Back

An advance applied to an invoice used to be silently detached when the payment was reversed, leaving its journal standing. The invoice reopened in the sub-ledger while the general ledger still showed the payable relieved.

The application is now unwound properly, and a give-back that cannot post abandons the whole reversal rather than deleting a row against a live journal.

Finance Global
Bug Fix

A Contra Takes the Date of the Journal It Reverses

The Bank Book is the bank account’s ledger read by posting date, so a July payment reversed in September showed the cash gone for two months that the bank statement never lost — and no reconciliation in between could close.

Each contra now mirrors its own original’s date, so an advance paid in July and applied in August produces two contras on two dates. A closed period is refused by name, never slid forward to today. A dishonoured cheque is the one real later event and states today explicitly.

Finance Global
Bug Fix

A Reversal Is Linked to Its Original, and TDS Actually Reverses

The payables reversal produced an unlinked contra: a journal that merely happened to be the opposite of another. Nothing then stopped a second contra being posted — which credits the bank all over again — the GL ledger marked neither side, and the Bank Book could not pair them to hide a reversed pair. Both are now linked, and a journal that is already reversed is refused.

TDS reversal had never run once: it filtered on a column the record did not have, so every call failed into a one-line log entry and a reversed payment left its tax standing in the statutory register for ever. The register now carries the payment reference, the original row is marked reversed rather than deleted with a negative mirror booked beside it, and the register nets to zero with both facts still on it. The same missing field is why a payment advice has never shown its per-section TDS breakdown; it does now.

Administrators: run batch_migrate --app fi_ap_core and batch_migrate --app fi_ap per tenant, then set the realized gain and loss accounts per company under Finance › FX Revaluation.

Finance Global
New Feature

Applying a Foreign Advance Posts the Exchange Difference

A foreign-currency advance is booked at the payment-date rate and the payable at the invoice-date rate, so applying one moves two different rupee amounts. Posting both legs at a single rate left a residue in Trade Payables that no invoice explained and no allocation ever cleared.

Applying an advance now debits Trade Payables at the invoice’s rate, credits Advance to Vendors at the advance’s rate, and posts the difference to exchange gain or loss — the payables mirror of the customer receipt engine, reading the same configured accounts.

A rate of exactly 1.000000 on a foreign document means “nobody entered one”, not one-to-one. It is refused at entry, which is the only moment it can still be typed correctly, as well as at allocation. A domestic allocation still posts exactly the two legs it always did.

Finance Global
3.38.3

The Deploy Summary Reports the Release It Actually Shipped

September 09, 2026
Production

The build summary read a hand-maintained file that had drifted two minor versions behind, so a deploy of 3.38.2 reported itself as 3.36.49.

Bug Fix

The Authoritative Version in the Deploy Summary

The step that exists to state what is really on the server was reading the hand-maintained frontend version rather than the one the release bot bumps on every merge. It now reports the authoritative version, and the frontend value separately, so any drift between them stays visible instead of silently misreporting the release.

System Global
3.36.50

The Project System Gets the Screens Its Database Was Waiting For

September 08, 2026
Production

The network, the calendars, the cost plan and the WBS were complete in the database and over the API with no maintenance screen anywhere. They have one now — and on the way, every list in the module stopped serving the whole tenant.

Bug Fix

Every Project System Tab Was Showing Every Project

Thirty-one lists across the Project System declared a filter and none of them applied one. Asking for a single project’s activities was accepted, ignored, and answered with the whole tenant — so the Schedule tab drew every project’s activities, and so did Cost, Procurement, Billing, Issues, Meetings and Revenue. Nothing errored, because an ignored filter looks exactly like an empty one.

System Global
New Feature

Activities, Relationships and Calendars Can Be Maintained

Until now the only way an activity could be created was the MS Project importer — which refuses a project that already has activities, so the first import was also the last, and a project created on screen could never have a network at all.

The new Network tab adds, edits and deletes activities and relationships beneath the Gantt. The Gantt itself stays read-only: the scheduling columns are engine-owned. Confirming what actually happened and changing the plan are now gated separately, so a technically complete project refuses new scope while still accepting the news that old scope finished. A tenant is no longer limited to one seeded calendar: a new Calendars page maintains them.

System Global
New Feature

A Cost Plan That Can Actually Be Entered, and Earned Value That Says So

The cost plan had no screen either, so a plan line was uncreatable. Since a baseline copies its planned cost from the approved plan, that is why every project reported a budget at completion of ₹0 — and presented it as an answer.

The new Cost Plan tab carries plan versions, a line editor and approval; baselines now carry planned cost and record which plan it came from; and earned value returns a stated absence with a reason where there is no plan, rather than a zero.

System Global
New Feature

The WBS Can Be Edited, and a Delete That Would Strand Cost Is Refused

The WBS tab only ever had a create path — no edit, no delete, no status change — and even Add was disabled once the project left draft. The backend had supported all of it since the module shipped; nothing reached it.

Every writable field is now editable, including the parent: moving an element re-numbers its sub-tree, and how many elements moved is reported back rather than left for the planner to discover. Nothing is gated by a greyed-out button — the rules live on the server and a refusal is shown verbatim, which is the whole reason it names what is in the way.

Delete needed a guard before it could be offered at all. Removing an element would have left posted cost, open commitments and captured time addressing a work package that no tree shows, because a soft delete does not fire the database’s own protections. Every reference into the element is now counted first, walking the relationships themselves so a new one is covered the day it is added.

Administrators: run setup_rbac after upgrading — the scheduling permission now means “may change the plan”, so re-check who holds it.

System Global
3.36.51

A Tasks Report, and Unplanned Work Recorded as Unplanned

September 08, 2026
Production

A full Tasks report page with its own grid and pivot, plus an entry form for work that was never on the plan.

New Feature

The Tasks Report Page

A reporting screen over every task in the tenant, with the grid and a pivot over the same rows, lead time and completion type derived consistently in one place, and an Excel export.

Task Management Global
New Feature

Unplanned Task Entry

Work that was never on the plan can be recorded as such instead of being quietly appended to a project as though it had been scheduled, so the difference between what was planned and what actually happened survives into the report.

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.