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

The Approvals Queue Is Yours, and Delegation Cannot Route Around Maker-Checker

September 05, 2026
Production

An administrator was shown every approval in the system as though they were their own tasks, and delegation could be used two different ways to hand an approval back to the person who raised it.

Bug Fix

An Administrator Is Not Shown Everybody Else’s Approvals

The approvals list exempted administrators and handed them every approval in the system. The dashboard count and the tasks sidebar both read that list, so an administrator saw other people’s approvals presented as their own work and could only find out otherwise by pressing Approve and being refused. Maker-checker working correctly looked like a broken permission.

The queue is now scoped to the caller for everyone. Organisation-wide oversight is not lost — it lives on the workflow instances screen, which is what the administration page actually reads. Every row now also states whether you may act on it, and Approve, Reject and Return are disabled with a tooltip saying why when you may not.

Workflow Global
Security Update

Delegation No Longer Breaks Maker-Checker

Approval authority in this engine is maker-checker: only the person an approval is assigned to may act on it, and whoever submitted the document is excluded from being resolved as its approver. Delegation offered two ways around that, both now closed by one shared rule.

  • The delegate action rewrote the assignment with no checks at all, so anyone who could load an approval could route it to themselves and then approve it. It now refuses a non-holder, a self-delegation, and delegating to the submitter.
  • A standing delegation was never checked against the submitter, so a delegation pointing at the person who raised the document handed the approval straight back to them at assignment time. Such a delegation is now dropped with a warning and the approval stays with the original approver, who is a valid checker.
Workflow Global
3.36.43

A Vendor Closing Balance Is a Balance, Not an Aging Total

September 05, 2026
Production

The Closing Balance card was the sum of the aging buckets, which cannot see an opening balance, an unallocated payment, an advance or a posted adjustment note. It and the bottom of the statement are now the same number by construction.

Bug Fix

Closing Balance and the Statement Agree

The vendor’s balance was computed as the total of the aging buckets. That answers what is open and how old is it, not what is this vendor’s balance, and the two agree only while the ledger holds nothing the buckets cannot see: an opening balance is not a transaction, an invoice with no due date is skipped outright, an unallocated payment or advance has no bucket at all, and a posted adjustment note that reduced the payable in the general ledger was invisible in the balance.

Separately, the statement’s running balance left TDS out, so the card and the last row of the grid disagreed by exactly the tax withheld.

Both now accumulate opening plus credits less debits less TDS, so the card and the bottom of the statement are the same figure by construction. The buckets stay what they always were: an aging of what is still open.

A negative closing balance is now possible and correct — it is a vendor sitting in advance, which a bucket total could not express. The KPI row reconciles too: TDS, debit-note and credit-note cards appear when non-zero, and Total Payment counts payments and advances rather than every debit.

Administrators: rebuild_vendor_ledger_balances recomputes the stored values per tenant, reporting by default. On one tenant it corrected 53 closing balances, 33 of which revealed vendor advances nobody could see.

Finance Global
3.36.45

Save the Way You Read a Vendor Statement

September 05, 2026
Production

Column visibility, order and width on the vendor ledger can be saved as a named layout, and the money columns are labelled and ordered the way a statement is read: Debit before Credit.

Improvement

Debit Before Credit, and a Foreign Column per Side

The money columns are renamed to plain Debit and Credit, with Debit placed first, in the reading order of a statement.

The single combined foreign-currency column becomes two. It held whichever side had a value, so it could not say which way a document moved the balance without the reader looking across at the rupee columns. Both sides are now real fields, which is also what keeps the Excel export right.

Finance Global
New Feature

Saveable Column Layouts on the Vendor Ledger

Columns can be picked, dragged and resized, and the result saved as a named layout, set as your default, reset or deleted. Every such choice previously died with the page.

The control is now one button rather than a name field beside a button: its label is the layout in force and its menu carries the picker above the actions. It sits in the tab strip, so it costs no vertical space at all. The same control is applied to the Tasks worksheet, which keeps its unsaved-edits guard.

Finance Global
3.36.39

Department, and Everything Else, on the Task Worksheet

September 04, 2026
Production

The task worksheet had no Department column at all, so an uploaded task’s Category sat where a reader expected its Department. Department is now shown, with every other field the list can answer available from the column chooser.

Bug Fix

The Task List Could Fail to Render on a Stale Employee

The assignee name reached for a field the list query did not fetch, so every row paid a second database round trip — and when that re-fetch found nothing, the whole list raised an error instead of rendering. Serving a 78-task project now costs four queries.

Task Management Global
New Feature

Department, Dates, Float and Provenance as Columns

Department is now a visible column on the task worksheet, and every other field the task list can answer is added alongside it — hidden by default and reachable from the column chooser, so the default sheet stays the width it was.

What that adds: assignment (department, role), the dates the plan actually moved on (revised end, actual start and end), ordering and verification, the scheduling pass’s own output (earliest and latest start and finish, total and free float, weight) and provenance (WBS element, task definition, generation date). The new columns are deliberately read-only: a column that looks editable but is dropped on save is worse than one that plainly is not.

Task Management Global
3.36.40

A Manual Payment Says What Credit the Vendor Already Holds

September 04, 2026
Production

The payment screen listed invoices and said nothing about an open advance, so it would pay the full amount while the vendor kept the advance and the cash both.

New Feature

Open Vendor Credit Is Named Before the Payment Goes Out

One vendor held a ₹5,00,000 approved advance with nothing allocated, and two open invoices. The manual payment screen showed the invoices and had no concept of a credit at all.

Open credit is now reported on the screen, in two tiers split on currency. A credit in the same currency as a selected invoice could have cleared it, so it is named and totalled and the payment waits on a written acknowledgement — a tick box reading “pay without applying ₹X of open credit”. A credit in any other currency could not have been applied to this payment anyway; it is reported and blocks nothing, because asking for a confirmation on a payment that was never at risk is how confirmations become reflexive.

The rule lives in the endpoint, not only on the screen. It is deliberately soft: an advance is not proof that it belongs to the invoices being paid, and a hard refusal would strand an operator who has no right to apply the credit either. A bypass is stamped on the payment’s own notes naming each credit left unapplied — and nothing is stamped when the box was ticked but no credit was actually open, because that would be a false statement on the document.

Finance Global
3.36.38

The Task Upload Reads the Sheet You Meant

September 04, 2026
Production

A real TA workbook reported “the meta block has no Project value” on a file whose Project cell was filled in. Four separate causes, all in how the workbook was read.

Bug Fix

The Right Sheet, and the Header Block Wherever It Sits

The upload took the first sheet in the workbook, blindly. One real file carried fourteen sheets and position one held a TA sheet for a different, earlier order — which parsed perfectly and named a project that was not the one being uploaded. Sheets are now scored on whether they name a project, carry a planned start date and hold task rows; the best one wins, every task sheet found is offered, and an explicit choice still overrides. A workbook with no task sheet at all is refused by name instead of falling back to sheet one.

The header block was read only below the column headings, only from rows carrying a particular flag, and only from the end-date column. Real files do none of those three reliably, so the whole grid is scanned now, in any column. Labels are matched exactly, then as a phrase inside a longer cell, then by close spelling — and a column heading can never be mistaken for a header label, which is what previously turned the heading row into data and the first task into a heading.

The first heading row is not always the complete one: in that file only the second row named Employee ID and Employee Name, so every task imported unassigned. Columns the first row omits are now filled in from a later one, and columns it does name are never overridden.

When a value really is missing, the message now names what the pass did read and lists the cells it could not match, with their references — so a sheet the parser does not recognise stops looking like a blank cell.

Task Management Global
3.36.42

GST Receipt Voucher for Advances Received

September 04, 2026
Production

An advance is a taxable event with no invoice behind it. The receipt voucher required by section 31(3)(d) is now raised from the receipt itself, flows into GSTR-1 Table 11A and out again at 11B, and nets through GSTR-3B.

Improvement

The Invoice Screens Prompt for an Open Advance

Both AR invoice screens now show the customer’s open advances and offer to adjust them. They prompt; they never knock an advance off automatically — which invoice an advance belongs to is a judgement, not a lookup.

Administrators: after upgrading, run batch_migrate --app fi_ar and setup_rbac, then configure a GST advance account per company. Issuing a voucher refuses by name without a tax-on-advances account.

Finance Global
New Feature

A Receipt Voucher Raised on the Receipt Itself

Tax on an advance is due in the month the money lands, reported in GSTR-1 Table 11A, and reversed at Table 11B when the tax invoice finally goes out. There was no document for it.

The voucher is an overlay on the customer receipt, not a second cash document. The receipt already owns the bank leg, the ledger, the reconciliation and the reversal engine, and a parallel document would fork all of them. A receipt already applied to invoices is refused by name — that supply is taxed on its invoice — as is a foreign-currency receipt, because GST is a rupee liability and nothing here gets to pick the conversion rate.

The amount received is always tax-inclusive, so the tax is the subtraction of taxable value from gross, never a rate applied forward. Computed forward off a rounded taxable value, the columns fail to add up by a paisa on roughly half of all amounts — and a statutory document whose own columns do not add up is not defensible.

The tax posts as its own journal, so a receipt with no voucher posts exactly the two legs it always did. Adjustment resolves the invoice rather than trusting the reference it was handed: an id naming nothing, another customer’s invoice or a draft is a bad filed return.

Finance Global
New Feature

The Statutory Fallbacks Are Recorded as Fallbacks

Where the rate cannot be determined the law says 18%; where the place of supply cannot be determined it says treat the supply as inter-State. Both are applied — and both are recorded as fallbacks on the voucher, because a default nobody can see is indistinguishable from a decision, and whoever prepares GSTR-1 has to know which Table 11A rows to revisit before filing. A tenant-configured default tax code is not flagged: the tenant chose it.

Rule 49 caps the voucher serial at sixteen characters, so an over-long numbering pattern is refused rather than truncated into a collision.

Finance Global
3.36.41

The Vendor Ledger Says TDS When It Means TDS

September 04, 2026
Production

Tax withheld at source was being recorded as though payments had been allocated against the invoice, so an unpaid invoice looked part-settled with no explanation anywhere on the ledger.

Bug Fix

Withheld Tax Is Recorded as TDS, Not as an Allocation

An invoice showing ₹10,32,500 credited and ₹10,15,000 outstanding with no payment against it was explaining nothing: the ₹17,500 difference was TDS withheld at posting, and the whole withheld amount had been pushed into the allocated column because that was the only lever that made the outstanding figure come out right.

So the sub-ledger reported an allocation that never happened and could not say why an unpaid invoice was part-closed. The general ledger was never wrong.

TDS is now stored as TDS, the allocated column goes back to meaning what payments actually cleared, and the Vendor Ledger grid has a TDS column — without which filling in the field would still have shown the operator nothing. Historical rows compute the same outstanding figure either way.

Administrators: run backfill_vendor_ledger_tds --tenant <id> to restate existing invoices. It reports by default and writes only with --apply. No balance changes — an amount only stops being called an allocation and starts being called TDS.

Finance Global
3.36.37

A Marker Can Name the Production Orders It Cuts For

September 03, 2026
Production

Cutting Room markers now carry the production orders they are cut against, and the marker list and form were rebuilt around them.

New Feature

Production Orders on a Marker

A marker is now linked to the production orders it is being cut for, with each order’s own quantities visible while the marker is planned. The marker form and list were rebuilt around that link, and production planning answers the order and quantity lookups the form needs.

Production Global
3.36.33

Two Upgrade Steps That Could Abort a Deploy

September 03, 2026
Production

A help-article seed and the new chart-of-accounts seed each aborted the upgrade on some tenants. Both now take the &ldquo;already seeded, do nothing&rdquo; path.

Bug Fix

The Upgrade No Longer Stops on Two Seed Steps

A help-documentation seed named a field that lives on a different record, and the chart-of-accounts seed checked for an existing chart by its filing type — which misses a tenant whose chart is filed under an older type code, and then collided with the accounts that tenant already owned.

The chart seed now works out every code it would write and stops if any of them already exists, which is what it always claimed to do. Neither change touches an existing row.

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