From 0312d58dca19ce78fedbbf04a534268aef54c7d9 Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Wed, 4 Feb 2026 04:29:22 +0000 Subject: [PATCH 01/18] chore(release): Bumped to Version 16.4.0 # [16.4.0](https://github.com/frappe/erpnext/compare/v16.3.0...v16.4.0) (2026-02-04) ### Bug Fixes * add precision to rejected batch no qty calculation ([b365444](https://github.com/frappe/erpnext/commit/b365444027a8c9d41cfd8af4f4d21fa4de26a602)) * allow sales invoice to be renamed ([f7b915d](https://github.com/frappe/erpnext/commit/f7b915dfe6ce7085d5a0644b5c4e323bd1929ca4)) * **barcode:** failing request when item has both batch and serial ([e4cdd97](https://github.com/frappe/erpnext/commit/e4cdd971c8c3ec4f16083949d6c0b594a7d2a95e)) * batch selector not working if Use Legacy (Client side) Reactivity disabled ([2a3642b](https://github.com/frappe/erpnext/commit/2a3642b55a7844e737bcf50cba6fdbaa620b211a)) * better fix for aac39b2671ebe8aed562a9b92ee26876979b0650 ([b8ab55f](https://github.com/frappe/erpnext/commit/b8ab55fee8b370bb5e88a39516b1409dbdef695f)) * correct exchange gain loss in ppr ([e09406d](https://github.com/frappe/erpnext/commit/e09406d08599b09ccdd8b16e3761fe18b8ea33de)) * correct Sales Tax Template sidebar link to proper DocType ([4c14e74](https://github.com/frappe/erpnext/commit/4c14e74a121205ac30f93da4ca4004478f8d6a44)) * correct spelling of Payment Reconciliation in Accounting ([c80b554](https://github.com/frappe/erpnext/commit/c80b554cd7aad9fe64d32dbffd654cee3917f3bc)) * **credit-note:** set incoming rate as zero for expired batch ([0f9bf08](https://github.com/frappe/erpnext/commit/0f9bf08685df67c7981eccd37c61e1ee945908e8)) * **demo:** removed toolbar eventlistener (backport [#52171](https://github.com/frappe/erpnext/issues/52171)) ([#52172](https://github.com/frappe/erpnext/issues/52172)) ([6608601](https://github.com/frappe/erpnext/commit/66086010fc9b719f48e45ebaad130cb3cc977337)) * duplicate account number (Indonesia COA) (backport [#52080](https://github.com/frappe/erpnext/issues/52080)) ([#52317](https://github.com/frappe/erpnext/issues/52317)) ([81e6575](https://github.com/frappe/erpnext/commit/81e65757ee00e589c437e89e0fceeb199bf2568a)) * failing test cases ([136b2cf](https://github.com/frappe/erpnext/commit/136b2cfba545dd9a951cda253bb539514a7569e0)) * group item wise tax details by tax row ([45e4c04](https://github.com/frappe/erpnext/commit/45e4c04830113676e87008fd91f60fdd418370be)) * hide close button on WO if WO is completed ([0d1c30f](https://github.com/frappe/erpnext/commit/0d1c30f3f044885b36499defaf43a4313f8eb047)) * hide item_wise_tax_details table from print ([c619be9](https://github.com/frappe/erpnext/commit/c619be989bfde5934cbabf30c0433693d53c5b4f)) * include credit notes in project gross margin calculation ([e755a4a](https://github.com/frappe/erpnext/commit/e755a4ad98e89d6e5056140975963940f5b4962f)) * item code not showing in report view ([af167f9](https://github.com/frappe/erpnext/commit/af167f91fe882364ff54222cd5014022d6fd18a5)) * journal auditing voucher print date to use posting_date ([7e5eab2](https://github.com/frappe/erpnext/commit/7e5eab261cf71926580e03b760a203d9687ec285)) * **journal-entry:** normalize exchange rate to float ([3f0032d](https://github.com/frappe/erpnext/commit/3f0032d7930e846c8f998ed0b3d46ef83ea3f771)) * js error if user does not have write permission for date field ([3944dfd](https://github.com/frappe/erpnext/commit/3944dfde3104049f95d20a7c7448b4c0f5e67821)) * lead time calculation for FG item ([5595602](https://github.com/frappe/erpnext/commit/5595602f24f3c695b83dd0ded061ade6bb4a78b0)) * make item name editable in RFQ ([dbe5846](https://github.com/frappe/erpnext/commit/dbe58469082557480bf968847894082a59ceeb98)) * merge taxes in purchase receipt when get items from multiple purchase invoices ([#51422](https://github.com/frappe/erpnext/issues/51422)) ([d80c8d1](https://github.com/frappe/erpnext/commit/d80c8d14b0a3042fb8715e1d390a857232781550)) * missing depr_series causing error on jv creation (backport [#52085](https://github.com/frappe/erpnext/issues/52085)) ([#52206](https://github.com/frappe/erpnext/issues/52206)) ([78c4f01](https://github.com/frappe/erpnext/commit/78c4f0173300de1d1191fa040345d3829efe3263)) * negative stock for purchase return ([220a528](https://github.com/frappe/erpnext/commit/220a528d7f0172e58c89b16be3111ba7eb14783f)) * populate contact fields when creating quotation from customer ([55129e6](https://github.com/frappe/erpnext/commit/55129e697d9cc86d134dc327c5344607fb5d5c32)) * production plan not considering planning datetime when creating WO ([7e7b16b](https://github.com/frappe/erpnext/commit/7e7b16b23e8dcd47b0227b9ffefc7603c1e4f326)) * **profit and loss statement:** exclude non period columns ([28e8c40](https://github.com/frappe/erpnext/commit/28e8c40bfc8894f6c6ca17a2f3500ef32e4fdada)) * reset incoming rate in selling controller if there are changes in item ([024e7b0](https://github.com/frappe/erpnext/commit/024e7b01ac18da61a5ed26c1e8ef877ac2fd603a)) * **RFQ:** render email templates for preview and sending ([687a80d](https://github.com/frappe/erpnext/commit/687a80d74c47b4d63f25563680f456204ab357e4)) * **stock:** add stock recon opening stock condition ([f9a8fc1](https://github.com/frappe/erpnext/commit/f9a8fc1f2de3637f954af378bb25da1f247e3371)) * **stock:** fetch batch wise valuation rate in get_items ([b132e3f](https://github.com/frappe/erpnext/commit/b132e3f22a6da31432c0962428c710decab215e6)) * **stock:** ignore packing slip while cancelling the sales invoice ([f425f89](https://github.com/frappe/erpnext/commit/f425f89a26fabfb855fb28c55424696e663c3ef8)) * **stock:** include subcontracting order qty while calculating the bin qty ([de244e0](https://github.com/frappe/erpnext/commit/de244e0af742cabace0f1ab2de6bd9ec23247e84)) * **stock:** remove is_return condition on pos batch qty calculation ([9dcaf38](https://github.com/frappe/erpnext/commit/9dcaf381420d0a2f7e57399ca0ef9602dd141a7d)) * **stock:** set incoming_rate with lcv rate for internal purchase ([f462639](https://github.com/frappe/erpnext/commit/f462639aa0080429370507e0a53d939643362ea5)) * **subcontracting:** include item bom in supplied items grouping key ([95c4b8d](https://github.com/frappe/erpnext/commit/95c4b8de064f93e137c4b5f27bd42f674d35ee8b)) * test cases ([e74389f](https://github.com/frappe/erpnext/commit/e74389f01ca7467163c7d465a5853135e1b05d83)) * validate over ordering of quotation ([e7ace8e](https://github.com/frappe/erpnext/commit/e7ace8e620602501941afd3c48906814bc53ba1c)) * validation when more than one FG items in repack stock entry ([a2d302b](https://github.com/frappe/erpnext/commit/a2d302b3fa9843d9ed1c3599a8ad464faa356b1b)) * zero valuation rate if returning from different warehouse ([8ce51b2](https://github.com/frappe/erpnext/commit/8ce51b2f8035bdb1073a6490f796de4f546dc8b0)) ### Features * clear demo data from desktop screen (backport [#52128](https://github.com/frappe/erpnext/issues/52128)) ([#52147](https://github.com/frappe/erpnext/issues/52147)) ([05e30dc](https://github.com/frappe/erpnext/commit/05e30dc01163170ae6d01aafbf5c5b6e0471211d)) * **credit-note:** add checkbox to set valuation rate as zero for expired batch ([b84fd46](https://github.com/frappe/erpnext/commit/b84fd468411a7ddd79b3bfade9e27760aa212ece)) * **delivery-note:** add status indicator when document is partially billed ([6048add](https://github.com/frappe/erpnext/commit/6048add4c04dab7253d48d2b6486b340f0ee9b35)) * document naming rule will now use posting date of the document ([b03494b](https://github.com/frappe/erpnext/commit/b03494bb67afcc9d363002ec4cc165f44968fcce)) * **Transaction Deletion Record:** Editable "DocTypes To Delete" List with CSV import/export ([#50592](https://github.com/frappe/erpnext/issues/50592)) ([4963261](https://github.com/frappe/erpnext/commit/4963261dc8249c012c47e0466c99f91bd40dd02c)) --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index b5ded4ee0fa..f9ab4753303 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -6,7 +6,7 @@ import frappe from frappe.model.document import Document from frappe.utils.user import is_website_user -__version__ = "16.3.0" +__version__ = "16.4.0" def get_default_company(user=None): From e0093199b179df5f596a0d929a176b93fd9e8ab6 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Thu, 5 Feb 2026 14:32:48 +0530 Subject: [PATCH 02/18] fix: stock balance report issue (cherry picked from commit 7e584dd84aef472c80385cc3f7f55f4301e9f98b) (cherry picked from commit 62616ad9e1685faf09fdada25dfb9da637c774c4) --- erpnext/stock/report/stock_balance/stock_balance.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py index 559e1b31a36..524b8d830d2 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.py +++ b/erpnext/stock/report/stock_balance/stock_balance.py @@ -282,10 +282,8 @@ class StockBalanceReport: for field in self.inventory_dimensions: qty_dict[field] = entry.get(field) - if ( - entry.voucher_type == "Stock Reconciliation" - and frappe.get_cached_value(entry.voucher_type, entry.voucher_no, "purpose") != "Opening Stock" - and (not entry.batch_no or entry.serial_no) + if entry.voucher_type == "Stock Reconciliation" and ( + not entry.batch_no or not entry.serial_no or not entry.serial_and_batch_bundle ): qty_diff = flt(entry.qty_after_transaction) - flt(qty_dict.bal_qty) else: From 4305415ed95a51605ae051ccc080f38b2a2b2a53 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Thu, 5 Feb 2026 15:02:47 +0530 Subject: [PATCH 03/18] chore: fix issue (cherry picked from commit 1d24abf5ddccabce25863d793dd6dd3c67922e70) --- erpnext/stock/report/stock_balance/stock_balance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py index 524b8d830d2..ccee40ce25f 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.py +++ b/erpnext/stock/report/stock_balance/stock_balance.py @@ -283,7 +283,7 @@ class StockBalanceReport: qty_dict[field] = entry.get(field) if entry.voucher_type == "Stock Reconciliation" and ( - not entry.batch_no or not entry.serial_no or not entry.serial_and_batch_bundle + not entry.batch_no and not entry.serial_no and not entry.serial_and_batch_bundle ): qty_diff = flt(entry.qty_after_transaction) - flt(qty_dict.bal_qty) else: From d74a649016d8bb12ee3c5a24361171cebe860bfc Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Thu, 5 Feb 2026 10:52:48 +0000 Subject: [PATCH 04/18] chore(release): Bumped to Version 16.4.1 ## [16.4.1](https://github.com/frappe/erpnext/compare/v16.4.0...v16.4.1) (2026-02-05) ### Bug Fixes * stock balance report issue ([e009319](https://github.com/frappe/erpnext/commit/e0093199b179df5f596a0d929a176b93fd9e8ab6)) --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index f9ab4753303..220a888de81 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -6,7 +6,7 @@ import frappe from frappe.model.document import Document from frappe.utils.user import is_website_user -__version__ = "16.4.0" +__version__ = "16.4.1" def get_default_company(user=None): From 6e7e219f712c55a162bf37366ca94f7e5e2aba59 Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Wed, 11 Feb 2026 06:03:37 +0000 Subject: [PATCH 05/18] chore(release): Bumped to Version 16.5.0 # [16.5.0](https://github.com/frappe/erpnext/compare/v16.4.1...v16.5.0) (2026-02-11) ### Bug Fixes * Added a missing option to the currency field (backport [#52528](https://github.com/frappe/erpnext/issues/52528)) ([#52587](https://github.com/frappe/erpnext/issues/52587)) ([1c3fe00](https://github.com/frappe/erpnext/commit/1c3fe000ba534a910851151667379ee8ccf5c365)) * Added validation for quality inspection in job card ([a1ec68c](https://github.com/frappe/erpnext/commit/a1ec68cd1eee257ad148f8773d61818b2d3e469d)) * apply composite asset logic only in draft ([d2387a3](https://github.com/frappe/erpnext/commit/d2387a3af87bc1984bbd7cd66f9a710e9874c64f)) * **balance sheet:** removed the extra labels from the chart ([6a9a28b](https://github.com/frappe/erpnext/commit/6a9a28b4ae4c069e8437c3ab7f8265e7a89d1af4)) * **buying:** add supplier group link filters in field level ([9886b46](https://github.com/frappe/erpnext/commit/9886b46cb45b371d96da30636dcc454471cf9214)) * correctly calculate running balances for financial report ([7df18af](https://github.com/frappe/erpnext/commit/7df18af799fae30a385d2d8a6c5ac04bde22d916)) * do not show update stock flag unneccessarily ([c0c6cc5](https://github.com/frappe/erpnext/commit/c0c6cc58ed7da80558ec48e6d2579904a9ff42d5)) * email campaign timeout issue (backport [#51994](https://github.com/frappe/erpnext/issues/51994)) ([#52556](https://github.com/frappe/erpnext/issues/52556)) ([e753df8](https://github.com/frappe/erpnext/commit/e753df8ff05c12f94017db4bb23b1bdd30369817)) * enabling skip delivery option for order type maintenance ([7a78e97](https://github.com/frappe/erpnext/commit/7a78e9705ccf4f15a0ba0768d0bc95c4a1826a3e)) * **gross profit report:** translate column Sales Invoice ([6ff8820](https://github.com/frappe/erpnext/commit/6ff882073220534d990451f2a3587c2961f99514)) * **gross-profit:** handle item group filters ([0d02bbb](https://github.com/frappe/erpnext/commit/0d02bbb01af0c392374b82ff41a0157f53a0a715)) * **gross-profit:** handle returns outside sale period ([9b32c84](https://github.com/frappe/erpnext/commit/9b32c84462327fb0e6621e1d518a3897f77c6058)) * handle gross profit and percentage for return invoices ([d081a26](https://github.com/frappe/erpnext/commit/d081a26608c003be23f22313a816015031867c0f)) * item code is tuple with operation id ([9d14c0b](https://github.com/frappe/erpnext/commit/9d14c0b60ec59508eb4d97e947a8d1c15efe9e69)) * **manufacturing:** fix chart period keys ([b99ca48](https://github.com/frappe/erpnext/commit/b99ca486d7bc7fcaea771ea79a508b0be14e5bfd)) * **manufacturing:** handle None value for actual_end_date ([b1b75ec](https://github.com/frappe/erpnext/commit/b1b75eca3d5010d94b96f2467e8a81e7f3e86a3f)) * **map_current_doc:** prevent mutation of query args in get_query (backport [#52202](https://github.com/frappe/erpnext/issues/52202)) ([#52584](https://github.com/frappe/erpnext/issues/52584)) ([b8256e5](https://github.com/frappe/erpnext/commit/b8256e5f318ca8e30de71f97a959b78e7c4be990)) * move company field to first position in sales invoice, purchase invoice, sales order, purchase order and journal entry ([e53ccd0](https://github.com/frappe/erpnext/commit/e53ccd07450c64e0a0d9d82ee4969673bcffe714)) * not able to complete job card ([c5ff534](https://github.com/frappe/erpnext/commit/c5ff534d58a8a96f51e3a90693c4eb8d0547dd79)) * operation status and bom validation ([1122265](https://github.com/frappe/erpnext/commit/11222653ce0e562e73b3cb7a2c37aa7cd9127882)) * Period Closing Voucher doesn't exist for GL Entry ([921584c](https://github.com/frappe/erpnext/commit/921584c769aea54be6dbc23c41007f8aa4b8b9a3)) * process loss error incorrectly thrown even when semi FG BOM does not have any process loss ([4a7ffce](https://github.com/frappe/erpnext/commit/4a7ffce32013849c7936ade59938af019167014d)) * **quotation:** ignore zero ordered_qty ([cf7c127](https://github.com/frappe/erpnext/commit/cf7c127dc66d0d3ccab5038a7f7680a20e394d62)) * rate comparison in stock reco ([1f78f45](https://github.com/frappe/erpnext/commit/1f78f45aee164cc37a178f368664b04385ae6e32)) * remove customer_pos_id reference ([#52396](https://github.com/frappe/erpnext/issues/52396)) ([ab59f73](https://github.com/frappe/erpnext/commit/ab59f730648932603464472dd6efcf78c63c4530)) * remove incorrect validation from email digest throwing spurious error (backport [#51827](https://github.com/frappe/erpnext/issues/51827)) ([#52579](https://github.com/frappe/erpnext/issues/52579)) ([dffb6ac](https://github.com/frappe/erpnext/commit/dffb6ac4cf83d2d36b20f2ea6397da362940942b)) * return None instead of 0 if valuation rate is falsy ([64a7956](https://github.com/frappe/erpnext/commit/64a7956a4a59022242e5f6c6a550a21750566b61)) * stock balance report issue ([62616ad](https://github.com/frappe/erpnext/commit/62616ad9e1685faf09fdada25dfb9da637c774c4)) * stock reservation created against job card ([305483e](https://github.com/frappe/erpnext/commit/305483e07475361c9228ca166896c2fc48351522)) * **stock:** add is group filter for warehouse fields ([23a26b5](https://github.com/frappe/erpnext/commit/23a26b540bcb675ff97bda627b52a9065ad524d1)) * **stock:** ignore pos reserved batches for stock levels ([e2c1204](https://github.com/frappe/erpnext/commit/e2c12043aec418a4d629e955b4bfd03642fe3104)) * **stock:** inward stock for pick list test record ([801a26a](https://github.com/frappe/erpnext/commit/801a26ae67f98d8ebc74d9dcf4019a555e7f5c45)) * **stock:** set source warehouse for issue type ([53e512c](https://github.com/frappe/erpnext/commit/53e512ceaf6fb81e0b9222f7d700070fea95917f)) * **stock:** update target field attribute ([96dfecf](https://github.com/frappe/erpnext/commit/96dfecf0d5b3281d81ecd475d53d1cd7053d0556)) * test cases ([ece8d00](https://github.com/frappe/erpnext/commit/ece8d0041572fc6ffdbe4acb9f2a6b64b8f4a7b5)) * validate asset movement transaction date ([#52340](https://github.com/frappe/erpnext/issues/52340)) ([898d2e3](https://github.com/frappe/erpnext/commit/898d2e3c9a6e5502f11fff838257e90a5da1d227)) * Workspace sidebar links for Debit/Credit Notes ([29d33b3](https://github.com/frappe/erpnext/commit/29d33b31394d4633205d80db4e1c4728cec64de1)) ### Features * **accounts:** expand Journal Entry Template to support dimensions and party ([#51621](https://github.com/frappe/erpnext/issues/51621)) ([d06a46a](https://github.com/frappe/erpnext/commit/d06a46ae8516dddff98e0cbff21766c314a52333)) * allow negative stock for the batch item ([b6afe7f](https://github.com/frappe/erpnext/commit/b6afe7f4da2fe24ccd5c6178be9026cd756b70b5)) ### Reverts * "fix: allow sales invoice to be renamed" ([abef910](https://github.com/frappe/erpnext/commit/abef9109b0caf67554d8cf999dc072cf9942101e)) --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 220a888de81..49f603e7d2e 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -6,7 +6,7 @@ import frappe from frappe.model.document import Document from frappe.utils.user import is_website_user -__version__ = "16.4.1" +__version__ = "16.5.0" def get_default_company(user=None): From 372b0119bbd7e0de1fd836cc49636af5b8f34f9e Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Tue, 17 Feb 2026 14:10:20 +0000 Subject: [PATCH 06/18] chore(release): Bumped to Version 16.6.0 # [16.6.0](https://github.com/frappe/erpnext/compare/v16.5.0...v16.6.0) (2026-02-17) ### Bug Fixes * allow non-stock items while updating items ([e2183eb](https://github.com/frappe/erpnext/commit/e2183ebde9034d826e985706090ff06705529540)) * allow sequence id edit in BOM if routing is not set ([6f812cc](https://github.com/frappe/erpnext/commit/6f812ccaf5eb55fa9253f7d90093711db24aeeaa)) * better validation for negative batch ([e46e874](https://github.com/frappe/erpnext/commit/e46e8741b44c6ade4d2ae0f116657486cb05c324)) * cancel SABB if SLE cancelled from LCV ([ac90975](https://github.com/frappe/erpnext/commit/ac90975f4306d191059f4caa898fedeb9b49b043)) * consider sle for negative stock validation ([ca8f324](https://github.com/frappe/erpnext/commit/ca8f324b51ca0580742d7b7d38b46b2890b2f63a)) * consider table multiselect in delete transaction ([38679d6](https://github.com/frappe/erpnext/commit/38679d6d147b098adf83ab7466697d5752cef9ea)) * correct typos in marketing campaign custom fields function ([531bdbc](https://github.com/frappe/erpnext/commit/531bdbc7276a52c72378602d460d862eaf5d318d)) * do not allow plant floor company and warehouse to be updated ([a039c17](https://github.com/frappe/erpnext/commit/a039c176c8ae820791f14b1f3d811c052c12c6aa)) * ensure layout has Bootstrap row and column (backport [#52649](https://github.com/frappe/erpnext/issues/52649)) ([#52719](https://github.com/frappe/erpnext/issues/52719)) ([53e400c](https://github.com/frappe/erpnext/commit/53e400cca158da772242784406c51ce6bf5710a7)) * log changes made to accounts settings ([2200b9a](https://github.com/frappe/erpnext/commit/2200b9aa678f799f43539411165950d44951e7d2)) * **manufacturing:** add sales order fields in subassembly child table ([605c0db](https://github.com/frappe/erpnext/commit/605c0db976b3be2b97b42a6c22837dfece3062a9)) * **manufacturing:** set sales order references in subassembly child table ([f4b0e64](https://github.com/frappe/erpnext/commit/f4b0e646b401c920a4925acb5d81ee596168b8a4)) * **pos_invoice:** add correct depends on condition ([#52689](https://github.com/frappe/erpnext/issues/52689)) ([28592d0](https://github.com/frappe/erpnext/commit/28592d01802266b6a61eaf7df93a6ed39dd6d13b)) * prevent rows from being added to sub_assembly_items and mr_items ([80c98cd](https://github.com/frappe/erpnext/commit/80c98cdcf4838301ffa9a123472291a3529bdab2)) * production plan status ([62ea18f](https://github.com/frappe/erpnext/commit/62ea18f1cc620473b8bace56868bc982b1b7b275)) * removed lost reason detail ([3c33a19](https://github.com/frappe/erpnext/commit/3c33a19634cca72e206db05953f97e662ed2969c)) * **selling-workspace-sidebar:** changed order of pos profile ([1820c35](https://github.com/frappe/erpnext/commit/1820c35880e9ce5718493e5d8ab9dd94ada587ea)) * standalone credit/debit notes should not fetch any serial or batch by default ([dd4e186](https://github.com/frappe/erpnext/commit/dd4e1867f5f7fe3cbeca06d867b0afe124a0ad01)) * **stock:** remove hardcoded letter_head from report ([1d444e5](https://github.com/frappe/erpnext/commit/1d444e53eb16d5859295916daaa9a51561d9e0c4)), closes [#52569](https://github.com/frappe/erpnext/issues/52569) * total weight does not update when updating items ([46b5884](https://github.com/frappe/erpnext/commit/46b588442071cf8ef43e4639a61f1fe17968216e)) * wrong display_depends_on condition for item group and brand child tables ([6ae1b18](https://github.com/frappe/erpnext/commit/6ae1b18616357b511dd78f4e58f15625a664aed2)) ### Features * Negative Batch report ([8649543](https://github.com/frappe/erpnext/commit/8649543ae062addaafb99ab837f64df44f5faed2)) * show formatted currency symbol on ledger preview ([b844afe](https://github.com/frappe/erpnext/commit/b844afe0ec4c27f7c01dca8764f08df049ce37df)) --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 49f603e7d2e..424779a2599 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -6,7 +6,7 @@ import frappe from frappe.model.document import Document from frappe.utils.user import is_website_user -__version__ = "16.5.0" +__version__ = "16.6.0" def get_default_company(user=None): From 78fc9424d9085c2eafe1211931e22d7044f85fc7 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Mon, 16 Feb 2026 13:19:10 +0530 Subject: [PATCH 07/18] fix: better permissions on make payment request (cherry picked from commit f36962fc5842361872caccc13ec56567a5c1e203) --- erpnext/accounts/doctype/payment_request/payment_request.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py index 7d21a4ba41a..028cb6b20f3 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request.py +++ b/erpnext/accounts/doctype/payment_request/payment_request.py @@ -546,6 +546,9 @@ def make_payment_request(**args): if args.dn and not isinstance(args.dn, str): frappe.throw(_("Invalid parameter. 'dn' should be of type str")) + frappe.has_permission("Payment Request", "create", throw=True) + frappe.has_permission(args.dt, "read", args.dn, throw=True) + ref_doc = args.ref_doc or frappe.get_doc(args.dt, args.dn) if not args.get("company"): args.company = ref_doc.company @@ -819,7 +822,7 @@ def get_print_format_list(ref_doctype): return {"print_format": print_format_list} -@frappe.whitelist(allow_guest=True) +@frappe.whitelist() def resend_payment_email(docname): return frappe.get_doc("Payment Request", docname).send_email() From 9a0b54c649be924a23d6f1db7675f9df01416ebb Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Thu, 19 Feb 2026 05:04:10 +0000 Subject: [PATCH 08/18] chore(release): Bumped to Version 16.6.1 ## [16.6.1](https://github.com/frappe/erpnext/compare/v16.6.0...v16.6.1) (2026-02-19) ### Bug Fixes * better permissions on make payment request ([78fc942](https://github.com/frappe/erpnext/commit/78fc9424d9085c2eafe1211931e22d7044f85fc7)) --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 424779a2599..15589b1dc24 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -6,7 +6,7 @@ import frappe from frappe.model.document import Document from frappe.utils.user import is_website_user -__version__ = "16.6.0" +__version__ = "16.6.1" def get_default_company(user=None): From ca9f9de39ffa66a810aa8e790e6658f3fe1ffef5 Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Wed, 25 Feb 2026 06:34:28 +0000 Subject: [PATCH 09/18] chore(release): Bumped to Version 16.7.0 # [16.7.0](https://github.com/frappe/erpnext/compare/v16.6.1...v16.7.0) (2026-02-25) ### Bug Fixes * **`fiscal_year_company`:** made `company` field mandatory ([54bed64](https://github.com/frappe/erpnext/commit/54bed643562179891467cb74ff634d7784292d4f)) * **`fiscal_year`:** `Fiscal Year` auto-generation and notification ([92c2c7b](https://github.com/frappe/erpnext/commit/92c2c7bf826ee1cfe58011ddcdadf259b0f6c153)) * Add handling for Sales Invoice Item quantity field ([f6a1ea8](https://github.com/frappe/erpnext/commit/f6a1ea804a6a4d61df43f2b9b75178c4cc3b8234)) * add missing property_type ([dd41f2c](https://github.com/frappe/erpnext/commit/dd41f2ceb75a53ffcdf65e7934397c38b84e0bca)) * add purchase invoice as well ([2d864bb](https://github.com/frappe/erpnext/commit/2d864bb599f44b325f2d4a00f3ea836a36f0db87)) * addresses portal (backport [#52712](https://github.com/frappe/erpnext/issues/52712)) ([#52786](https://github.com/frappe/erpnext/issues/52786)) ([d7b61b9](https://github.com/frappe/erpnext/commit/d7b61b945f07902a542597f12e813e9c55dc0991)) * **asset:** handle partial asset sales by splitting remaining quantity (backport [#51363](https://github.com/frappe/erpnext/issues/51363)) ([#52394](https://github.com/frappe/erpnext/issues/52394)) ([10be8f1](https://github.com/frappe/erpnext/commit/10be8f19e211fd7fa5b420dcee9d0f62b065d817)) * avoid duplicate taxes and charges rows in payment entry (backport [#52178](https://github.com/frappe/erpnext/issues/52178)) ([#52319](https://github.com/frappe/erpnext/issues/52319)) ([e6f7a7e](https://github.com/frappe/erpnext/commit/e6f7a7e979fffd5c24b1be4076a393efdf84c1ef)) * better permissions on make payment request ([a5c83dd](https://github.com/frappe/erpnext/commit/a5c83dd11ec27030bd29e62a3210afbe89ad090a)) * bug with comparison regarding `None` values and empty string ([66d1b7c](https://github.com/frappe/erpnext/commit/66d1b7c837977a64898edc34909fb1ff998723a9)) * check gl account of an associated bank account in bank transaction ([746b5d9](https://github.com/frappe/erpnext/commit/746b5d96de47d441a5642ef90ae58498c1aa256b)) * enfore permission on make_payment_request ([8184599](https://github.com/frappe/erpnext/commit/81845992a65597f64db961a75e1f47dc570ca0ad)) * fiscal year notification subject ([e8c5d57](https://github.com/frappe/erpnext/commit/e8c5d5710d0d38a001b3d7f1aa9733b82eeaab21)) * get employee email with priority if preferred is not set ([116361c](https://github.com/frappe/erpnext/commit/116361c1dc983d563f3e491140d4775cdfd7136c)) * ignore permissions instead of saving parent ([715dbc0](https://github.com/frappe/erpnext/commit/715dbc00931b547915e1f944f1dc004c0197050f)) * inconsistent label name between parent and child ([b56c444](https://github.com/frappe/erpnext/commit/b56c444f185c2459ff91a7bda757f96a03e894f1)) * item code shows undefined ([0fd9fc4](https://github.com/frappe/erpnext/commit/0fd9fc48f33a5d787ca6a0a6f2063b53a1b30080)) * link field displays incorrect value when empty ([b67d42e](https://github.com/frappe/erpnext/commit/b67d42ee58d8d2f95832d8ffc8d10e876241ee36)) * **manufacturing:** remove delete query of job card & batch and serial no ([#52840](https://github.com/frappe/erpnext/issues/52840)) ([9ff924e](https://github.com/frappe/erpnext/commit/9ff924e8317a221a6c29ff90e652ca85ba84343b)) * **manufacturing:** set pick list purpose while creating it from work order ([131e279](https://github.com/frappe/erpnext/commit/131e279a0cd1668bd61934771ea63fd066580b93)) * **manufacturing:** update status for work order before calculating planned qty ([61d339c](https://github.com/frappe/erpnext/commit/61d339cfa72aeeeddb0a313a609a6678e04159f7)) * material request on receive notification condition ([785773b](https://github.com/frappe/erpnext/commit/785773b0ac084c7b76c6d2bbe67195653d97e82d)) * permission issue for quotation item during update item ([bccca6f](https://github.com/frappe/erpnext/commit/bccca6f58e3bc8c46985cd22666c0a72727a74c6)) * populate doctypes to be ignored table in validate ([237e458](https://github.com/frappe/erpnext/commit/237e4583e2f49bc112739afdf8504cbd4a572aa7)) * prevent precision errors in discount distribution with inclusive tax ([0e2e89c](https://github.com/frappe/erpnext/commit/0e2e89c355a711438895f27a9ffc4c4a1639b18d)) * **Purchase Receipt:** copy project from first row when adding items ([77da330](https://github.com/frappe/erpnext/commit/77da3306b5c9897ab387676bfe2a3a4019aceec1)) * remove form tour for sales and purchase order ([aac7fc3](https://github.com/frappe/erpnext/commit/aac7fc30d5a095a5c925219a5ceda66178ed4499)) * remove supplier invoice date/posting date validation ([cfad7e1](https://github.com/frappe/erpnext/commit/cfad7e17f12e0df8d050cf7f9af3dd6ec7657eba)) * reservation based on field should be read only in SRE ([a499b7e](https://github.com/frappe/erpnext/commit/a499b7e0469f4ce807228b80e7309a49b5202b37)) * sales and purchase modules forms clean-up (backport [#52875](https://github.com/frappe/erpnext/issues/52875)) ([#52911](https://github.com/frappe/erpnext/issues/52911)) ([2177098](https://github.com/frappe/erpnext/commit/217709836bf1d84c4c72bba5be251ffb6f7e1864)) * **sales-order:** update quotation status while cancelling sales order ([#52822](https://github.com/frappe/erpnext/issues/52822)) ([3a0f90c](https://github.com/frappe/erpnext/commit/3a0f90c433363ca5beea32fbd2b86302f74925ce)) * sensible insufficient stock message in pick list ([dbe2a87](https://github.com/frappe/erpnext/commit/dbe2a87a8463195bf02a5a14b0a266fae9c0cb4d)) * setup fails to set abbr to departments ([b15db05](https://github.com/frappe/erpnext/commit/b15db05ef87fc2248d6e4f2e0cb018151aeceef4)) * skip empty dimension values in exchange gain loss ([780b626](https://github.com/frappe/erpnext/commit/780b626ae50c94a93456d04feb1c140c4121867e)) * standalone sales invoice return should not fallback to item master for valuation rate ([6e1a808](https://github.com/frappe/erpnext/commit/6e1a8083a5db36137dc597dc1e00ee2e4a6b8132)) * supplier_type appears multiple times ([9a2eb91](https://github.com/frappe/erpnext/commit/9a2eb91eec67e8cda610f25a341a841068f4ee5e)) * test cases related to default letterhead change ([1e64dea](https://github.com/frappe/erpnext/commit/1e64dea6a078c3fe388220017aac3036ea1af114)) * typo ([d0c2cc8](https://github.com/frappe/erpnext/commit/d0c2cc848c11d2800ed6bf3cf892263ca2904595)) * typo ([0c4b9ea](https://github.com/frappe/erpnext/commit/0c4b9ea9ca779d5467e179a78b96ba2854278041)) * unable to submit subcontracting order if created from material request ([c5bc92d](https://github.com/frappe/erpnext/commit/c5bc92d50ee1a3e81d9e1ade8adc6c4f1ee5a4b8)) * unhide book_advance_payments_in_separate_party_account check field in Payment Entry doctype ([13d153c](https://github.com/frappe/erpnext/commit/13d153c196c7e1cbd066c4bcbedd8b137116edef)) * update items fetches wrong item code ([3355c60](https://github.com/frappe/erpnext/commit/3355c60c799a9dfc0a2da0a975a1bbaab4a5781f)) * update modified timestamp in json ([74a3965](https://github.com/frappe/erpnext/commit/74a3965a12b61761739c96d12f103959fd0b6e87)) * use stock qty instead of qty when updating transferred qty in WO ([90e61ab](https://github.com/frappe/erpnext/commit/90e61abff44da5ac94903a123ab65c770a236626)) * user permission on reports (backport [#52709](https://github.com/frappe/erpnext/issues/52709)) ([#52757](https://github.com/frappe/erpnext/issues/52757)) ([893683a](https://github.com/frappe/erpnext/commit/893683a512e0e00ad420b1ccf3ff0c5c7598b909)) * **work_order:** update returned qty ([c4ba3c9](https://github.com/frappe/erpnext/commit/c4ba3c9c4b788b0e009e4bf3dab9208f90ec8d2e)) ### Features * default letterhead and print format ([4adcc1c](https://github.com/frappe/erpnext/commit/4adcc1c52167304b26b624291095f1e0512bae04)) * **Journal Entry Account:** add Bank Transaction as Reference Type (backport [#52760](https://github.com/frappe/erpnext/issues/52760)) ([#52816](https://github.com/frappe/erpnext/issues/52816)) ([2c5bdef](https://github.com/frappe/erpnext/commit/2c5bdefd1367c45016025a72daada40d4bc4cba2)) * module onboarding ([858119f](https://github.com/frappe/erpnext/commit/858119f907f736ac3127a3cd448e2a8951fd5431)) * **payment request:** create payment request as per payment schedules ([751a081](https://github.com/frappe/erpnext/commit/751a0812538cf77c0967f4356f9d1275466f8d26)) * **payment_request:** add option to calculate request amount using payment schedule ([298ea33](https://github.com/frappe/erpnext/commit/298ea33922700f094e1d7e38249e0f3f2dd0f09a)) * retrieve employee basic contact information ([f701407](https://github.com/frappe/erpnext/commit/f701407e23e3c7b450596e6809d60223eb4d4053)) * retrieve employee contact details ([94f9f8b](https://github.com/frappe/erpnext/commit/94f9f8b30a4c432a2785301c442338cdb9fc70a4)) * standard print format for Sales Order and Purchase Invoice ([222f51b](https://github.com/frappe/erpnext/commit/222f51b4d02edf5c84fad50c365e9f04de454e21)) --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 15589b1dc24..5c19e15db66 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -6,7 +6,7 @@ import frappe from frappe.model.document import Document from frappe.utils.user import is_website_user -__version__ = "16.6.1" +__version__ = "16.7.0" def get_default_company(user=None): From c3700f1b31f26de4a2738550a2b170e14e3a89f6 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Wed, 25 Feb 2026 17:23:57 +0530 Subject: [PATCH 10/18] fix: patch to complete onboarding stpes for existing records (cherry picked from commit d90ec49241d1e65aad267a09a92d61ea2bb3e82c) # Conflicts: # erpnext/patches.txt (cherry picked from commit 941a78e1a8d2932bb15c022d05739cfc5bcf2eac) --- .../asset_onboarding/asset_onboarding.json | 4 +-- .../learn_asset/learn_asset.json | 2 +- .../buying_onboarding/buying_onboarding.json | 4 +-- .../create_item/create_item.json | 4 +-- .../create_purchase_invoice.json | 2 +- .../create_purchase_order.json | 2 +- .../create_supplier/create_supplier.json | 2 +- .../review_buying_settings.json | 2 +- .../setup_company/setup_company.json | 21 ----------- .../view_purchase_order_analysis.json | 2 +- .../manufacturing_onboarding.json | 4 +-- .../view_work_order_summary_report.json | 2 +- erpnext/patches.txt | 4 +++ ...mplete_onboarding_steps_for_older_sites.py | 36 +++++++++++++++++++ .../projects_onboarding.json | 4 +-- .../selling_onboarding.json | 4 +-- .../create_customer/create_customer.json | 2 +- .../create_item/create_item.json | 4 +-- .../setup_company/setup_company.json | 21 ----------- .../stock_onboarding/stock_onboarding.json | 4 +-- .../create_item/create_item.json | 4 +-- .../subcontracting_onboarding.json | 4 +-- 22 files changed, 68 insertions(+), 70 deletions(-) delete mode 100644 erpnext/buying/onboarding_step/setup_company/setup_company.json create mode 100644 erpnext/patches/v16_0/complete_onboarding_steps_for_older_sites.py delete mode 100644 erpnext/selling/onboarding_step/setup_company/setup_company.json diff --git a/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json b/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json index fe4bac23091..b0b4b35094f 100644 --- a/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json +++ b/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json @@ -15,7 +15,7 @@ "doctype": "Module Onboarding", "idx": 0, "is_complete": 0, - "modified": "2026-02-23 22:51:11.027665", + "modified": "2026-02-25 16:59:52.159087", "modified_by": "Administrator", "module": "Assets", "name": "Asset Onboarding", @@ -40,5 +40,5 @@ "step": "View Balance Sheet" } ], - "title": "Assets Setup!" + "title": "Assets Setup" } diff --git a/erpnext/assets/onboarding_step/learn_asset/learn_asset.json b/erpnext/assets/onboarding_step/learn_asset/learn_asset.json index 54377ef0ac2..baf2f186592 100644 --- a/erpnext/assets/onboarding_step/learn_asset/learn_asset.json +++ b/erpnext/assets/onboarding_step/learn_asset/learn_asset.json @@ -8,7 +8,7 @@ "is_complete": 0, "is_single": 0, "is_skipped": 0, - "modified": "2026-02-23 22:44:25.734547", + "modified": "2026-02-25 15:09:37.450763", "modified_by": "Administrator", "name": "Learn Asset", "owner": "Administrator", diff --git a/erpnext/buying/module_onboarding/buying_onboarding/buying_onboarding.json b/erpnext/buying/module_onboarding/buying_onboarding/buying_onboarding.json index 96d08fecb1a..814c87f27d0 100644 --- a/erpnext/buying/module_onboarding/buying_onboarding/buying_onboarding.json +++ b/erpnext/buying/module_onboarding/buying_onboarding/buying_onboarding.json @@ -12,7 +12,7 @@ "doctype": "Module Onboarding", "idx": 0, "is_complete": 0, - "modified": "2026-02-24 16:57:55.172763", + "modified": "2026-02-25 16:59:28.328912", "modified_by": "Administrator", "module": "Buying", "name": "Buying Onboarding", @@ -37,5 +37,5 @@ "step": "Review Buying Settings" } ], - "title": "Buying Setup! " + "title": "Buying Setup" } diff --git a/erpnext/buying/onboarding_step/create_item/create_item.json b/erpnext/buying/onboarding_step/create_item/create_item.json index f1dc6a0ac91..8e1420e2add 100644 --- a/erpnext/buying/onboarding_step/create_item/create_item.json +++ b/erpnext/buying/onboarding_step/create_item/create_item.json @@ -4,11 +4,11 @@ "creation": "2026-02-19 12:38:40.865013", "docstatus": 0, "doctype": "Onboarding Step", - "idx": 7, + "idx": 8, "is_complete": 0, "is_single": 0, "is_skipped": 0, - "modified": "2026-02-24 16:57:14.098288", + "modified": "2026-02-25 16:58:56.384284", "modified_by": "Administrator", "name": "Create Item", "owner": "Administrator", diff --git a/erpnext/buying/onboarding_step/create_purchase_invoice/create_purchase_invoice.json b/erpnext/buying/onboarding_step/create_purchase_invoice/create_purchase_invoice.json index 8c35d155793..a3c63749621 100644 --- a/erpnext/buying/onboarding_step/create_purchase_invoice/create_purchase_invoice.json +++ b/erpnext/buying/onboarding_step/create_purchase_invoice/create_purchase_invoice.json @@ -8,7 +8,7 @@ "is_complete": 0, "is_single": 0, "is_skipped": 0, - "modified": "2026-02-23 20:26:00.223899", + "modified": "2026-02-25 16:58:56.386439", "modified_by": "Administrator", "name": "Create Purchase Invoice", "owner": "Administrator", diff --git a/erpnext/buying/onboarding_step/create_purchase_order/create_purchase_order.json b/erpnext/buying/onboarding_step/create_purchase_order/create_purchase_order.json index c39c5404046..b743a06c086 100644 --- a/erpnext/buying/onboarding_step/create_purchase_order/create_purchase_order.json +++ b/erpnext/buying/onboarding_step/create_purchase_order/create_purchase_order.json @@ -9,7 +9,7 @@ "is_complete": 0, "is_single": 0, "is_skipped": 0, - "modified": "2026-02-24 16:57:37.904322", + "modified": "2026-02-25 16:58:56.379480", "modified_by": "Administrator", "name": "Create Purchase Order", "owner": "Administrator", diff --git a/erpnext/buying/onboarding_step/create_supplier/create_supplier.json b/erpnext/buying/onboarding_step/create_supplier/create_supplier.json index 580fefedf16..470011efd5e 100644 --- a/erpnext/buying/onboarding_step/create_supplier/create_supplier.json +++ b/erpnext/buying/onboarding_step/create_supplier/create_supplier.json @@ -10,7 +10,7 @@ "is_complete": 0, "is_single": 0, "is_skipped": 0, - "modified": "2026-02-23 22:16:40.903633", + "modified": "2026-02-25 16:58:56.375824", "modified_by": "Administrator", "name": "Create Supplier", "owner": "Administrator", diff --git a/erpnext/buying/onboarding_step/review_buying_settings/review_buying_settings.json b/erpnext/buying/onboarding_step/review_buying_settings/review_buying_settings.json index 2703b14c6f9..52038d11800 100644 --- a/erpnext/buying/onboarding_step/review_buying_settings/review_buying_settings.json +++ b/erpnext/buying/onboarding_step/review_buying_settings/review_buying_settings.json @@ -8,7 +8,7 @@ "is_complete": 0, "is_single": 1, "is_skipped": 0, - "modified": "2026-02-24 16:57:14.031766", + "modified": "2026-02-25 16:58:56.388794", "modified_by": "Administrator", "name": "Review Buying Settings", "owner": "Administrator", diff --git a/erpnext/buying/onboarding_step/setup_company/setup_company.json b/erpnext/buying/onboarding_step/setup_company/setup_company.json deleted file mode 100644 index 89ae9a52553..00000000000 --- a/erpnext/buying/onboarding_step/setup_company/setup_company.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "action": "Go to Page", - "action_label": "Set up company", - "creation": "2026-02-20 11:12:50.373049", - "docstatus": 0, - "doctype": "Onboarding Step", - "idx": 1, - "is_complete": 0, - "is_single": 0, - "is_skipped": 0, - "modified": "2026-02-22 16:44:20.499954", - "modified_by": "Administrator", - "name": "Setup Company", - "owner": "Administrator", - "path": "company", - "reference_document": "Company", - "show_form_tour": 0, - "show_full_form": 0, - "title": "Setup Company", - "validate_action": 1 -} diff --git a/erpnext/buying/onboarding_step/view_purchase_order_analysis/view_purchase_order_analysis.json b/erpnext/buying/onboarding_step/view_purchase_order_analysis/view_purchase_order_analysis.json index 656b5c1fb44..9583034f337 100644 --- a/erpnext/buying/onboarding_step/view_purchase_order_analysis/view_purchase_order_analysis.json +++ b/erpnext/buying/onboarding_step/view_purchase_order_analysis/view_purchase_order_analysis.json @@ -8,7 +8,7 @@ "is_complete": 0, "is_single": 0, "is_skipped": 0, - "modified": "2026-02-23 22:44:35.794807", + "modified": "2026-02-25 10:33:43.731928", "modified_by": "Administrator", "name": "View Purchase Order Analysis", "owner": "Administrator", diff --git a/erpnext/manufacturing/module_onboarding/manufacturing_onboarding/manufacturing_onboarding.json b/erpnext/manufacturing/module_onboarding/manufacturing_onboarding/manufacturing_onboarding.json index 613b855aee4..be86ce22c9b 100644 --- a/erpnext/manufacturing/module_onboarding/manufacturing_onboarding/manufacturing_onboarding.json +++ b/erpnext/manufacturing/module_onboarding/manufacturing_onboarding/manufacturing_onboarding.json @@ -12,7 +12,7 @@ "doctype": "Module Onboarding", "idx": 0, "is_complete": 0, - "modified": "2026-02-23 22:51:27.390568", + "modified": "2026-02-25 16:59:39.508221", "modified_by": "Administrator", "module": "Manufacturing", "name": "Manufacturing Onboarding", @@ -40,5 +40,5 @@ "step": "Review Manufacturing Settings" } ], - "title": "Manufacturing Setup!" + "title": "Manufacturing Setup" } diff --git a/erpnext/manufacturing/onboarding_step/view_work_order_summary_report/view_work_order_summary_report.json b/erpnext/manufacturing/onboarding_step/view_work_order_summary_report/view_work_order_summary_report.json index 62875c8904f..16b8a54b13a 100644 --- a/erpnext/manufacturing/onboarding_step/view_work_order_summary_report/view_work_order_summary_report.json +++ b/erpnext/manufacturing/onboarding_step/view_work_order_summary_report/view_work_order_summary_report.json @@ -8,7 +8,7 @@ "is_complete": 0, "is_single": 0, "is_skipped": 0, - "modified": "2026-02-23 22:44:32.658354", + "modified": "2026-02-25 16:49:31.440969", "modified_by": "Administrator", "name": "View Work Order Summary Report", "owner": "Administrator", diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 1a488324212..d90b4eda72a 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -467,3 +467,7 @@ erpnext.patches.v16_0.update_company_custom_field_in_bin erpnext.patches.v15_0.replace_http_with_https_in_sales_partner erpnext.patches.v15_0.delete_quotation_lost_record_detail erpnext.patches.v16_0.add_portal_redirects +<<<<<<< HEAD +======= +erpnext.patches.v16_0.complete_onboarding_steps_for_older_sites #2 +>>>>>>> d90ec49241 (fix: patch to complete onboarding stpes for existing records) diff --git a/erpnext/patches/v16_0/complete_onboarding_steps_for_older_sites.py b/erpnext/patches/v16_0/complete_onboarding_steps_for_older_sites.py new file mode 100644 index 00000000000..73d50a976ee --- /dev/null +++ b/erpnext/patches/v16_0/complete_onboarding_steps_for_older_sites.py @@ -0,0 +1,36 @@ +import frappe +from frappe.utils import date_diff, getdate, today + + +def execute(): + steps = frappe.get_all( + "Onboarding Step", + filters={"is_complete": 0}, + fields=["name", "action", "reference_document"], + ) + + if not steps: + return + + company_creation = frappe.get_all("Company", fields=["creation"], order_by="creation asc", limit=1) + days_diff = date_diff(getdate(today()), getdate(company_creation[0].creation)) + + if days_diff > 15: + complete_all_onboarding_steps(steps) + else: + complete_onboarding_steps_if_record_exists(steps) + + +def complete_all_onboarding_steps(steps): + for step in steps: + frappe.db.set_value("Onboarding Step", step.name, "is_complete", 1, update_modified=False) + + +def complete_onboarding_steps_if_record_exists(steps): + for step in steps: + if ( + step.action == "Create Entry" + and step.reference_document + and frappe.get_all(step.reference_document, limit=1) + ): + frappe.db.set_value("Onboarding Step", step.name, "is_complete", 1, update_modified=False) diff --git a/erpnext/projects/module_onboarding/projects_onboarding/projects_onboarding.json b/erpnext/projects/module_onboarding/projects_onboarding/projects_onboarding.json index 64cc95e1b2d..1316558a0bb 100644 --- a/erpnext/projects/module_onboarding/projects_onboarding/projects_onboarding.json +++ b/erpnext/projects/module_onboarding/projects_onboarding/projects_onboarding.json @@ -12,7 +12,7 @@ "doctype": "Module Onboarding", "idx": 0, "is_complete": 0, - "modified": "2026-02-23 22:50:58.003699", + "modified": "2026-02-25 16:59:59.005097", "modified_by": "Administrator", "module": "Projects", "name": "Projects Onboarding", @@ -31,5 +31,5 @@ "step": "View Project Summary" } ], - "title": "Projects Setup!" + "title": "Projects Setup" } diff --git a/erpnext/selling/module_onboarding/selling_onboarding/selling_onboarding.json b/erpnext/selling/module_onboarding/selling_onboarding/selling_onboarding.json index d211ab6abf1..10e7ce5b33f 100644 --- a/erpnext/selling/module_onboarding/selling_onboarding/selling_onboarding.json +++ b/erpnext/selling/module_onboarding/selling_onboarding/selling_onboarding.json @@ -12,7 +12,7 @@ "doctype": "Module Onboarding", "idx": 1, "is_complete": 0, - "modified": "2026-02-24 16:57:50.753045", + "modified": "2026-02-25 16:59:32.154164", "modified_by": "Administrator", "module": "Selling", "name": "Selling Onboarding", @@ -37,5 +37,5 @@ "step": "Review Selling Settings" } ], - "title": "Selling Setup!" + "title": "Selling Setup" } diff --git a/erpnext/selling/onboarding_step/create_customer/create_customer.json b/erpnext/selling/onboarding_step/create_customer/create_customer.json index 142c395e55c..bd03a710b80 100644 --- a/erpnext/selling/onboarding_step/create_customer/create_customer.json +++ b/erpnext/selling/onboarding_step/create_customer/create_customer.json @@ -5,7 +5,7 @@ "docstatus": 0, "doctype": "Onboarding Step", "form_tour": "Customer Form Tour", - "idx": 0, + "idx": 1, "is_complete": 0, "is_single": 0, "is_skipped": 0, diff --git a/erpnext/selling/onboarding_step/create_item/create_item.json b/erpnext/selling/onboarding_step/create_item/create_item.json index f1dc6a0ac91..8e1420e2add 100644 --- a/erpnext/selling/onboarding_step/create_item/create_item.json +++ b/erpnext/selling/onboarding_step/create_item/create_item.json @@ -4,11 +4,11 @@ "creation": "2026-02-19 12:38:40.865013", "docstatus": 0, "doctype": "Onboarding Step", - "idx": 7, + "idx": 8, "is_complete": 0, "is_single": 0, "is_skipped": 0, - "modified": "2026-02-24 16:57:14.098288", + "modified": "2026-02-25 16:58:56.384284", "modified_by": "Administrator", "name": "Create Item", "owner": "Administrator", diff --git a/erpnext/selling/onboarding_step/setup_company/setup_company.json b/erpnext/selling/onboarding_step/setup_company/setup_company.json deleted file mode 100644 index 98c2d9fa693..00000000000 --- a/erpnext/selling/onboarding_step/setup_company/setup_company.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "action": "Go to Page", - "action_label": "Setup Company", - "creation": "2026-02-20 11:12:50.373049", - "docstatus": 0, - "doctype": "Onboarding Step", - "idx": 1, - "is_complete": 0, - "is_single": 0, - "is_skipped": 0, - "modified": "2026-02-20 11:37:46.922137", - "modified_by": "Administrator", - "name": "Setup Company", - "owner": "Administrator", - "path": "company", - "reference_document": "Company", - "show_form_tour": 0, - "show_full_form": 0, - "title": "Setup Company", - "validate_action": 1 -} diff --git a/erpnext/stock/module_onboarding/stock_onboarding/stock_onboarding.json b/erpnext/stock/module_onboarding/stock_onboarding/stock_onboarding.json index dbc838eb83c..a910f1a5c22 100644 --- a/erpnext/stock/module_onboarding/stock_onboarding/stock_onboarding.json +++ b/erpnext/stock/module_onboarding/stock_onboarding/stock_onboarding.json @@ -12,7 +12,7 @@ "doctype": "Module Onboarding", "idx": 0, "is_complete": 0, - "modified": "2026-02-23 22:51:17.460108", + "modified": "2026-02-25 16:59:45.630766", "modified_by": "Administrator", "module": "Stock", "name": "Stock Onboarding", @@ -40,5 +40,5 @@ "step": "Review Stock Settings" } ], - "title": "Stock Setup!" + "title": "Stock Setup" } diff --git a/erpnext/stock/onboarding_step/create_item/create_item.json b/erpnext/stock/onboarding_step/create_item/create_item.json index eb917d65b4f..8e1420e2add 100644 --- a/erpnext/stock/onboarding_step/create_item/create_item.json +++ b/erpnext/stock/onboarding_step/create_item/create_item.json @@ -4,11 +4,11 @@ "creation": "2026-02-19 12:38:40.865013", "docstatus": 0, "doctype": "Onboarding Step", - "idx": 7, + "idx": 8, "is_complete": 0, "is_single": 0, "is_skipped": 0, - "modified": "2026-02-23 20:30:37.698459", + "modified": "2026-02-25 16:58:56.384284", "modified_by": "Administrator", "name": "Create Item", "owner": "Administrator", diff --git a/erpnext/subcontracting/module_onboarding/subcontracting_onboarding/subcontracting_onboarding.json b/erpnext/subcontracting/module_onboarding/subcontracting_onboarding/subcontracting_onboarding.json index afd9160103b..867dca4a380 100644 --- a/erpnext/subcontracting/module_onboarding/subcontracting_onboarding/subcontracting_onboarding.json +++ b/erpnext/subcontracting/module_onboarding/subcontracting_onboarding/subcontracting_onboarding.json @@ -15,7 +15,7 @@ "doctype": "Module Onboarding", "idx": 1, "is_complete": 0, - "modified": "2026-02-23 22:51:04.595547", + "modified": "2026-02-25 16:59:55.409759", "modified_by": "Administrator", "module": "Subcontracting", "name": "Subcontracting Onboarding", @@ -43,5 +43,5 @@ "step": "Create Subcontracting Order" } ], - "title": "Subcontracting Setup!" + "title": "Subcontracting Setup" } From 76d27877c2c74c359dfb04769fca995ff2786bf8 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Wed, 25 Feb 2026 18:13:42 +0530 Subject: [PATCH 11/18] chore: fix conflicts (cherry picked from commit 8f922382e4780d9591a53e37bfb9c477df22e2b4) --- erpnext/patches.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index d90b4eda72a..3c59e1ff550 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -467,7 +467,4 @@ erpnext.patches.v16_0.update_company_custom_field_in_bin erpnext.patches.v15_0.replace_http_with_https_in_sales_partner erpnext.patches.v15_0.delete_quotation_lost_record_detail erpnext.patches.v16_0.add_portal_redirects -<<<<<<< HEAD -======= erpnext.patches.v16_0.complete_onboarding_steps_for_older_sites #2 ->>>>>>> d90ec49241 (fix: patch to complete onboarding stpes for existing records) From 5d2822df978f97e3a1f6f434bf3a27afb262f264 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Thu, 26 Feb 2026 10:47:56 +0530 Subject: [PATCH 12/18] fix: broekn link of docs in asset onboarding (cherry picked from commit 1cdf439e38f4d0364e238e972bc0996d374f961b) (cherry picked from commit 5c48f74d4c1a833f40e6eca37de087080ebb2b49) # Conflicts: # erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json # erpnext/assets/onboarding_step/learn_asset/learn_asset.json --- .../asset_onboarding/asset_onboarding.json | 4 ++++ erpnext/assets/onboarding_step/learn_asset/learn_asset.json | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json b/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json index fe4bac23091..6985d41775d 100644 --- a/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json +++ b/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json @@ -15,7 +15,11 @@ "doctype": "Module Onboarding", "idx": 0, "is_complete": 0, +<<<<<<< HEAD "modified": "2026-02-23 22:51:11.027665", +======= + "modified": "2026-02-26 10:45:47.970714", +>>>>>>> 5c48f74d4c (fix: broekn link of docs in asset onboarding) "modified_by": "Administrator", "module": "Assets", "name": "Asset Onboarding", diff --git a/erpnext/assets/onboarding_step/learn_asset/learn_asset.json b/erpnext/assets/onboarding_step/learn_asset/learn_asset.json index 54377ef0ac2..8e02f16cff4 100644 --- a/erpnext/assets/onboarding_step/learn_asset/learn_asset.json +++ b/erpnext/assets/onboarding_step/learn_asset/learn_asset.json @@ -8,11 +8,15 @@ "is_complete": 0, "is_single": 0, "is_skipped": 0, +<<<<<<< HEAD "modified": "2026-02-23 22:44:25.734547", +======= + "modified": "2026-02-26 10:44:59.557156", +>>>>>>> 5c48f74d4c (fix: broekn link of docs in asset onboarding) "modified_by": "Administrator", "name": "Learn Asset", "owner": "Administrator", - "path": "https://docs.frappe.io/erpnext/assets/setup/asset-category", + "path": "https://docs.frappe.io/erpnext/assets/introduction", "show_form_tour": 0, "show_full_form": 0, "title": "Learn Asset", From 6bebf5108780a05aad21503fec9149d08169b051 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Thu, 26 Feb 2026 11:30:57 +0530 Subject: [PATCH 13/18] chore: fix conflicts --- .../module_onboarding/asset_onboarding/asset_onboarding.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json b/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json index 6985d41775d..ba38d0af6f6 100644 --- a/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json +++ b/erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json @@ -15,11 +15,7 @@ "doctype": "Module Onboarding", "idx": 0, "is_complete": 0, -<<<<<<< HEAD - "modified": "2026-02-23 22:51:11.027665", -======= "modified": "2026-02-26 10:45:47.970714", ->>>>>>> 5c48f74d4c (fix: broekn link of docs in asset onboarding) "modified_by": "Administrator", "module": "Assets", "name": "Asset Onboarding", From 38c49dfed6e50d882d5266f33da9da439bf8d35c Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Thu, 26 Feb 2026 11:31:16 +0530 Subject: [PATCH 14/18] chore: fix conflicts Updated the modified date in learn_asset.json. --- erpnext/assets/onboarding_step/learn_asset/learn_asset.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/erpnext/assets/onboarding_step/learn_asset/learn_asset.json b/erpnext/assets/onboarding_step/learn_asset/learn_asset.json index 8e02f16cff4..8feef0073f5 100644 --- a/erpnext/assets/onboarding_step/learn_asset/learn_asset.json +++ b/erpnext/assets/onboarding_step/learn_asset/learn_asset.json @@ -8,11 +8,7 @@ "is_complete": 0, "is_single": 0, "is_skipped": 0, -<<<<<<< HEAD - "modified": "2026-02-23 22:44:25.734547", -======= "modified": "2026-02-26 10:44:59.557156", ->>>>>>> 5c48f74d4c (fix: broekn link of docs in asset onboarding) "modified_by": "Administrator", "name": "Learn Asset", "owner": "Administrator", From 5d86e9697aaf935b14359bc5f62c8c892a8100d5 Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Thu, 26 Feb 2026 06:03:21 +0000 Subject: [PATCH 15/18] chore(release): Bumped to Version 16.7.1 ## [16.7.1](https://github.com/frappe/erpnext/compare/v16.7.0...v16.7.1) (2026-02-26) ### Bug Fixes * patch to complete onboarding stpes for existing records ([c3700f1](https://github.com/frappe/erpnext/commit/c3700f1b31f26de4a2738550a2b170e14e3a89f6)) --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 5c19e15db66..51a41a8bfc4 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -6,7 +6,7 @@ import frappe from frappe.model.document import Document from frappe.utils.user import is_website_user -__version__ = "16.7.0" +__version__ = "16.7.1" def get_default_company(user=None): From e1782901e4fd402ce9f547a25d4fcfc108776912 Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Thu, 26 Feb 2026 06:48:40 +0000 Subject: [PATCH 16/18] chore(release): Bumped to Version 16.7.2 ## [16.7.2](https://github.com/frappe/erpnext/compare/v16.7.1...v16.7.2) (2026-02-26) ### Bug Fixes * broekn link of docs in asset onboarding ([5d2822d](https://github.com/frappe/erpnext/commit/5d2822df978f97e3a1f6f434bf3a27afb262f264)) --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 51a41a8bfc4..b4439c23ad2 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -6,7 +6,7 @@ import frappe from frappe.model.document import Document from frappe.utils.user import is_website_user -__version__ = "16.7.1" +__version__ = "16.7.2" def get_default_company(user=None): From e7e52851d677e025dfa95c63992196ed79844b04 Mon Sep 17 00:00:00 2001 From: ravibharathi656 Date: Thu, 29 Jan 2026 16:05:22 +0530 Subject: [PATCH 17/18] fix(payment entry): round unallocated amount (cherry picked from commit b0d67517778daa3a5f527c7729c9862b1194d36e) --- .../doctype/payment_entry/payment_entry.py | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 350e8b700a9..b7cd768a829 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -1082,20 +1082,32 @@ class PaymentEntry(AccountsController): self.base_paid_amount + deductions_to_consider ): self.unallocated_amount = ( - self.base_paid_amount - + deductions_to_consider - - self.base_total_allocated_amount - - included_taxes - ) / self.source_exchange_rate + flt( + ( + self.base_paid_amount + + deductions_to_consider + - self.base_total_allocated_amount + - included_taxes + ), + self.precision("unallocated_amount"), + ) + / self.source_exchange_rate + ) elif self.payment_type == "Pay" and self.base_total_allocated_amount < ( self.base_received_amount - deductions_to_consider ): self.unallocated_amount = ( - self.base_received_amount - - deductions_to_consider - - self.base_total_allocated_amount - - included_taxes - ) / self.target_exchange_rate + flt( + ( + self.base_received_amount + - deductions_to_consider + - self.base_total_allocated_amount + - included_taxes + ), + self.precision("unallocated_amount"), + ) + / self.target_exchange_rate + ) def set_exchange_gain_loss(self): exchange_gain_loss = flt( From e671f5a3ac7f6eab682454bf4aa3357d5b901509 Mon Sep 17 00:00:00 2001 From: Frappe PR Bot Date: Thu, 26 Feb 2026 08:29:46 +0000 Subject: [PATCH 18/18] chore(release): Bumped to Version 16.7.3 ## [16.7.3](https://github.com/frappe/erpnext/compare/v16.7.2...v16.7.3) (2026-02-26) ### Bug Fixes * **payment entry:** round unallocated amount ([e7e5285](https://github.com/frappe/erpnext/commit/e7e52851d677e025dfa95c63992196ed79844b04)) --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index b4439c23ad2..cd0d56fca5f 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -6,7 +6,7 @@ import frappe from frappe.model.document import Document from frappe.utils.user import is_website_user -__version__ = "16.7.2" +__version__ = "16.7.3" def get_default_company(user=None):