github frappe/erpnext v16.32.0

6 hours ago

Features

  • Adds submission checks to Period Closing Voucher that compare stock account balances with the "Stock Ledger" report, require a completed company-wide Stock Closing Entry for the period-end date, and reject outdated stock snapshots.
    After closing, it blocks creating or cancelling stock ledger entries dated on or before the closing date, locks the supporting Stock Closing Entry, and starts batch valuation from the closing balance. (#57816)
  • Adds a "Sync Serial No Status" button to the "Stock Qty vs Serial No Count" report that updates listed Serial No records’ Status and Warehouse based on their latest stock movement. The sync changes serial number records only, leaving stock quantities, ledger entries, and valuation unchanged. (#57864)
  • Adds a Stock UOM field to Job Card, populated from the finished good or final product and filled in for existing records. Quantity messages and completion dialogs now show the applicable unit alongside each quantity, including comparisons between operations and raw-material transfers. (#57937)

Bug Fixes

  • Fixes stock valuation for batches when multiple stock entries share the same posting date and time by using the time each entry is posted. This keeps stock values in the correct order after backdated or amended transactions. (#57797)
  • Prevents a cancelled Subscription from being reactivated when its status is refreshed, including after its outstanding invoice is paid. Corrects period-end cancellation when End Date is empty or a billing period rolls over, preventing unintended invoice generation. (#57778)
  • Fixes the "Stock Ledger" report so its opening balance includes stock from all selected items, rather than only one item, and subsequent quantity and value balances start from the combined total. (#57796)
  • Preserves the hidden setting configured in Customize Form for Update Stock in Sales Invoice, so the field does not reappear when the form refreshes. (#57819)
  • Fixes the "Create Purchase Orders by Supplier" dialog in Material Request so submitting it can create purchase orders without failing on a check for existing drafts. (#57833)
  • Updates purchase returns from Purchase Receipt documents for batch-wise valued batches to use the batch’s current average rate when stock remains, preventing leftover stock value when the batch quantity reaches zero. Returns use the original receipt rate when the batch has no remaining balance. (#57836)
  • Rounds material request quantities in Production Plan after purchase-unit conversion, reducing unnecessary decimal values passed to Material Request and raw-material exports. (#57852)
  • Uses the optimized item search for Item Code in Product Bundle item rows, reducing oversized search results and UI freezes. (#57870)
  • Skips reconciliation table cleanup when a table is not yet available during an update, preventing an error in that situation. (#57882)
  • Sets Conversion Factor fields in transaction items to nine decimal places and rounds calculated values to match, so unit-of-measure conversions retain accuracy in derived stock quantities and rates even when the site's general number precision is lower. (#57884)
  • Updates the "Stock Ledger Invariant Check" report so Moving Average items no longer display FIFO queue differences that do not apply to them. The "Show Incorrect Entries" option now also lists entries with mismatched FIFO queue quantities or values when a queue is maintained. (#57889)
  • Updates Repost Item Valuation to use the current stock valuation rate when recalculating multi-line returns with Moving Average valuation, rather than a rate from another line in the same return. Reposting these returns repeatedly now keeps valuation rates consistent and avoids related stock-value overflow failures. (#57890)
  • Fixes the validation message shown in Journal Entry when a Purchase Invoice is blocked and has no release date. (#57896)
  • Restricts the data and actions available to templates used for shipping addresses, Payment Request, Request for Quotation, Contract Template, Email Campaign, and Delivery Trip notifications. This limits templates to the information needed to generate addresses, documents, and emails. (#57902)
  • Updates Timesheet to set Employee and Company only when both values are found for the current user, instead of treating an empty lookup result as valid. (#57905)
  • Adds a permission check when a web form creates a Task or changes its Project, blocking users who lack access to that project. (#57908)
  • Updates Sales Order validation to accept sales team Allocated Percentage totals of 100% when minor decimal rounding differences make the calculated sum slightly different. (#57913)
  • Adds a Warehouse field to the "Update Items" dialog in Sales Order, allowing users to choose a warehouse when adding an item without a default warehouse. (#57910)
  • Automatically refreshes open Purchase Receipt, Delivery Note, Stock Entry, and Job Card forms when a related Quality Inspection is submitted, cancelled, or deleted, so unchanged forms do not require a manual reload before saving or submitting. Forms with unsaved changes still show a conflict message. (#57919)
  • Allows negative Grand Total values in Sales Order and Purchase Order when Allow Negative Rates for Items is enabled in the relevant Selling Settings or Buying Settings; negative Quantity values remain blocked. (#57923)
  • Renames Italy-specific Customer fields from first_name and last_name to italy_customer_first_name and italy_customer_last_name, preventing duplicate-field errors when customizing Customer records. Existing values are copied to the renamed fields, and Italian e-invoices use them. (#57922)
  • Requires quantities from earlier operations to be actually produced before the next Job Card operation can proceed when a Work Order tracks semi-finished goods. Work orders without semi-finished-goods tracking continue to use the operation’s recorded completed quantity. (#57931)
  • Updates Job Card completion to apply the Qty to Manufacture entered for the current cycle while retaining quantities completed in earlier cycles and preventing the remaining quantity from being incorrectly recorded as process loss. (#57935)
  • Updates Job Card status and manufacturing entries to exclude quantities handed to another job card; the card advances and the entry covers only the quantity it still needs to produce. (#57936)
  • Prevents inconsistent completion splits in Job Card entries when Completed Qty, Pending Qty, and Process Loss Qty cannot add up to Qty to Manufacture; the completion dialogs reject conflicting values before saving, and submission errors identify each quantity separately. (#57933)
  • Fixes Track Semi Finished Goods manufacturing so process loss recorded on one Job Card no longer reduces the output of another operation’s "Manufacture" Stock Entry. It also requires the necessary finished-good and work-in-progress warehouse details and limits each entry’s finished goods and raw materials to the Job Card’s remaining quantities. (#57930)
  • Updates the "Sales Register" ledger view to include credits applied directly to an invoice’s receivable, including POS payments, loyalty redemptions, and POS write-offs. Fully paid POS invoices now show matching debit and credit amounts instead of an outstanding balance. (#57946)
  • Escapes HTML entered in Customer Details when creating a Lead from an Appointment, so the lead’s notes display it as text rather than interpreting it as markup. (#57949)
  • Recalculates Downtime in Asset Repair from Failure Date and Completion Date when the repair status or either date changes, including when the record is saved. (#57953)
  • Prevents a division-by-zero error when reposting a serial-and-batch item in Stock Reconciliation with zero current quantity by setting its incoming rate to zero. (#57957)
  • Rechecks later stock transactions before queuing a Repost Item Valuation, so a backdated Stock Entry submitted while a newer transaction is added is included in valuation reposting. (#57961)
  • Clears Service Start Date, Service End Date, Service Stop Date, and Deferred Revenue Account or Deferred Expense Account from Sales Invoice and Purchase Invoice items when Enable Deferred Revenue or Enable Deferred Expense is unchecked. (#57831)
  • Checks access to the linked document and validates requested fields when retrieving Stock Reservation Entry records. (#57970)
  • Preserves custom Title values supplied when creating new Journal Entry records, rather than replacing them with automatically generated titles. (#57989)
  • Keeps the source document’s Rate, Discount, and Margin when item details are refreshed with Maintain Same Rate Throughout the Purchase Cycle enabled, instead of replacing them with the latest Item Price. (#57792)
  • Keeps an item's Item Code searchable in BOM when it matches another item's Barcode, so the item-code match remains available for selection. (#58002)
  • Updates the "BOM Explorer" report to accumulate quantities across nested BOM levels and convert child quantities when BOMs use different output quantities or stock units. Displays each component quantity in the unit specified on its BOM item. (#58007)
  • For work orders that transfer materials against a Job Card, starting or completing the card is blocked until the required material transfer is recorded; the "Start Job" and "Complete Job" actions are also hidden while the transfer is pending. Corrective job cards, cards set to skip material transfers, and work orders that transfer materials against the work order remain unaffected. (#58014)
  • Updates Sales Invoice creation from a Sales Order to calculate billable quantities after deliveries, returns, re-deliveries, and previous invoices. Re-delivered items now appear with the remaining quantity instead of showing zero, while fully billed items are excluded. (#58012)
  • Uses the selected operation’s original Work Order entry when recreating a Job Card, preventing materials from another operation from appearing in its Raw Materials table. (#58017)
  • Updates Driver to populate the Address field from the selected Transporter’s default Address, including when Supplier uses naming series. (#58023)
  • Prevents Purchase Order billed amounts from being duplicated across linked Purchase Receipts. Purchase Receipts created from a Purchase Invoice retain their billed amount instead of being incorrectly marked as needing billing again. (#58043)
  • Adds validation for new non-group Warehouse records when perpetual inventory is enabled, including inheritance of a valid inventory account from the parent. Warehouse account checks now show a clear validation message when a required account is missing instead of displaying an internal error. (#58040)
  • Refreshes item-specific details when an item changes in a Sales Order, clearing stale values from the previous item such as UOM, Conversion Factor, Weight, Barcode, and pricing rules. It preserves Quantity, Warehouse, Delivery Date, and any explicitly selected UOM. (#58053)
  • Corrects account and section labels in the "Cash Flow" report and calculates filtered totals correctly when some period values are missing. (#58056)
  • Updates Customer overdue amount checks to use payment allocations instead of general ledger tags, so invoices fully settled through Payment Reconciliation are not counted toward the overdue limit when Restrict Customer Over Billing is enabled. (#58057)
  • Allows users without administrator access to import a chart of accounts through Chart of Accounts Importer without permission errors for related Party Account, Mode of Payment Account, and Tax Withholding Account records. (#58060)
  • Corrects rounding for document-level discounts distributed across items, so the recorded item discounts add up to the document discount and match each item’s net amount. When discount accounting is enabled, the adjustment no longer reduces the income amount recorded in the ledger. (#58055)
  • Adds checks to Chart of Accounts Importer for the uploaded account file and access to existing accounts before replacing them. It blocks imports for companies with existing transactions or when the user cannot access all existing accounts. (#58066)

Authors: @mihir-kandoi, @ervishnucs, @Sudharsanan11, @harisansari008, @Henil666, @rohitwaghchaure, @krishna-254, @Shllokkk, @diptanilsaha, @kaulith, @barredterra, @nishkagosalia, @Jatin3128, @Pandiyan5273
Reviewers: @mihir-kandoi, @khushi8112, @rohitwaghchaure, @diptanilsaha, @Jatin3128, @ruthra-kumar

AI content

For these release notes, we used an LLM (OpenAI gpt-5.6-luna) to review and summarise the code changes, along with the associated issue and PR descriptions. It may contain typical errors and inaccuracies. You can read the prompt here.

Changes with the following labels were excluded:

  • skip-release-notes

Changes with the following types were excluded:

  • style
  • build
  • ci
  • refactor
  • docs
  • chore
  • test

Don't miss a new erpnext release

NewReleases is sending notifications on new releases.