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

Sales Order BOM Tree, Goods Receipt Printout, and a Project Go-Live Date

September 11, 2026
Production

The sales order BOM list reads as a tree, the goods receipt printout carries more of the document, and a project records the date it is expected to go live.

Improvement

More of the Document on the Goods Receipt Printout

The goods receipt printout carries additional document detail that previously had to be looked up on screen.

Inventory Global
Improvement

The BOM List Reads Down the Tree

The sales order BOM list and detail show the structure’s level and its place under its parent, so a three-level explosion reads as one contiguous tree starting at its finished good rather than as an unordered list of structures.

Production Global
New Feature

Go-Live Date on a Project

A project can record the date it is expected to go live, and the project list and dashboard report against it.

System Global
3.38.4

Scheduling That Knows Who Is Already Busy

September 10, 2026
Production

A plain critical-path pass answers “how long if everyone is free”. Resource capacity is now reported on every run and acted on when the project asks for it, activity numbers allocate themselves, and the Gantt stops overlapping the page below it.

Bug Fix

The Gantt No Longer Overlaps the Page Below It

A Gantt chart is a split pane, and the stylesheet for the splitter was never loaded, so both halves rendered full width and stacked — the chart landing on top of whatever followed it, and worse the more activities there were. The chart also sizes to its row count now, rather than leaving three bars above 300px of empty timeline.

System Global
New Feature

Capacity Is Reported on Every Run, and Moved Only When Asked

Three unlinked three-day activities with one person on all three all started on day one and asked that person for twelve hours a day against a capacity of eight. Nothing said so.

Capacity is now two separate acts. Conflicts are reported on every run and on page load; levelling moves work, and only when the project is set to. That choice is stored on the project and applied by one switch that schedules and saves — as a preview-then-commit pair a refresh lost it, and as a per-run flag the next plain run silently un-levelled the plan and restored an over-allocation nobody had chosen to accept.

Levelling adds real dependencies rather than just moving dates, so float and the critical chain stay meaningful; it never moves a pinned activity; and zero capacity on file means “nothing to compare”, never “no hours”.

Why nobody had ever seen an over-allocation: adding a person through Project People created their row with zero capacity, a rule meant for external contacts. Only external kinds are zeroed now, and capacity is editable for the first time, from a column on the Project People page. Existing employee rows already stored at zero are not repaired automatically — audit them.

System Global
New Feature

An Activity Number Is Allocated When Left Blank

Leaving the activity code empty now allocates one per project: multiples of ten, four digits, so 0015 can still be inserted by hand between 0010 and 0020. The maximum is read as a number, never as text, and a code that has been used and deleted is never reissued.

System Global
3.38.5

The Running Balance and the Grid Now Sort the Same Way

September 10, 2026
Production

The Balance column was accumulated in statement order while the grid sorted on the bare posting date, so every block of same-date rows read backwards on the vendor and customer ledgers — from first paint, not only after a header click.

Bug Fix

Same-Date Rows Read in Statement Order

Ties are the rule, not the exception — a journal puts every one of its legs on the same day by definition. On one tenant, 751 of 1,152 vendor rows, 2,320 of 2,637 customer rows and 31,638 of 32,888 GL lines share a posting date with a sibling.

Where the balance is accumulated in one order and the rows are shown in another, a run of credits appears to shrink the payable. The accumulation order is now stamped on each row and the Posting Date column sorts by it outright — which also settles the rows whose displayed date falls back to the document date.

Under any other sort the balance genuinely cannot chain, so it is greyed and italicised with a tooltip saying why. Greyed, not blanked: it is still that row’s own true balance. The Excel export cannot carry a tooltip, so it is always written in statement order with a header line saying the file does not follow the screen.

A balance accumulated in floating point lands a settled row a hair above zero rather than on it, which painted it as still owed. It is now compared against half a paisa.

Finance Global
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

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

Want a walkthrough of what's new?

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