Compare commits

..

1710 Commits

Author SHA1 Message Date
Frappe PR Bot
8b9788ca74 chore(release): Bumped to Version 15.83.2
## [15.83.2](https://github.com/frappe/erpnext/compare/v15.83.1...v15.83.2) (2025-10-18)

### Bug Fixes

* internal transfer entry with serial/batch ([97cdac1](97cdac10d7))
* **stock:** remove duplicate fields ([5e8e6ef](5e8e6ef2f3))
2025-10-18 04:42:12 +00:00
rohitwaghchaure
eb38bcdab7 Merge pull request #50164 from frappe/mergify/bp/version-15/pr-50158
fix: internal transfer entry with serial/batch (backport #50156) (backport #50158)
2025-10-18 10:10:35 +05:30
rohitwaghchaure
9876d1c7e6 Merge pull request #50165 from frappe/mergify/bp/version-15/pr-50157
fix(stock-settings): remove duplicate fields (backport #50157)
2025-10-18 10:10:20 +05:30
Kavin
5e8e6ef2f3 fix(stock): remove duplicate fields
(cherry picked from commit 58a1383380)
2025-10-18 03:49:50 +00:00
Rohit Waghchaure
97cdac10d7 fix: internal transfer entry with serial/batch
(cherry picked from commit 9b4e62a758)
(cherry picked from commit d67a439051)
2025-10-18 03:47:47 +00:00
Frappe PR Bot
5e21c9c5c9 chore(release): Bumped to Version 15.83.1
## [15.83.1](https://github.com/frappe/erpnext/compare/v15.83.0...v15.83.1) (2025-10-17)

### Bug Fixes

* validation for negative batch ([555d5da](555d5da611))
2025-10-17 09:19:51 +00:00
rohitwaghchaure
6262566c53 Merge pull request #50150 from frappe/mergify/bp/version-15/pr-50145
fix: validation for negative batch (backport #50123) (backport #50145)
2025-10-17 14:48:04 +05:30
Rohit Waghchaure
555d5da611 fix: validation for negative batch
(cherry picked from commit f9c8f27586)
(cherry picked from commit b9dd05f292)
2025-10-17 08:06:54 +00:00
Frappe PR Bot
779074e6a6 chore(release): Bumped to Version 15.83.0
# [15.83.0](https://github.com/frappe/erpnext/compare/v15.82.2...v15.83.0) (2025-10-14)

### Bug Fixes

* add GROUP BY for dn_detail and convert SQL query to QB ([9aa9b18](9aa9b181e5))
* **asset movement:** clear custodian if not present ([4ec5b28](4ec5b28fd2))
* Batch ordering based on the method mentioned in settings ([50266d3](50266d3b6b))
* batch qty for expired batches ([f4816e4](f4816e4960))
* consider negative qty in batch qty calculation ([4370a59](4370a59183))
* **deferred revenue:** validate service stop date ([557d53a](557d53a953))
* do reposting of first transfer entry based on item-wh combination ([e9d71e0](e9d71e013a))
* duplicate serial nos ([9854ded](9854dedc06))
* enhance sub-assembly item handling in raw material request calculations ([467fcea](467fcea728))
* filter sales team to show only active individual salespersons ([38efd5c](38efd5cb0b))
* fixed asset register showing opening entries ([1ea6e1d](1ea6e1db12))
* hide sales invoice creation for fully returned delivery notes ([b426b8c](b426b8c07f))
* incorrect field valuation_rate ([93df11a](93df11a0cf))
* negative error not throw for backdated entry ([1fc21d6](1fc21d60c6))
* performance issue by adding index ([e4fd49e](e4fd49e991))
* preserve address if present ([aaf470c](aaf470cf5c))
* prevent empty Create dropdown when In Process (backport [#49891](https://github.com/frappe/erpnext/issues/49891)) ([#50063](https://github.com/frappe/erpnext/issues/50063)) ([b67b292](b67b29200c))
* **production plan:** filter sales orders by item ([20c2809](20c2809437))
* reset raw materials considering not available batches ([2184a28](2184a28e91))
* Reset Raw Materials Table button not working ([81ed32f](81ed32ff51))
* resolve conflict ([dccc561](dccc561eec))
* resolve conflict ([38e1ca1](38e1ca1362))
* revert unrelated manual modified timestamp change ([c4cba78](c4cba78124))
* sales return for product bundle items ([ac46b3d](ac46b3d1ca))
* sanitize projects field in tasks webform ([#50089](https://github.com/frappe/erpnext/issues/50089)) ([432201f](432201f634))
* set default roles on role_profile during reinstallation ([c93fbf3](c93fbf3982))
* skip auto-cancel of depreciation for components during asset capitalization ([6d5f2b5](6d5f2b5024))
* skip party validation for payroll & it's journal & GL entry submission (backport [#49638](https://github.com/frappe/erpnext/issues/49638)) ([#49826](https://github.com/frappe/erpnext/issues/49826)) ([957b47f](957b47f351))
* stock ledger adjustment entry ([8020159](8020159c14))
* **stock-entry:** fetch empty batch for finished item ([af3d7ef](af3d7ef300))
* **stock-reconciliation:** include inventory dimensions in duplicate validation ([21a972a](21a972ad95))
* **Supplier Quotation Comparison:** add a missing translate function (backport [#49497](https://github.com/frappe/erpnext/issues/49497)) ([#50055](https://github.com/frappe/erpnext/issues/50055)) ([b7c2405](b7c2405113))
* swap warehouse labels for return entry ([c5dc810](c5dc810642))
* warehouse source reference in production report ([db93e50](db93e50f16))

### Features

* add asset name to Asset Depreciations and Balances report ([0776b30](0776b300e8))

### Performance Improvements

* add composite indexes to Advance Payment Ledger Entry table ([5652e92](5652e926d7))
* optimize sql query ([79a8e26](79a8e2656b))
2025-10-14 14:03:31 +00:00
Diptanil Saha
c521a6495d Merge pull request #50087 from frappe/version-15-hotfix
chore: release v15
2025-10-14 19:27:40 +05:30
rohitwaghchaure
6f02362765 Merge pull request #50098 from frappe/mergify/bp/version-15-hotfix/pr-50089
fix: sanitize projects field in tasks webform (backport #50089)
2025-10-14 19:07:50 +05:30
Akhil Narang
432201f634 fix: sanitize projects field in tasks webform (#50089)
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
(cherry picked from commit f8b50d3ffa)
2025-10-14 13:08:51 +00:00
rohitwaghchaure
f9dc00f8ad Merge pull request #50094 from frappe/mergify/bp/version-15-hotfix/pr-50080
perf: optimize sql query (backport #50080)
2025-10-14 18:17:00 +05:30
rohitwaghchaure
0dd79e8c2b Merge pull request #50092 from frappe/mergify/bp/version-15-hotfix/pr-50091
fix: negative error not throw for backdated entry (backport #50091)
2025-10-14 18:16:42 +05:30
Khushi Rawat
f70e61ab31 Merge pull request #50093 from frappe/mergify/bp/version-15-hotfix/pr-50033
fix: filter sales team to show only active individual salespersons (backport #50033)
2025-10-14 17:51:15 +05:30
mergify[bot]
b67b29200c fix: prevent empty Create dropdown when In Process (backport #49891) (#50063) 2025-10-14 17:49:27 +05:30
mergify[bot]
fd72b55852 Merge pull request #50081 from frappe/mergify/bp/version-15-hotfix/pr-49960
Fix/Support 50220 (backport #49960)
2025-10-14 12:12:14 +00:00
Khushi Rawat
dccc561eec fix: resolve conflict 2025-10-14 17:25:48 +05:30
rohitwaghchaure
8bf553bbce chore: fix conflicts 2025-10-14 17:17:12 +05:30
Rohit Waghchaure
79a8e2656b perf: optimize sql query
(cherry picked from commit e7b64175fd)

# Conflicts:
#	erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
2025-10-14 11:44:04 +00:00
Rehan Ansari
38efd5cb0b fix: filter sales team to show only active individual salespersons
(cherry picked from commit 2fcd406b18)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.js
2025-10-14 11:40:00 +00:00
Rohit Waghchaure
1fc21d60c6 fix: negative error not throw for backdated entry
(cherry picked from commit 88a947ff4e)
2025-10-14 11:39:06 +00:00
Khushi Rawat
a777a11919 Merge pull request #50088 from khushi8112/composite-component-depr-jv-cancellation-issue
fix: skip auto-cancel of depreciation for components during asset capitalization
2025-10-14 16:57:50 +05:30
Diptanil Saha
6cc046362f Merge branch 'version-15' into version-15-hotfix 2025-10-14 16:56:32 +05:30
khushi8112
02ebde43bf refactor: Ensure flag cleanup with try-finally to prevent state corruption 2025-10-14 16:32:32 +05:30
khushi8112
6d5f2b5024 fix: skip auto-cancel of depreciation for components during asset capitalization 2025-10-14 15:19:07 +05:30
Mihir Kandoi
a50313f990 Merge pull request #50084 from frappe/mergify/bp/version-15-hotfix/pr-50004
fix: add GROUP BY for dn_detail and convert SQL query to QB (backport #50004)
2025-10-14 15:13:59 +05:30
Mihir Kandoi
7d533b7086 chore: resolve conflicts 2025-10-14 14:57:28 +05:30
l0gesh29
9aa9b181e5 fix: add GROUP BY for dn_detail and convert SQL query to QB
(cherry picked from commit fd9167f2af)

# Conflicts:
#	erpnext/stock/doctype/delivery_note/delivery_note.py
2025-10-14 09:20:17 +00:00
l0gesh29
b426b8c07f fix: hide sales invoice creation for fully returned delivery notes
(cherry picked from commit 1f831d8783)
2025-10-14 09:20:16 +00:00
Mihir Kandoi
6682a25532 Merge pull request #50082 from frappe/mergify/bp/version-15-hotfix/pr-50079
chore: replace broken links with correct ones (backport #50079)
2025-10-14 14:43:05 +05:30
Mihir Kandoi
01fe1c658e chore: replace broken links with correct ones
(cherry picked from commit 11be07086f)
2025-10-14 08:58:06 +00:00
rohitwaghchaure
82e392bc0c Merge pull request #50074 from frappe/mergify/bp/version-15-hotfix/pr-50070
fix: performance issue by adding index (backport #50070)
2025-10-14 13:57:10 +05:30
rohitwaghchaure
b6f99a127b Merge pull request #50075 from frappe/mergify/bp/version-15-hotfix/pr-50065
fix(stock-reconciliation): include inventory dimensions in duplicate validation (backport #50065)
2025-10-14 13:56:55 +05:30
rohitwaghchaure
7d34a39137 Merge pull request #50076 from frappe/mergify/bp/version-15-hotfix/pr-50073
fix(stock-entry): fetch empty batch for finished item (backport #50073)
2025-10-14 13:56:41 +05:30
rohitwaghchaure
76fe4e26ea Merge pull request #50077 from frappe/mergify/bp/version-15-hotfix/pr-50072
fix: swap warehouse labels for return entry (backport #50072)
2025-10-14 13:56:17 +05:30
Kavin
c5dc810642 fix: swap warehouse labels for return entry
(cherry picked from commit f0c3f0d0be)
2025-10-14 08:07:00 +00:00
venkat102
af3d7ef300 fix(stock-entry): fetch empty batch for finished item
(cherry picked from commit 74a7ddf66d)
2025-10-14 08:05:57 +00:00
rohitwaghchaure
61f7309695 chore: fix conflicts 2025-10-14 13:33:56 +05:30
Rohit Waghchaure
9854dedc06 fix: duplicate serial nos
(cherry picked from commit c95465cba1)
2025-10-14 08:03:44 +00:00
venkat102
21a972ad95 fix(stock-reconciliation): include inventory dimensions in duplicate validation
(cherry picked from commit 4b21c2cc46)
2025-10-14 08:03:43 +00:00
rohitwaghchaure
967ee78415 chore: fix conflicts 2025-10-14 13:33:24 +05:30
Rohit Waghchaure
e4fd49e991 fix: performance issue by adding index
(cherry picked from commit 1afc75b15a)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
#	erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json
2025-10-14 08:02:28 +00:00
rohitwaghchaure
b82f8648f1 Merge pull request #50068 from frappe/mergify/bp/version-15-hotfix/pr-50061
fix: do reposting of first transfer entry based on item-wh combination (backport #50061)
2025-10-14 13:21:13 +05:30
rohitwaghchaure
141b70ce8b Merge pull request #50069 from frappe/mergify/bp/version-15-hotfix/pr-50027
fix: reset raw materials considering not available batches (backport #50027)
2025-10-14 13:21:03 +05:30
Rohit Waghchaure
2184a28e91 fix: reset raw materials considering not available batches
(cherry picked from commit ec1636db12)
2025-10-14 07:19:43 +00:00
Rohit Waghchaure
e9d71e013a fix: do reposting of first transfer entry based on item-wh combination
(cherry picked from commit 2f25b445ab)
2025-10-14 07:19:08 +00:00
Mihir Kandoi
5909b0e1a2 Merge pull request #50064 from frappe/mergify/bp/version-15-hotfix/pr-49445
fix(production plan): filter sales orders by item (backport #49445)
2025-10-14 12:20:56 +05:30
Mihir Kandoi
525dd42e86 Merge pull request #50062 from frappe/mergify/bp/version-15-hotfix/pr-50058
fix: warehouse source reference in production report (backport #50058)
2025-10-14 12:10:53 +05:30
ravibharathi656
20c2809437 fix(production plan): filter sales orders by item
(cherry picked from commit bfff945fb1)
2025-10-14 06:32:58 +00:00
matteo.arosti
db93e50f16 fix: warehouse source reference in production report
(cherry picked from commit 451651e350)
2025-10-14 06:22:44 +00:00
mergify[bot]
957b47f351 fix: skip party validation for payroll & it's journal & GL entry submission (backport #49638) (#49826)
* fix: skip party validation for payroll & it's journal & GL entry submission (#49638)

* fix: skip validation for manual je & gl submission linked with payroll entry

* refactor: change condition

* fix: add checkbox in jouranl entry account and passed it true from payroll to skip party validation

* refactor: add checkbox to skip party validation in journal entry

(cherry picked from commit 35474d997d)

# Conflicts:
#	erpnext/accounts/doctype/journal_entry/journal_entry.json
#	erpnext/accounts/doctype/journal_entry/journal_entry.py

* fix: conflicts raised because of cherry pick while backporting

* fix: conflicts

---------

Co-authored-by: Raheel Khan <raheel@frappe.io>
2025-10-14 11:36:15 +05:30
mergify[bot]
b7c2405113 fix(Supplier Quotation Comparison): add a missing translate function (backport #49497) (#50055)
fix(Supplier Quotation Comparison): add a missing translate function (#49497)

* Update supplier_quotation_comparison.py

* refactor: text cleaning

(cherry picked from commit 6cacead726)

Co-authored-by: El-Shafei H. <el.shafei.developer@gmail.com>
2025-10-14 00:36:15 +05:30
rohitwaghchaure
f8a1ef055d Merge pull request #50051 from frappe/mergify/bp/version-15-hotfix/pr-50047
fix: enhance sub-assembly item handling in raw material request calculations (backport #50047)
2025-10-14 00:00:29 +05:30
Mihir Kandoi
664ac3d422 Merge pull request #50052 from frappe/mergify/bp/version-15-hotfix/pr-50025 2025-10-13 20:04:14 +05:30
Mihir Kandoi
5603467cee refactor: move value inline
(cherry picked from commit 1717a7c983)
2025-10-13 14:16:47 +00:00
thomasantony12
e23616f9ea chore: use get_single_value instead of get_cached_doc
(cherry picked from commit fab7f9ee53)
2025-10-13 14:16:47 +00:00
thomasantony12
50266d3b6b fix: Batch ordering based on the method mentioned in settings
(cherry picked from commit 7fa800b874)
2025-10-13 14:16:47 +00:00
Smit Vora
75d14985e0 chore: resolve conflicts 2025-10-13 19:45:04 +05:30
Smit Vora
467fcea728 fix: enhance sub-assembly item handling in raw material request calculations
(cherry picked from commit f912c8419a)

# Conflicts:
#	erpnext/manufacturing/doctype/production_plan/production_plan.py
2025-10-13 14:06:34 +00:00
Diptanil Saha
6a7004e4f7 Merge pull request #50046 from frappe/mergify/bp/version-15-hotfix/pr-49939
fix: preserve address if present (backport #49939)
2025-10-13 16:41:48 +05:30
diptanilsaha
5d1aa4050d chore: resolve conflicts 2025-10-13 16:36:36 +05:30
Khushi Rawat
ce6336d5d6 Merge pull request #50045 from frappe/mergify/bp/version-15-hotfix/pr-50040
perf: add composite indexes to Advance Payment Ledger Entry (backport #50040)
2025-10-13 16:25:52 +05:30
ravibharathi656
aaf470cf5c fix: preserve address if present
(cherry picked from commit 0678638106)

# Conflicts:
#	erpnext/public/js/controllers/transaction.js
2025-10-13 10:46:23 +00:00
khushi8112
c4cba78124 fix: revert unrelated manual modified timestamp change
(cherry picked from commit 59bd35c64d)
2025-10-13 10:38:12 +00:00
khushi8112
5652e926d7 perf: add composite indexes to Advance Payment Ledger Entry table
(cherry picked from commit 7fcf277055)
2025-10-13 10:38:12 +00:00
ruthra kumar
f68f7aba0b Merge pull request #50038 from frappe/mergify/bp/version-15-hotfix/pr-50017
fix(deferred revenue): validate service stop date (backport #50017)
2025-10-13 12:54:39 +05:30
ruthra kumar
f36da0543b Merge pull request #50037 from frappe/mergify/bp/version-15-hotfix/pr-50034
fix: set default roles on Role Profiles during reinstallation (backport #50034)
2025-10-13 12:38:01 +05:30
ravibharathi656
557d53a953 fix(deferred revenue): validate service stop date
(cherry picked from commit 58203a89f1)
2025-10-13 07:07:54 +00:00
diptanilsaha
c93fbf3982 fix: set default roles on role_profile during reinstallation
(cherry picked from commit 12c1b8a910)
2025-10-13 06:38:40 +00:00
rohitwaghchaure
d7bf7d0f4d Merge pull request #50026 from frappe/mergify/bp/version-15-hotfix/pr-50024
fix: stock ledger adjustment entry (backport #50024)
2025-10-12 12:12:59 +05:30
Rohit Waghchaure
8020159c14 fix: stock ledger adjustment entry
(cherry picked from commit 8b6e58d02a)
2025-10-12 06:11:44 +00:00
mergify[bot]
1e91c0f5aa Merge pull request #50006 from frappe/mergify/bp/version-15-hotfix/pr-49993
fix: incorrect PR status when using set landed cost based on PI rate (backport #49993)
2025-10-10 11:18:30 +00:00
Diptanil Saha
47af5747bd Merge pull request #50001 from diptanilsaha/backport_49764
feat: Cache employee name in session data on boot (backport #49764)
2025-10-10 12:33:39 +05:30
Khushi Rawat
3e8bf03e80 Merge pull request #50000 from frappe/mergify/bp/version-15-hotfix/pr-49980
fix: fixed asset register showing opening entries (backport #49980)
2025-10-10 12:01:10 +05:30
Khushi Rawat
fe32257450 Merge pull request #49999 from frappe/mergify/bp/version-15-hotfix/pr-49995
feat: add asset name to Asset Depreciations and Balances report (backport #49995)
2025-10-10 12:00:54 +05:30
Diptanil Saha
97b89da7c7 Merge pull request #49764 from elshafei-developer/add-employee-name-to-session-user
feat: Cache employee name in session data on boot
2025-10-10 11:45:38 +05:30
ravibharathi656
1ea6e1db12 fix: fixed asset register showing opening entries
(cherry picked from commit c9d98eb4f0)
2025-10-10 05:44:27 +00:00
Rehan Ansari
0776b300e8 feat: add asset name to Asset Depreciations and Balances report
(cherry picked from commit b4cf6a1fb9)
2025-10-10 05:35:25 +00:00
rohitwaghchaure
c350e9dabd Merge pull request #49994 from frappe/mergify/bp/version-15-hotfix/pr-49991
fix: consider negative qty in batch qty calculation (backport #49991)
2025-10-09 22:45:02 +05:30
Rohit Waghchaure
4370a59183 fix: consider negative qty in batch qty calculation
(cherry picked from commit 912ffc2d64)
2025-10-09 15:23:47 +00:00
Frappe PR Bot
cc0a895760 chore(release): Bumped to Version 15.82.2
## [15.82.2](https://github.com/frappe/erpnext/compare/v15.82.1...v15.82.2) (2025-10-09)

### Bug Fixes

* Reset Raw Materials Table button not working ([00db37e](00db37e306))
* sales return for product bundle items ([2ea583e](2ea583ee16))
2025-10-09 12:31:16 +00:00
rohitwaghchaure
6ec370ad86 Merge pull request #49989 from frappe/mergify/bp/version-15/pr-49974
fix: Reset Raw Materials Table button not working (backport #49973) (backport #49974)
2025-10-09 17:59:42 +05:30
rohitwaghchaure
994f992fcf Merge pull request #49990 from frappe/mergify/bp/version-15/pr-49984
fix: sales return for product bundle items (backport #49975) (backport #49984)
2025-10-09 17:59:28 +05:30
rohitwaghchaure
3e816f6ea1 chore: fix conflicts
(cherry picked from commit 1fbc03c104)
2025-10-09 12:09:21 +00:00
Rohit Waghchaure
789cea9a85 test: test case for sales return for product bundle
(cherry picked from commit 1d57bbca11)

# Conflicts:
#	erpnext/stock/doctype/delivery_note/test_delivery_note.py
(cherry picked from commit 6ba55bbee0)
2025-10-09 12:09:21 +00:00
Rohit Waghchaure
2ea583ee16 fix: sales return for product bundle items
(cherry picked from commit 13ce7279a8)
(cherry picked from commit ac46b3d1ca)
2025-10-09 12:09:20 +00:00
rohitwaghchaure
1ab45386a8 Merge pull request #49984 from frappe/mergify/bp/version-15-hotfix/pr-49975
fix: sales return for product bundle items (backport #49975)
2025-10-09 17:38:55 +05:30
Rohit Waghchaure
00db37e306 fix: Reset Raw Materials Table button not working
(cherry picked from commit 128e243945)
(cherry picked from commit 81ed32ff51)
2025-10-09 12:06:21 +00:00
rohitwaghchaure
1fbc03c104 chore: fix conflicts 2025-10-09 17:21:03 +05:30
Rohit Waghchaure
6ba55bbee0 test: test case for sales return for product bundle
(cherry picked from commit 1d57bbca11)

# Conflicts:
#	erpnext/stock/doctype/delivery_note/test_delivery_note.py
2025-10-09 09:40:27 +00:00
Rohit Waghchaure
ac46b3d1ca fix: sales return for product bundle items
(cherry picked from commit 13ce7279a8)
2025-10-09 09:40:26 +00:00
rohitwaghchaure
6e55f53cf6 Merge pull request #49974 from frappe/mergify/bp/version-15-hotfix/pr-49973
fix: Reset Raw Materials Table button not working (backport #49973)
2025-10-08 23:45:42 +05:30
Rohit Waghchaure
81ed32ff51 fix: Reset Raw Materials Table button not working
(cherry picked from commit 128e243945)
2025-10-08 17:05:21 +00:00
Khushi Rawat
5d9c245ddd Merge pull request #49956 from frappe/mergify/bp/version-15-hotfix/pr-49954
fix(asset movement): clear custodian if not present (backport #49954)
2025-10-08 21:33:20 +05:30
Frappe PR Bot
c84952169f chore(release): Bumped to Version 15.82.1
## [15.82.1](https://github.com/frappe/erpnext/compare/v15.82.0...v15.82.1) (2025-10-08)

### Bug Fixes

* batch qty for expired batches ([4e2a42d](4e2a42d092))
* incorrect field valuation_rate ([9c3f4b6](9c3f4b69af))
2025-10-08 14:32:21 +00:00
rohitwaghchaure
d103409077 Merge pull request #49972 from frappe/mergify/bp/version-15/pr-49971
fix: batch qty for expired batches (backport #49967) (backport #49971)
2025-10-08 20:00:34 +05:30
rohitwaghchaure
d1dd3ca097 Merge pull request #49970 from frappe/mergify/bp/version-15/pr-49968
fix: incorrect field valuation_rate (backport #49966) (backport #49968)
2025-10-08 20:00:19 +05:30
Rohit Waghchaure
4e2a42d092 fix: batch qty for expired batches
(cherry picked from commit ff2faf36a7)
(cherry picked from commit f4816e4960)
2025-10-08 14:12:42 +00:00
rohitwaghchaure
fda021430d Merge pull request #49971 from frappe/mergify/bp/version-15-hotfix/pr-49967
fix: batch qty for expired batches (backport #49967)
2025-10-08 19:41:42 +05:30
Rohit Waghchaure
f4816e4960 fix: batch qty for expired batches
(cherry picked from commit ff2faf36a7)
2025-10-08 13:49:28 +00:00
Rohit Waghchaure
9c3f4b69af fix: incorrect field valuation_rate
(cherry picked from commit 630d873214)
(cherry picked from commit 93df11a0cf)
2025-10-08 13:38:13 +00:00
rohitwaghchaure
33f67012b4 Merge pull request #49968 from frappe/mergify/bp/version-15-hotfix/pr-49966
fix: incorrect field valuation_rate (backport #49966)
2025-10-08 19:07:29 +05:30
Rohit Waghchaure
93df11a0cf fix: incorrect field valuation_rate
(cherry picked from commit 630d873214)
2025-10-08 13:15:53 +00:00
Khushi Rawat
38e1ca1362 fix: resolve conflict 2025-10-08 12:53:25 +05:30
ravibharathi656
4ec5b28fd2 fix(asset movement): clear custodian if not present
(cherry picked from commit 323d8eaccd)

# Conflicts:
#	erpnext/assets/doctype/asset_movement/asset_movement.py
2025-10-08 07:05:10 +00:00
Frappe PR Bot
e2e1ac0dba chore(release): Bumped to Version 15.82.0
# [15.82.0](https://github.com/frappe/erpnext/compare/v15.81.3...v15.82.0) (2025-10-07)

### Bug Fixes

* **accounting:** ensure proper removal of advance references during unreconcillation ([825ccd3](825ccd3422))
* add default scrap warehouse in wo ([a5ed9fd](a5ed9fdc67))
* Add try-finally for setting buying price list ([e21baec](e21baec246))
* check is_rejected attribute ([bdf150b](bdf150bdf8))
* clear asset custodian  when asset take back from employee without assign to another employee ([f4cdb49](f4cdb49126))
* **Common Code:** fetch canonical URI from Code List (backport [#49882](https://github.com/frappe/erpnext/issues/49882)) ([#49884](https://github.com/frappe/erpnext/issues/49884)) ([2c0501b](2c0501b05f))
* delete column dynamically based on the naming by ([040873a](040873a442))
* do not consider draft bundles ([75323fd](75323fda01))
* do not fetch disabled item tax template ([c42dcbe](c42dcbe739))
* exclude opening entries ([ed1c270](ed1c270398))
* failing patch ([0dad195](0dad1957c8))
* get unconsumed qty as per BOM qty ([82386b1](82386b18aa))
* linter; dont change doc after DB update ([#49907](https://github.com/frappe/erpnext/issues/49907)) ([6c47353](6c47353205))
* **manufacturing:** prevent KeyError in BOM Creator when sub-assembly reused ([07c3755](07c3755f31))
* optimize SQL query by adding index on batch ([a83331b](a83331bd2f))
* **profit and loss statement:** incorrect total calculation ([e132c45](e132c457f2))
* remove allow_on_submit for pick list items ([4ccdede](4ccdedeb12))
* resolved conflict ([a39bc62](a39bc626c7))
* retain shipping address in doc ([20c21a4](20c21a4dc0))
* set fg_completed_qty based upon fg item qty ([b6d57ff](b6d57ff8a5))
* Set paid amount automatically only if return entry validated and has negative grand total ([#49829](https://github.com/frappe/erpnext/issues/49829)) ([bd3503a](bd3503a3d8))
* SQL operator precedence in Project query customer filter ([d950de2](d950de2d09))
* **subscription:** include days before ([f27b754](f27b754570))
* too many writes on patch run ([a2bf53f](a2bf53ff0a))
* use item valuation rate if no bin ([a4b5a74](a4b5a74644))
* validate transfer_qty based on overproduction wo percentage ([7ce97ce](7ce97ce0c2))
* warning message if the batch has incorrect qty ([3f3fd20](3f3fd20b31))

### Features

* allow fallback to default selling price list (backport [#49634](https://github.com/frappe/erpnext/issues/49634)) ([#49704](https://github.com/frappe/erpnext/issues/49704)) ([95387b4](95387b4bf0))
* dynamic due date in payment terms when fetched from order (backport [#48864](https://github.com/frappe/erpnext/issues/48864)) ([#49938](https://github.com/frappe/erpnext/issues/49938)) ([baa6d2b](baa6d2bcdc))
* recalculate batch qty ([d49b64d](d49b64dc7c))
* validating asset scrap date ([#43093](https://github.com/frappe/erpnext/issues/43093)) ([0eb76f4](0eb76f4d2c))

### Performance Improvements

* serial nos / batches reposting ([8a310ef](8a310efc97))
2025-10-07 13:23:00 +00:00
ruthra kumar
b557a03ba7 Merge pull request #49942 from frappe/version-15-hotfix
chore: release v15
2025-10-07 18:51:39 +05:30
mergify[bot]
11eab0c852 Merge pull request #49946 from frappe/mergify/bp/version-15-hotfix/pr-49721
feat: add company links to Email Account and Communication (backport #49721)
2025-10-07 17:01:37 +05:30
rohitwaghchaure
8683f49e8b Merge pull request #49945 from frappe/mergify/bp/version-15-hotfix/pr-49935
refactor: old serial nos filter (backport #49935)
2025-10-07 16:29:16 +05:30
rohitwaghchaure
6ea07ba56d chore: fix conflicts 2025-10-07 16:02:30 +05:30
Rohit Waghchaure
e02a55b188 refactor: old serial nos filter
(cherry picked from commit 6a8bd0ae9e)

# Conflicts:
#	erpnext/stock/deprecated_serial_batch.py
2025-10-07 09:52:27 +00:00
mergify[bot]
baa6d2bcdc feat: dynamic due date in payment terms when fetched from order (backport #48864) (#49938)
* feat: dynamic due date in payment terms when fetched from order (#48864)

* fix: dynamic due date when payment terms are fetched from order

* fix(test): use change_settings decorator for settings enable and disable

* fix(test): compare schedule for due_date dynamically

* fix: save conditions for due date at invoice level

* fix: make fields read only and on change of date unset the date condition fields

* fix: remove fetch_form

* fix: correct field assingment

* fix: revert unwanted changes

* refactor: streamline payment term field assignments and enhance discount date handling

* refactor: remove payment_term from fields_to_copy and optimize currency handling in transaction callback

* refactor: ensure default values for payment schedule and discount validity fields

(cherry picked from commit 3c70cbbaf8)

# Conflicts:
#	erpnext/public/js/controllers/transaction.js
#	erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py

* chore: resolve conflicts

---------

Co-authored-by: Lakshit Jain <ljain112@gmail.com>
2025-10-07 14:10:15 +05:30
rohitwaghchaure
631ffd55ef Merge pull request #49934 from frappe/mergify/bp/version-15-hotfix/pr-49846
chore(Stock Qty vs Serial No Count): add show_disabled_items filter (backport #49846)
2025-10-07 11:49:20 +05:30
rethik
7a457dafe0 chore: add show_disabled_items filter to show both enabled and disabled items
(cherry picked from commit bf5f24c0e0)
2025-10-07 05:59:36 +00:00
rohitwaghchaure
94a5867303 Merge pull request #49933 from frappe/mergify/bp/version-15-hotfix/pr-49762
fix(manufacturing): prevent KeyError in BOM Creator when sub-assembly reused (backport #49762)
2025-10-07 11:23:12 +05:30
rohitwaghchaure
1663b875c0 Merge pull request #49932 from frappe/mergify/bp/version-15-hotfix/pr-49702
fix: do not fetch disabled item tax template (backport #49702)
2025-10-07 11:22:57 +05:30
ljain112
d47f3cc101 chore: resolve conflicts 2025-10-07 11:01:47 +05:30
KerollesFathy
07c3755f31 fix(manufacturing): prevent KeyError in BOM Creator when sub-assembly reused
Ensure missing (fg_item, fg_reference_id) keys are initialized in
production_item_wise_rm before appending items. This avoids crashes
when the same sub-assembly is referenced under multiple parents.

(cherry picked from commit 4f8b2e520a)
2025-10-07 05:27:18 +00:00
ljain112
c42dcbe739 fix: do not fetch disabled item tax template
(cherry picked from commit b10cf4a928)

# Conflicts:
#	erpnext/public/js/controllers/transaction.js
#	erpnext/stock/get_item_details.py
2025-10-07 05:26:09 +00:00
rohitwaghchaure
233fe9b7e6 Merge pull request #49929 from frappe/mergify/bp/version-15-hotfix/pr-49928
fix: warning message if the batch has incorrect qty (backport #49928)
2025-10-07 10:42:23 +05:30
Rohit Waghchaure
3f3fd20b31 fix: warning message if the batch has incorrect qty
(cherry picked from commit 870181de87)
2025-10-07 04:50:35 +00:00
ruthra kumar
f84a6c0d3a Merge pull request #49927 from frappe/mergify/bp/version-15-hotfix/pr-49743
fix: use valuation_rate from item master if no bin is present (backport #49743)
2025-10-07 10:03:27 +05:30
ruthra kumar
5c9c17c649 Merge pull request #49925 from frappe/mergify/bp/version-15-hotfix/pr-49870
fix: show asset value as revaluation amount or gross purchase amount (backport #49870)
2025-10-07 10:02:28 +05:30
ravibharathi656
a4b5a74644 fix: use item valuation rate if no bin
(cherry picked from commit 23b1b7ee04)
2025-10-07 04:13:26 +00:00
l0gesh29
ed1c270398 fix: exclude opening entries
(cherry picked from commit 3773f56b0b)
2025-10-06 21:40:58 +00:00
rohitwaghchaure
56d04761f8 Merge pull request #49924 from frappe/mergify/bp/version-15-hotfix/pr-49923
feat: recalculate batch qty (backport #49923)
2025-10-06 22:33:22 +05:30
Rohit Waghchaure
d49b64dc7c feat: recalculate batch qty
(cherry picked from commit 70117d3b06)
2025-10-06 16:30:14 +00:00
Frappe PR Bot
42b43b372a chore(release): Bumped to Version 15.81.3
## [15.81.3](https://github.com/frappe/erpnext/compare/v15.81.2...v15.81.3) (2025-10-06)

### Bug Fixes

* check is_rejected attribute ([b017f07](b017f07343))
* do not consider draft bundles ([92afae7](92afae7185))
2025-10-06 14:45:22 +00:00
rohitwaghchaure
4dae4b987e Merge pull request #49922 from frappe/mergify/bp/version-15/pr-49918
fix: check is_rejected attribute (backport #49913) (backport #49918)
2025-10-06 20:13:46 +05:30
rohitwaghchaure
54e672e078 Merge pull request #49921 from frappe/mergify/bp/version-15/pr-49919
fix: do not consider draft bundles (backport #49917) (backport #49919)
2025-10-06 20:13:38 +05:30
rohitwaghchaure
62a09a3cb0 Merge pull request #49920 from frappe/mergify/bp/version-15-hotfix/pr-49890
perf: serial nos / batches reposting (backport #49890)
2025-10-06 19:58:25 +05:30
Kavin
b017f07343 fix: check is_rejected attribute
(cherry picked from commit 2ac2e02b2f)
(cherry picked from commit bdf150bdf8)
2025-10-06 14:25:55 +00:00
Rohit Waghchaure
92afae7185 fix: do not consider draft bundles
(cherry picked from commit a60f7eaf3a)
(cherry picked from commit 75323fda01)
2025-10-06 14:25:46 +00:00
rohitwaghchaure
eb9d656b8f Merge pull request #49918 from frappe/mergify/bp/version-15-hotfix/pr-49913
fix: check is_rejected attribute (backport #49913)
2025-10-06 19:54:59 +05:30
rohitwaghchaure
7ddf63faa8 Merge pull request #49919 from frappe/mergify/bp/version-15-hotfix/pr-49917
fix: do not consider draft bundles (backport #49917)
2025-10-06 19:54:51 +05:30
Rohit Waghchaure
8a310efc97 perf: serial nos / batches reposting
(cherry picked from commit acb3ef78a7)
2025-10-06 14:11:43 +00:00
Kavin
bdf150bdf8 fix: check is_rejected attribute
(cherry picked from commit 2ac2e02b2f)
2025-10-06 14:08:30 +00:00
Rohit Waghchaure
75323fda01 fix: do not consider draft bundles
(cherry picked from commit a60f7eaf3a)
2025-10-06 14:08:30 +00:00
ruthra kumar
f94f628884 Merge pull request #49912 from frappe/mergify/bp/version-15-hotfix/pr-49600
fix(profit and loss statement): incorrect total calculation (backport #49600)
2025-10-06 17:27:55 +05:30
ravibharathi656
e132c457f2 fix(profit and loss statement): incorrect total calculation
(cherry picked from commit b7c6d8e2a6)
2025-10-06 11:40:38 +00:00
ruthra kumar
048d6f6942 Merge pull request #49908 from frappe/mergify/bp/version-15-hotfix/pr-49635
fix(subscription): include days before (backport #49635)
2025-10-06 15:39:59 +05:30
Raffael Meyer
6c47353205 fix: linter; dont change doc after DB update (#49907)
Co-authored-by: ruthra kumar <ruthra@erpnext.com>
2025-10-06 10:02:05 +00:00
ravibharathi656
4f067085e7 test: add invoice generation before period with prorate
(cherry picked from commit b452e06b82)
2025-10-06 09:52:07 +00:00
ravibharathi656
3fcbb10155 refactor(subscription): default prorate 0
(cherry picked from commit eda1dae882)
2025-10-06 09:52:07 +00:00
ravibharathi656
f27b754570 fix(subscription): include days before
(cherry picked from commit 9164162a9e)
2025-10-06 09:52:06 +00:00
mergify[bot]
95387b4bf0 feat: allow fallback to default selling price list (backport #49634) (#49704)
Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
Co-authored-by: Henning Wendtland <156231187+HenningWendtland@users.noreply.github.com>
2025-10-06 11:49:40 +02:00
ruthra kumar
7f2d26ec20 Merge pull request #49900 from frappe/mergify/bp/version-15-hotfix/pr-49852
fix: SQL operator precedence in Project query customer filter (backport #49852)
2025-10-06 13:21:58 +05:30
Fawaz Alhafiz
d950de2d09 fix: SQL operator precedence in Project query customer filter
Added explicit parentheses around customer OR conditions in get_project_name()
to ensure proper grouping with AND filters. Without these parentheses, SQL
operator precedence caused the status filter to be bypassed when a customer
filter was applied, resulting in completed and cancelled projects appearing
in link field dropdowns.

Before:
WHERE customer='X' OR customer IS NULL OR customer='' AND status NOT IN (...)
was interpreted as:
WHERE customer='X' OR customer IS NULL OR (customer='' AND status NOT IN (...))

After:
WHERE (customer='X' OR customer IS NULL OR customer='') AND status NOT IN (...)

Fixes: Completed/cancelled projects showing in Project link fields
Affected: Any doctype using Project link fields with customer filters
(cherry picked from commit 0ec30a1cea)
2025-10-06 07:34:55 +00:00
ruthra kumar
5d8a368ad2 Merge pull request #49893 from frappe/mergify/bp/version-15-hotfix/pr-49829
fix: Set paid amount automatically only if return entry validated and has negative grand total (backport #49829)
2025-10-06 12:58:33 +05:30
ruthra kumar
615a5fa5ba Merge pull request #49898 from frappe/mergify/bp/version-15-hotfix/pr-49865
fix: delete column dynamically based on the naming by (backport #49865)
2025-10-06 12:51:23 +05:30
ruthra kumar
823cdf211d Merge pull request #49894 from frappe/mergify/bp/version-15-hotfix/pr-49871
fix: retain shipping address in doc (backport #49871)
2025-10-06 12:37:21 +05:30
ravibharathi656
20c21a4dc0 fix: retain shipping address in doc
(cherry picked from commit 039f5e6143)

# Conflicts:
#	erpnext/public/js/controllers/buying.js
2025-10-06 12:35:21 +05:30
l0gesh29
040873a442 fix: delete column dynamically based on the naming by
(cherry picked from commit 4f503ac7f6)
2025-10-06 07:05:04 +00:00
Nabin Hait
a39bc626c7 fix: resolved conflict 2025-10-06 12:17:57 +05:30
Nabin Hait
bd3503a3d8 fix: Set paid amount automatically only if return entry validated and has negative grand total (#49829)
(cherry picked from commit dcbcc596f2)

# Conflicts:
#	erpnext/public/js/controllers/taxes_and_totals.js
2025-10-06 05:58:29 +00:00
Frappe PR Bot
161c1fb7a4 chore(release): Bumped to Version 15.81.2
## [15.81.2](https://github.com/frappe/erpnext/compare/v15.81.1...v15.81.2) (2025-10-06)

### Bug Fixes

* failing patch ([65061cc](65061cc459))
2025-10-06 03:54:42 +00:00
ruthra kumar
4d506d2d9c Merge pull request #49873 from frappe/mergify/bp/version-15/pr-49868
fix: failing patch (backport #49867) (backport #49868)
2025-10-06 09:23:17 +05:30
ruthra kumar
04abc6b5e5 Merge pull request #49877 from frappe/mergify/bp/version-15-hotfix/pr-49872
fix: remove allow_on_submit for pick list items (backport #49872)
2025-10-06 09:21:33 +05:30
mergify[bot]
2c0501b05f fix(Common Code): fetch canonical URI from Code List (backport #49882) (#49884)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix(Common Code): fetch canonical URI from Code List (#49882)
2025-10-04 19:22:28 +02:00
rohitwaghchaure
7b484de0a9 Merge pull request #49878 from frappe/mergify/bp/version-15-hotfix/pr-49876
fix: optimize SQL query by adding index on batch (backport #49876)
2025-10-04 13:18:07 +05:30
Rohit Waghchaure
a83331bd2f fix: optimize SQL query by adding index on batch
(cherry picked from commit 8756f91857)
2025-10-04 05:30:10 +00:00
Kavin
4ccdedeb12 fix: remove allow_on_submit for pick list items
(cherry picked from commit da716b824f)
2025-10-04 04:36:08 +00:00
Mihir Kandoi
65061cc459 fix: failing patch
(cherry picked from commit 41d1703e7c)
(cherry picked from commit 0dad1957c8)
2025-10-03 19:04:15 +00:00
Mihir Kandoi
fe0739aadf Merge pull request #49868 from frappe/mergify/bp/version-15-hotfix/pr-49867
fix: failing patch (backport #49867)
2025-10-04 00:33:18 +05:30
Mihir Kandoi
0dad1957c8 fix: failing patch
(cherry picked from commit 41d1703e7c)
2025-10-03 10:02:09 +00:00
rohitwaghchaure
bf39ae6db0 Merge pull request #49856 from frappe/mergify/bp/version-15-hotfix/pr-49806
fix: validate transfer_qty based on overproduction wo percentage (backport #49806)
2025-10-02 22:43:52 +05:30
Khushi Rawat
09bcff13ad Merge pull request #49522 from KerollesFathy/clear-custodian-when-asset-take-backed
fix: clear asset custodian when asset take back from employee without assign to another employee
2025-10-02 22:16:35 +05:30
rohitwaghchaure
b91fb6b280 Merge pull request #49855 from frappe/mergify/bp/version-15-hotfix/pr-49850
fix: add default scrap warehouse in wo (backport #49850)
2025-10-02 20:22:20 +05:30
Kavin
0fec34e886 test: test overproduction allowed qty in wo
(cherry picked from commit b527d38bfa)
2025-10-02 14:36:24 +00:00
Kavin
b6d57ff8a5 fix: set fg_completed_qty based upon fg item qty
(cherry picked from commit 526b850e61)
2025-10-02 14:36:24 +00:00
Kavin
7ce97ce0c2 fix: validate transfer_qty based on overproduction wo percentage
(cherry picked from commit 4024d8846b)
2025-10-02 14:36:23 +00:00
Kavin
a5ed9fdc67 fix: add default scrap warehouse in wo
(cherry picked from commit 7e51346946)
2025-10-02 14:35:22 +00:00
mergify[bot]
5e5850d89a refactor(Supplier): custom buttons call make methods (backport #49840) (#49842)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-10-02 00:16:34 +02:00
Diptanil Saha
56aa86f77e Merge pull request #49839 from diptanilsaha/backport_49496
fix(Accounts Payable Summary): add a missing translate function (backport #49496)
2025-10-02 00:24:42 +05:30
Diptanil Saha
f321725b49 Merge pull request #49496 from elshafei-developer/Add-a-missing-translate-function
fix(Accounts Payable Summary): add a missing translate function
2025-10-02 00:07:06 +05:30
Diptanil Saha
4e3697284e Merge pull request #49838 from diptanilsaha/backport_49820
fix: financial ratios translation and pdf export error (backport #49820)
2025-10-01 23:57:09 +05:30
Frappe PR Bot
4c1cada222 chore(release): Bumped to Version 15.81.1
## [15.81.1](https://github.com/frappe/erpnext/compare/v15.81.0...v15.81.1) (2025-10-01)

### Bug Fixes

* Add try-finally for setting buying price list ([e10ed89](e10ed89be5))
* too many writes on patch run ([c455e73](c455e7390e))
2025-10-01 14:55:26 +00:00
Mihir Kandoi
8bb19eece4 Merge pull request #49835 from frappe/mergify/bp/version-15/pr-49833
fix: too many writes on patch run (backport #49832) (backport #49833)
2025-10-01 20:23:45 +05:30
Mihir Kandoi
e10ed89be5 fix: Add try-finally for setting buying price list
(cherry picked from commit 35a8d02866)
(cherry picked from commit e21baec246)
2025-10-01 13:44:41 +00:00
Mihir Kandoi
c455e7390e fix: too many writes on patch run
(cherry picked from commit 44ff6ed6a1)
(cherry picked from commit a2bf53ff0a)
2025-10-01 13:44:41 +00:00
Mihir Kandoi
3f9fbb7b75 Merge pull request #49833 from frappe/mergify/bp/version-15-hotfix/pr-49832 2025-10-01 19:13:21 +05:30
Mihir Kandoi
e21baec246 fix: Add try-finally for setting buying price list
(cherry picked from commit 35a8d02866)
2025-10-01 13:27:40 +00:00
Mihir Kandoi
a2bf53ff0a fix: too many writes on patch run
(cherry picked from commit 44ff6ed6a1)
2025-10-01 13:27:40 +00:00
ruthra kumar
06cd48feaa Merge pull request #49823 from frappe/mergify/bp/version-15-hotfix/pr-49689
fix(accounting): ensure proper removal of advance references during u… (backport #49689)
2025-10-01 12:56:19 +05:30
Pandiyan P
825ccd3422 fix(accounting): ensure proper removal of advance references during unreconcillation
(cherry picked from commit a7ec01bf21)
2025-10-01 06:40:55 +00:00
rohitwaghchaure
c56da286f7 Merge pull request #49811 from frappe/mergify/bp/version-15-hotfix/pr-49750
fix: get unconsumed qty as per BOM required qty (backport #49750)
2025-09-30 22:19:55 +05:30
Khushi Rawat
a7577d428f Merge pull request #49817 from khushi8112/backport-v15-pr-43093
feat: validating asset scrap date (backport #43093)
2025-09-30 21:23:26 +05:30
Khushi Rawat
e81b85b241 chore: resolve conflict 2025-09-30 21:02:39 +05:30
rahulgupta8848
0eb76f4d2c feat: validating asset scrap date (#43093)
* feat: validating asset scrap date

* refactor: refactorization of scrap asset function

---------

Co-authored-by: “rahulgupta8848” <“rahul.gupta@8848digital.com”>
(cherry picked from commit e07bc5af41)

# Conflicts:
#	erpnext/assets/doctype/asset/asset.js
2025-09-30 21:02:15 +05:30
Frappe PR Bot
24013ddf27 chore(release): Bumped to Version 15.81.0
# [15.81.0](https://github.com/frappe/erpnext/compare/v15.80.1...v15.81.0) (2025-09-30)

### Bug Fixes

* add date filter for getting return invoice items ([bc77704](bc77704462))
* auto batch not set for raw materials in subcontracting receipt ([6c8e838](6c8e8384d5))
* **bank transaction:** change reference number to small text ([5a0bf7a](5a0bf7a5e1))
* convert with flt ([3975627](3975627b33))
* do not validate cost center in cancelled gl entry ([366bb82](366bb8269c))
* don't recalculate stock_qty with conversion_factor ([c88a277](c88a277ad9))
* include precision in validation ([abffbca](abffbcad99))
* **payment entry:** trigger currency on account set ([84a2596](84a2596ce5))
* remove item name to avoid overriding item row name ([d0e511f](d0e511fd2f))
* set cost center in taxes if not set ([4dcd502](4dcd502b76))
* **stock entry:** set expense account from company for manufacture ([50f9521](50f9521feb))
* update item details only in draft state ([30f6b53](30f6b53240))
* update subcontracted_quantity with set_value ([17e415d](17e415d03a))
* use get_value instead of get_doc ([f706811](f706811757))
* use sales_order from data instead of doc ([7ee8281](7ee82813fd))
* use stock adjustment account  if no expense account ([9c81f44](9c81f448c8))
* valuation rate for old batch ([37a03f1](37a03f10ab))

### Features

* add show zero value filter in profit and loss and balance sheet ([c32ad97](c32ad9711f))
* service expense account in the subcontracting receipt ([ba9b63a](ba9b63af49))

### Performance Improvements

* reposting for backdated transactions ([cd5a836](cd5a836685))
2025-09-30 13:28:59 +00:00
ruthra kumar
e8ee5f8c9b Merge pull request #49801 from frappe/version-15-hotfix
chore: release v15
2025-09-30 18:56:45 +05:30
rohitwaghchaure
0fb5f75e93 chore: fix conflicts
Removed the test for additional material transfer in work orders.
2025-09-30 18:43:38 +05:30
rohitwaghchaure
4847e24553 Merge branch 'version-15' into version-15-hotfix 2025-09-30 18:38:20 +05:30
Kavin
f548f0b231 test: required_qty clamping in manufacture entry
(cherry picked from commit 34d2c8d9c2)

# Conflicts:
#	erpnext/manufacturing/doctype/work_order/test_work_order.py
2025-09-30 12:28:34 +00:00
Kavin
82386b18aa fix: get unconsumed qty as per BOM qty
(cherry picked from commit cf4b395ee3)
2025-09-30 12:28:33 +00:00
rohitwaghchaure
bbbcb456ce Merge pull request #49810 from frappe/mergify/bp/version-15-hotfix/pr-49803
fix: valuation rate for old batch (backport #49803)
2025-09-30 17:50:13 +05:30
rohitwaghchaure
4c78f9b9cb Merge pull request #49807 from frappe/mergify/bp/version-15-hotfix/pr-49794
fix: don't recalculate stock_qty with conversion_factor (backport #49794)
2025-09-30 17:12:18 +05:30
Rohit Waghchaure
37a03f10ab fix: valuation rate for old batch
(cherry picked from commit d864d166f9)
2025-09-30 11:42:15 +00:00
rohitwaghchaure
c2dd37a89e Merge pull request #49808 from frappe/mergify/bp/version-15-hotfix/pr-49766
fix: use sales_order from data instead of doc (backport #49766)
2025-09-30 17:12:07 +05:30
rohitwaghchaure
f458faa819 Merge pull request #49809 from frappe/mergify/bp/version-15-hotfix/pr-49748
fix: update item details only in draft state (backport #49748)
2025-09-30 17:11:56 +05:30
Kavin
30f6b53240 fix: update item details only in draft state
(cherry picked from commit 689172ff22)
2025-09-30 11:08:59 +00:00
Kavin
7ee82813fd fix: use sales_order from data instead of doc
(cherry picked from commit 9f9120451b)
2025-09-30 11:06:48 +00:00
Kavin
c88a277ad9 fix: don't recalculate stock_qty with conversion_factor
(cherry picked from commit fed8236919)
2025-09-30 11:03:47 +00:00
rohitwaghchaure
9e73d083b5 Merge pull request #49793 from frappe/mergify/bp/version-15-hotfix/pr-49790
fix: update subcontracted_quantity with set_value (backport #49790)
2025-09-30 16:32:13 +05:30
rohitwaghchaure
03c8d92796 Merge pull request #49792 from frappe/mergify/bp/version-15-hotfix/pr-49791
refactor: convert item warehouse based reposting (backport #49791)
2025-09-30 16:31:57 +05:30
ruthra kumar
31ad9a6346 Merge pull request #49805 from frappe/mergify/bp/version-15-hotfix/pr-49639
fix(Credit-limit): consider current voucher for credit limit validation (backport #49639)
2025-09-30 16:30:17 +05:30
PRASATHRAJA
fc40a3c376 Merge pull request #49639 from aerele/credit-limit-jv
fix(Credit-limit): consider current voucher for credit limit validation

(cherry picked from commit 4a01c53cca)
2025-09-30 10:39:35 +00:00
ruthra kumar
b8e3db0179 Merge pull request #49800 from frappe/mergify/bp/version-15-hotfix/pr-49799
fix: do not validate cost center in cancelled gl entry (backport #49799)
2025-09-30 15:14:11 +05:30
ljain112
366bb8269c fix: do not validate cost center in cancelled gl entry
(cherry picked from commit 29cbddbc77)
2025-09-30 09:04:24 +00:00
venkat102
3975627b33 fix: convert with flt
(cherry picked from commit 81614939ab)
2025-09-29 16:20:27 +00:00
venkat102
f706811757 fix: use get_value instead of get_doc
(cherry picked from commit 89a603f20c)
2025-09-29 16:20:26 +00:00
venkat102
17e415d03a fix: update subcontracted_quantity with set_value
(cherry picked from commit ea63bfc9af)
2025-09-29 16:20:26 +00:00
Rohit Waghchaure
8911bad792 refactor: convert item-wh based reposting
(cherry picked from commit 8411e4c5b2)
2025-09-29 16:20:25 +00:00
ruthra kumar
a30c481ca1 Merge pull request #49787 from frappe/mergify/bp/version-15-hotfix/pr-49773
fix(bank transaction): change reference number to small text (backport #49773)
2025-09-29 17:15:06 +05:30
ravibharathi656
5a0bf7a5e1 fix(bank transaction): change reference number to small text
(cherry picked from commit 90f399d0fc)

# Conflicts:
#	erpnext/accounts/doctype/bank_transaction/bank_transaction.json
2025-09-29 16:59:31 +05:30
ruthra kumar
f135954944 Merge pull request #49784 from frappe/mergify/bp/version-15-hotfix/pr-49708
feat: add show zero value filter in profit and loss and balance sheet (backport #49708)
2025-09-29 16:47:54 +05:30
ravibharathi656
c32ad9711f feat: add show zero value filter in profit and loss and balance sheet
(cherry picked from commit 33ab24943c)

# Conflicts:
#	erpnext/accounts/report/balance_sheet/balance_sheet.js
#	erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.js
2025-09-29 16:32:21 +05:30
ruthra kumar
f6842041c9 Merge pull request #49782 from frappe/mergify/bp/version-15-hotfix/pr-49718
fix: set cost center in taxes if not set (backport #49718)
2025-09-29 16:26:35 +05:30
ravibharathi656
4dcd502b76 fix: set cost center in taxes if not set
(cherry picked from commit b75940bf0e)

# Conflicts:
#	erpnext/public/js/controllers/transaction.js
2025-09-29 15:53:19 +05:30
ruthra kumar
19f81c9204 Merge pull request #49777 from frappe/mergify/bp/version-15-hotfix/pr-49735
fix(payment entry): trigger currency on account set (backport #49735)
2025-09-29 14:56:14 +05:30
ruthra kumar
67b6b3779d Merge pull request #49775 from frappe/mergify/bp/version-15-hotfix/pr-49618
fix: add date filter for getting return invoice items (backport #49618)
2025-09-29 14:31:45 +05:30
ruthra kumar
c836016358 Merge pull request #49774 from frappe/mergify/bp/version-15-hotfix/pr-49640
fix: include precision in validation (backport #49640)
2025-09-29 14:29:45 +05:30
ravibharathi656
84a2596ce5 fix(payment entry): trigger currency on account set
(cherry picked from commit 096e74b1ee)
2025-09-29 08:58:03 +00:00
Navin-S-R
98bc7b41fc test: validate profit values for later period returns
(cherry picked from commit d5c457b8c5)

# Conflicts:
#	erpnext/accounts/report/gross_profit/test_gross_profit.py
2025-09-29 14:16:52 +05:30
l0gesh29
abffbcad99 fix: include precision in validation
(cherry picked from commit 1de0c46c51)
2025-09-29 08:44:29 +00:00
Navin-S-R
bc77704462 fix: add date filter for getting return invoice items
(cherry picked from commit 2abb011816)
2025-09-29 08:44:28 +00:00
rohitwaghchaure
5abb2d510d Merge pull request #49772 from frappe/mergify/bp/version-15-hotfix/pr-49770
chore: removed print statement (backport #49770)
2025-09-29 13:06:44 +05:30
Rohit Waghchaure
ae040024af chore: removed print statement
(cherry picked from commit 324bdcb177)
2025-09-29 06:32:32 +00:00
rohitwaghchaure
fe1247dd4b Merge pull request #49758 from frappe/mergify/bp/version-15-hotfix/pr-49757
feat: service expense account in the subcontracting receipt (backport #49757)
2025-09-27 10:20:23 +05:30
rohitwaghchaure
84789daf59 Merge pull request #49756 from frappe/mergify/bp/version-15-hotfix/pr-49741
fix(stock entry): set expense account from company for manufacture (backport #49741)
2025-09-27 10:04:06 +05:30
rohitwaghchaure
cecd177286 chore: fix conflicts
Removed fields related to job card and landed cost voucher amount from subcontracting receipt item.
2025-09-27 10:03:27 +05:30
rohitwaghchaure
c26ed80d67 chore: fix conflicts 2025-09-27 10:02:40 +05:30
rohitwaghchaure
15f0c28cda chore: fix conflicts 2025-09-27 10:01:53 +05:30
Rohit Waghchaure
ba9b63af49 feat: service expense account in the subcontracting receipt
(cherry picked from commit 6e597b9c42)

# Conflicts:
#	erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py
#	erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py
#	erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json
2025-09-26 15:44:26 +00:00
ravibharathi656
9c81f448c8 fix: use stock adjustment account if no expense account
(cherry picked from commit b2e109318f)
2025-09-26 13:28:43 +00:00
ravibharathi656
50f9521feb fix(stock entry): set expense account from company for manufacture
(cherry picked from commit 06177ffaff)
2025-09-26 13:28:43 +00:00
ruthra kumar
0ff32ac554 Merge pull request #49738 from frappe/mergify/bp/version-15-hotfix/pr-49717
refactor: improve trial balance performance (backport #49717)
2025-09-26 11:58:26 +05:30
rohitwaghchaure
fe72ea6d6b Merge pull request #49739 from frappe/mergify/bp/version-15-hotfix/pr-49734
fix: auto batch not set for raw materials in subcontracting receipt (backport #49734)
2025-09-26 11:43:04 +05:30
rohitwaghchaure
62959e5a70 chore: fix conflicts 2025-09-26 11:21:16 +05:30
Rohit Waghchaure
6c8e8384d5 fix: auto batch not set for raw materials in subcontracting receipt
(cherry picked from commit 23f9d4c600)

# Conflicts:
#	erpnext/controllers/subcontracting_controller.py
2025-09-26 05:07:12 +00:00
ruthra kumar
0c8004530a refactor: improve trial balance performance
(cherry picked from commit cee3813ced)
2025-09-26 04:46:00 +00:00
Raffael Meyer
b18afa8bdd chore(Bank Guarante): move to leaner doctype definition (#49737) 2025-09-25 22:05:59 +00:00
Frappe PR Bot
f54933e657 chore(release): Bumped to Version 15.80.1
## [15.80.1](https://github.com/frappe/erpnext/compare/v15.80.0...v15.80.1) (2025-09-25)

### Bug Fixes

* remove item name to avoid overriding item row name ([a80e0d9](a80e0d9d39))

### Performance Improvements

* reposting for backdated transactions ([f43fac5](f43fac50ed))
2025-09-25 15:14:17 +00:00
rohitwaghchaure
a1862020e8 Merge pull request #49732 from frappe/mergify/bp/version-15/pr-49728
fix: remove item name in get_item_details (backport #49725) (backport #49728)
2025-09-25 20:42:44 +05:30
rohitwaghchaure
249d6b3619 Merge pull request #49729 from frappe/mergify/bp/version-15/pr-49724
perf: reposting for backdated transactions (backport #49720) (backport #49724)
2025-09-25 20:42:35 +05:30
Kavin
a80e0d9d39 fix: remove item name to avoid overriding item row name
(cherry picked from commit 47055901c0)
(cherry picked from commit d0e511fd2f)
2025-09-25 14:23:33 +00:00
rohitwaghchaure
6b3bb45900 Merge pull request #49728 from frappe/mergify/bp/version-15-hotfix/pr-49725
fix: remove item name in get_item_details (backport #49725)
2025-09-25 19:52:28 +05:30
Rohit Waghchaure
f43fac50ed perf: reposting for backdated transactions
(cherry picked from commit 1b0fc0541b)
(cherry picked from commit cd5a836685)
2025-09-25 13:23:30 +00:00
Kavin
d0e511fd2f fix: remove item name to avoid overriding item row name
(cherry picked from commit 47055901c0)
2025-09-25 13:23:29 +00:00
rohitwaghchaure
d50538dbf7 Merge pull request #49724 from frappe/mergify/bp/version-15-hotfix/pr-49720
perf: reposting for backdated transactions (backport #49720)
2025-09-25 18:52:32 +05:30
Rohit Waghchaure
cd5a836685 perf: reposting for backdated transactions
(cherry picked from commit 1b0fc0541b)
2025-09-25 12:16:41 +00:00
Frappe PR Bot
05d5dc5321 chore(release): Bumped to Version 15.80.0
# [15.80.0](https://github.com/frappe/erpnext/compare/v15.79.2...v15.80.0) (2025-09-23)

### Bug Fixes

* **accounts receivable:** exclude employee transactions ([c071107](c071107b27))
* **accounts:** dynamic zero cutoff (backport [#48899](https://github.com/frappe/erpnext/issues/48899)) ([#49552](https://github.com/frappe/erpnext/issues/49552)) ([5ef7a78](5ef7a7857c))
* add condition for name ([65ce737](65ce737c2d))
* add option for currency field (backport [#49572](https://github.com/frappe/erpnext/issues/49572)) ([#49594](https://github.com/frappe/erpnext/issues/49594)) ([1a4ea07](1a4ea07b78))
* auto commit if too many writes reached ([0310172](0310172338))
* Consider non SABB batch qty in reserved batch validation ([7ed97e4](7ed97e47cc))
* incorrect current qty calculation for the batch ([bf48cf0](bf48cf02e5))
* **item:** avoid inheriting item defaults from identically named items ([#49571](https://github.com/frappe/erpnext/issues/49571)) ([9e58a56](9e58a56b5c))
* only show filters in print view if 'Include filters' is enabled ([79d4731](79d4731fe7))
* **payment-reconciliation:** apply field precision for allocated and difference amounts (backport [#49448](https://github.com/frappe/erpnext/issues/49448)) ([#49595](https://github.com/frappe/erpnext/issues/49595)) ([fbd62e7](fbd62e72f9))
* project accounting dimension and gl posting date column width (backport [#49563](https://github.com/frappe/erpnext/issues/49563)) ([#49591](https://github.com/frappe/erpnext/issues/49591)) ([bce22cb](bce22cb27b))
* **purchase order:** get party type based on supplier field ([3aebbf6](3aebbf6e92))
* restore auto_commit_on_many_writes flag ([5320782](53207821aa))
* set first_response_time on status change of issue ([0d5613c](0d5613ca4c))
* skip receivable/payable account validation in payroll entry if party is not available (backport [#49585](https://github.com/frappe/erpnext/issues/49585)) ([#49598](https://github.com/frappe/erpnext/issues/49598)) ([697f6ef](697f6ef086))
* **stock:** NoneType object error on stock entry ([de8c4ee](de8c4eec1b))
* warehouse for batch validation ([cb94c4b](cb94c4b5f1))

### Features

* add filters option in print view (backport [#49631](https://github.com/frappe/erpnext/issues/49631)) ([#49700](https://github.com/frappe/erpnext/issues/49700)) ([e9b29ed](e9b29ed544))
* populate available qty in pick list locations ([bc7f884](bc7f884ae1))
2025-09-23 14:00:33 +00:00
ruthra kumar
74b19f2743 Merge pull request #49697 from frappe/version-15-hotfix
chore: release v15
2025-09-23 19:29:11 +05:30
ruthra kumar
e9b29ed544 feat: add filters option in print view (backport #49631) (#49700)
fix: only show filters in print view if 'Include filters' is enabled

(cherry picked from commit 1979879b07)

# Conflicts:
#	erpnext/accounts/report/general_ledger/general_ledger.html

Co-authored-by: Nareshkanna S <nareshkannashanmugam@gmail.com>
2025-09-23 16:40:11 +05:30
Nareshkanna S
79d4731fe7 fix: only show filters in print view if 'Include filters' is enabled
(cherry picked from commit 1979879b07)

# Conflicts:
#	erpnext/accounts/report/general_ledger/general_ledger.html
2025-09-23 16:29:18 +05:30
ruthra kumar
e4997af1c0 Merge pull request #49695 from frappe/mergify/bp/version-15-hotfix/pr-49694
chore: update sales_data from site_info (backport #49694)
2025-09-23 15:11:22 +05:30
Jannat Patel
ff08ee6ada test: activation with site_info
(cherry picked from commit 5a26d593e4)
2025-09-23 09:22:03 +00:00
Jannat Patel
ac55028f6b chore: update sales_data from site_info
(cherry picked from commit 866b252309)
2025-09-23 09:22:03 +00:00
Frappe PR Bot
98457a8530 chore(release): Bumped to Version 15.79.2
## [15.79.2](https://github.com/frappe/erpnext/compare/v15.79.1...v15.79.2) (2025-09-23)

### Bug Fixes

* Consider non SABB batch qty in reserved batch validation ([9158751](91587517d9))
* warehouse for batch validation ([59a7104](59a710433a))
2025-09-23 07:16:11 +00:00
rohitwaghchaure
236d8c7af1 Merge pull request #49693 from frappe/mergify/bp/version-15/pr-49691
fix: Consider non SABB batch qty in reserved batch validation (backport #49648) (backport #49691)
2025-09-23 12:44:43 +05:30
rohitwaghchaure
63c1fd52b1 Merge pull request #49692 from frappe/mergify/bp/version-15/pr-49688
fix: warehouse for batch validation (backport #49687) (backport #49688)
2025-09-23 12:44:21 +05:30
Kavin
91587517d9 fix: Consider non SABB batch qty in reserved batch validation
(cherry picked from commit ae8b34e03c)
(cherry picked from commit 7ed97e47cc)
2025-09-23 06:39:33 +00:00
rohitwaghchaure
7402549b4b Merge pull request #49691 from frappe/mergify/bp/version-15-hotfix/pr-49648
fix: Consider non SABB batch qty in reserved batch validation (backport #49648)
2025-09-23 12:09:11 +05:30
Rohit Waghchaure
59a710433a fix: warehouse for batch validation
(cherry picked from commit 381072170a)
(cherry picked from commit cb94c4b5f1)
2025-09-23 06:37:26 +00:00
rohitwaghchaure
f4cef8a417 Merge pull request #49690 from frappe/mergify/bp/version-15-hotfix/pr-49684
feat: populate available qty in pick list locations (backport #49684)
2025-09-23 12:07:00 +05:30
rohitwaghchaure
dc6d4f2620 Merge pull request #49688 from frappe/mergify/bp/version-15-hotfix/pr-49687
fix: warehouse for batch validation (backport #49687)
2025-09-23 12:06:31 +05:30
Kavin
7ed97e47cc fix: Consider non SABB batch qty in reserved batch validation
(cherry picked from commit ae8b34e03c)
2025-09-23 06:21:00 +00:00
Kavin
a463f4a419 refactor: fetching qty on warehouse trigger
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
(cherry picked from commit e3ab0e7c67)
2025-09-23 06:20:23 +00:00
Kavin
bc7f884ae1 feat: populate available qty in pick list locations
(cherry picked from commit d8756fc7de)
2025-09-23 06:20:23 +00:00
Kavin
056d51937b chore: rename stock qty label
(cherry picked from commit fc967fceb2)
2025-09-23 06:20:22 +00:00
Rohit Waghchaure
cb94c4b5f1 fix: warehouse for batch validation
(cherry picked from commit 381072170a)
2025-09-23 06:12:44 +00:00
Diptanil Saha
868987e46e Merge pull request #49686 from frappe/mergify/bp/version-15-hotfix/pr-49676
fix: auto commit if too many writes reached (backport #49676)
2025-09-23 11:20:36 +05:30
Kavin
53207821aa fix: restore auto_commit_on_many_writes flag
(cherry picked from commit 66712fa8b5)
2025-09-23 05:31:28 +00:00
Kavin
0310172338 fix: auto commit if too many writes reached
(cherry picked from commit 99a0ba0b45)
2025-09-23 05:31:27 +00:00
ruthra kumar
5bfb4d2390 Merge pull request #49667 from frappe/mergify/bp/version-15-hotfix/pr-49644
fix(purchase order): get party type based on supplier field (backport #49644)
2025-09-22 15:05:53 +05:30
venkat102
3aebbf6e92 fix(purchase order): get party type based on supplier field
(cherry picked from commit 11b9b1adc5)

# Conflicts:
#	erpnext/public/js/controllers/transaction.js
2025-09-22 15:01:57 +05:30
ruthra kumar
925afe1b59 Merge pull request #49665 from frappe/mergify/bp/version-15-hotfix/pr-49653
fix(accounts receivable): exclude employee transactions (backport #49653)
2025-09-22 14:58:17 +05:30
venkat102
c071107b27 fix(accounts receivable): exclude employee transactions
(cherry picked from commit 736a776d3d)
2025-09-22 08:05:36 +00:00
ruthra kumar
8c7e20f9a2 Merge pull request #49664 from frappe/mergify/bp/version-15-hotfix/pr-49470
fix(bank clearance): use base total taxes and charges if exists (backport #49470)
2025-09-22 12:44:55 +05:30
Ravibharathi
81824320db Merge pull request #49470 from aerele/bank-clearance-tax-calculation
fix(bank clearance): use base total taxes and charges if exists

(cherry picked from commit 302ff49b7f)
2025-09-22 05:58:20 +00:00
Diptanil Saha
9914d20127 Merge pull request #49659 from frappe/mergify/bp/version-15-hotfix/pr-49649
fix: set first_response_time on set_first_response (backport #49649)
2025-09-22 00:38:16 +05:30
diptanilsaha
0d5613ca4c fix: set first_response_time on status change of issue
(cherry picked from commit ba459204b0)
2025-09-21 18:36:29 +00:00
Frappe PR Bot
20d14881fe chore(release): Bumped to Version 15.79.1
## [15.79.1](https://github.com/frappe/erpnext/compare/v15.79.0...v15.79.1) (2025-09-21)

### Bug Fixes

* **stock:** NoneType object error on stock entry ([48bd005](48bd005a09))
2025-09-21 18:34:45 +00:00
rohitwaghchaure
73e76f533e Merge pull request #49658 from frappe/mergify/bp/version-15/pr-49619
fix(stock): NoneType object error on stock entry (backport #49615) (backport #49619)
2025-09-22 00:03:18 +05:30
Kavin
48bd005a09 fix(stock): NoneType object error on stock entry
(cherry picked from commit aee03417de)
(cherry picked from commit de8c4eec1b)
2025-09-21 17:12:19 +00:00
Mihir Kandoi
04c2bb4f50 Merge pull request #49619 from frappe/mergify/bp/version-15-hotfix/pr-49615
fix(stock): NoneType object error on stock entry (backport #49615)
2025-09-18 21:18:09 +05:30
Kavin
de8c4eec1b fix(stock): NoneType object error on stock entry
(cherry picked from commit aee03417de)
2025-09-18 14:47:04 +00:00
mergify[bot]
697f6ef086 fix: skip receivable/payable account validation in payroll entry if party is not available (backport #49585) (#49598)
fix: skip receivable/payable account validation in payroll entry if party is not available (#49585)

* fix: skip receivable/payable account validation if party is not available in creation of payroll entry

* refactor: rename flag

(cherry picked from commit 8b543e5503)

Co-authored-by: Raheel Khan <raheel@frappe.io>
2025-09-18 17:04:28 +05:30
ruthra kumar
d66aed52f7 Merge pull request #49617 from frappe/mergify/bp/version-15-hotfix/pr-49467
fix: add condition for name (backport #49467)
2025-09-18 17:03:32 +05:30
venkat102
089c068ee8 test: add test to validate user permission in qb
(cherry picked from commit a5b881ea74)

# Conflicts:
#	erpnext/setup/doctype/employee/test_employee.py
2025-09-18 16:46:39 +05:30
venkat102
65ce737c2d fix: add condition for name
(cherry picked from commit cf5a2d6351)
2025-09-18 11:12:13 +00:00
mergify[bot]
5ef7a7857c fix(accounts): dynamic zero cutoff (backport #48899) (#49552)
fix(accounts): dynamic zero cutoff (#48899)

* fix(accounts): dynamic zero cutoff

The cutoff for displaying zero values in accounting reports has so far been hardcoded to 0.005, giving wrong results for currencies that require a higher precision. This PR changes this to a dynamic value calculated from the Currency's _Fraction Units_.

* style: fix typo

(cherry picked from commit 6972f161b8)

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-09-17 18:03:48 +05:30
mergify[bot]
fbd62e72f9 fix(payment-reconciliation): apply field precision for allocated and difference amounts (backport #49448) (#49595)
fix(payment-reconciliation): apply field precision for allocated and difference amounts (#49448)

fix(payment-reconciliation): handle allocated and difference amount with field precision for accurate exchange rate calculations

(cherry picked from commit 194ab87fef)

Co-authored-by: Bhavansathru <122002510+Bhavan23@users.noreply.github.com>
2025-09-17 17:33:33 +05:30
mergify[bot]
1a4ea07b78 fix: add option for currency field (backport #49572) (#49594)
fix: add option for currency field (#49572)

(cherry picked from commit e0299e1cbd)

Co-authored-by: Logesh Periyasamy <logeshperiyasamy24@gmail.com>
2025-09-17 17:33:15 +05:30
mergify[bot]
bce22cb27b fix: project accounting dimension and gl posting date column width (backport #49563) (#49591)
fix: project accounting dimension and gl posting date column width (#49563)

* fix: add width for posting_date

* fix: add project field for missing doctype

* fix: remove allow_on_submit to align with cost center

(cherry picked from commit 9fc17e0e3a)

Co-authored-by: Logesh Periyasamy <logeshperiyasamy24@gmail.com>
2025-09-17 17:33:02 +05:30
Imesha Sudasingha
9e58a56b5c fix(item): avoid inheriting item defaults from identically named items (#49571) 2025-09-17 17:32:13 +05:30
rohitwaghchaure
87a2774511 Merge pull request #49592 from frappe/mergify/bp/version-15-hotfix/pr-49587
fix: incorrect current qty calculation for the batch (backport #49587)
2025-09-17 17:21:26 +05:30
Rohit Waghchaure
bf48cf02e5 fix: incorrect current qty calculation for the batch
(cherry picked from commit 535f8657ed)
2025-09-17 11:32:11 +00:00
Frappe PR Bot
6ae8e32efa chore(release): Bumped to Version 15.79.0
# [15.79.0](https://github.com/frappe/erpnext/compare/v15.78.1...v15.79.0) (2025-09-16)

### Bug Fixes

* add Address and Contact in Add Column ([28b3856](28b3856bc9))
* batch qty calculation performance issue ([921f317](921f317423))
* correct grammatical errors in asset movement validation messages ([97765ce](97765ce8bd))
* correct typo in asset movement purpose validation ([edd3f5d](edd3f5da1c))
* depreciate asset with remaining amount when depreciation amount exceeds current asset value ([845d346](845d3464b4))
* do not allow backdated entries if stock reco exists in future for serial or batch ([44869f0](44869f02b4))
* incorrect batch qty ([ae3dd5b](ae3dd5b831))
* incorrect stock value in the report ([d302ca7](d302ca7ea0))
* non batch-wise valuation for batch item ([affe09e](affe09ee0b))
* precision issue for valuation rate calculation ([7a8cd47](7a8cd47259))
* remove ignore_permissions ([7280034](7280034abd))
* renamed temporary bank account to 'Demo Bank Account' ([6ab287f](6ab287f19c))
* SABB document status validation ([7bb9225](7bb92255c5))
* **sales invoice:** fetch tax id from customer ([ee7da99](ee7da999a3))
* set basic rate on selection of the batch ([39eeafd](39eeafd0d0))
* skip 'Bank Account' creation on setup ([07241aa](07241aa54a))
* validation for document status ([0b2f53f](0b2f53fefe))

### Features

* add permission check for custom button ([9db9dd6](9db9dd6f35))
2025-09-16 14:43:36 +00:00
ruthra kumar
89204046de Merge pull request #49566 from frappe/version-15-hotfix
chore: release v15
2025-09-16 20:12:09 +05:30
rohitwaghchaure
fea0ca8e8e Merge pull request #49562 from frappe/mergify/bp/version-15-hotfix/pr-49558
fix: set basic rate on selection of the batch (backport #49558)
2025-09-16 13:08:42 +05:30
Rohit Waghchaure
39eeafd0d0 fix: set basic rate on selection of the batch
(cherry picked from commit bebb8ae1ea)
2025-09-16 07:26:10 +00:00
ruthra kumar
add236c907 Merge pull request #49559 from frappe/mergify/bp/version-15-hotfix/pr-49511
fix(sales invoice): fetch tax id from customer (backport #49511)
2025-09-16 12:48:01 +05:30
ravibharathi656
ee7da999a3 fix(sales invoice): fetch tax id from customer
(cherry picked from commit df329964dd)
2025-09-16 06:32:20 +00:00
rohitwaghchaure
0a7247f94c Merge pull request #49554 from frappe/mergify/bp/version-15-hotfix/pr-49549
fix: do not allow backdated entries if stock reco exists in future for serial or batch (backport #49549)
2025-09-15 16:22:33 +05:30
rohitwaghchaure
572af6e08a chore: fix conflicts 2025-09-15 15:43:38 +05:30
Rohit Waghchaure
44869f02b4 fix: do not allow backdated entries if stock reco exists in future for serial or batch
(cherry picked from commit 335dcc976c)

# Conflicts:
#	erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json
2025-09-15 10:12:08 +00:00
Khushi Rawat
e92ec66890 Merge pull request #49551 from frappe/mergify/bp/version-15-hotfix/pr-49524
fix: Assets Movement Typos (backport #49524)
2025-09-15 13:00:46 +05:30
KerollesFathy
97765ce8bd fix: correct grammatical errors in asset movement validation messages
(cherry picked from commit 5f083d55b5)
2025-09-15 06:26:45 +00:00
KerollesFathy
edd3f5da1c fix: correct typo in asset movement purpose validation
(cherry picked from commit 56da3bd2e4)
2025-09-15 06:26:45 +00:00
rohitwaghchaure
1addaae669 Merge pull request #49543 from frappe/mergify/bp/version-15-hotfix/pr-49542
fix: validation for document status (backport #49542)
2025-09-14 17:06:53 +05:30
Rohit Waghchaure
0b2f53fefe fix: validation for document status
(cherry picked from commit 96e2e356b6)
2025-09-14 06:57:36 +00:00
rohitwaghchaure
b5417af6f5 Merge pull request #49541 from frappe/mergify/bp/version-15-hotfix/pr-49539
fix: precision issue for valuation rate calculation (backport #49539)
2025-09-14 12:27:02 +05:30
Rohit Waghchaure
7a8cd47259 fix: precision issue for valuation rate calculation
(cherry picked from commit c92a06d77d)
2025-09-14 06:22:22 +00:00
rohitwaghchaure
f523413bce Merge pull request #49540 from frappe/mergify/bp/version-15-hotfix/pr-49538
fix: SABB document status validation (backport #49538)
2025-09-14 11:51:18 +05:30
Rohit Waghchaure
7bb92255c5 fix: SABB document status validation
(cherry picked from commit c0236191aa)
2025-09-14 05:56:11 +00:00
KerollesFathy
4bc76be130 refactor: optimize asset location and custodian update logic to avoid multiple updates 2025-09-10 19:01:14 +03:00
KerollesFathy
f4cdb49126 fix: clear asset custodian when asset take back from employee without assign to another employee 2025-09-10 18:27:39 +03:00
rohitwaghchaure
6245bf9b87 Merge pull request #49495 from frappe/mergify/bp/version-15-hotfix/pr-49477
fix: batch qty calculation performance issue (backport #49477)
2025-09-08 10:06:21 +05:30
Rohit Waghchaure
921f317423 fix: batch qty calculation performance issue
(cherry picked from commit 1a262483a4)
2025-09-07 11:20:42 +00:00
Diptanil Saha
08cfd00373 Merge pull request #49492 from frappe/mergify/bp/version-15-hotfix/pr-49485
fix: skip 'Bank Account' creation on setup (backport #49485)
2025-09-06 13:32:07 +05:30
diptanilsaha
6ab287f19c fix: renamed temporary bank account to 'Demo Bank Account'
(cherry picked from commit efeda90cad)
2025-09-06 07:44:55 +00:00
diptanilsaha
07241aa54a fix: skip 'Bank Account' creation on setup
(cherry picked from commit 47d4319f83)
2025-09-06 07:44:54 +00:00
ruthra kumar
f27c67a19d Merge pull request #49482 from frappe/mergify/bp/version-15-hotfix/pr-46996
fix: Allow adding Address/Contact fields to `Address And Contacts` report (backport #46996)
2025-09-05 20:17:26 +05:30
ruthra kumar
4f1f46a4d4 chore: translatable labels
(cherry picked from commit 39174f9dc0)
2025-09-05 14:05:20 +00:00
Sanket322
28b3856bc9 fix: add Address and Contact in Add Column
(cherry picked from commit d9ca7e755f)
2025-09-05 14:05:20 +00:00
Khushi Rawat
ee9369cd44 Merge pull request #49468 from khushi8112/asset-scrapping-issue
fix: asset scrapping issue
2025-09-05 02:22:41 +05:30
khushi8112
da039e5bf0 chore: remove print statement 2025-09-05 01:58:20 +05:30
khushi8112
845d3464b4 fix: depreciate asset with remaining amount when depreciation amount exceeds current asset value 2025-09-05 01:54:56 +05:30
Frappe PR Bot
ceb17b6b61 chore(release): Bumped to Version 15.78.1
## [15.78.1](https://github.com/frappe/erpnext/compare/v15.78.0...v15.78.1) (2025-09-04)

### Bug Fixes

* non batch-wise valuation for batch item ([9c14aa2](9c14aa2d01))
2025-09-04 14:39:10 +00:00
rohitwaghchaure
745070dc97 Merge pull request #49464 from frappe/mergify/bp/version-15/pr-49457
fix: non batch-wise valuation for batch item (backport #49453) (backport #49457)
2025-09-04 20:07:51 +05:30
Mihir Kandoi
b1c1452b90 Merge pull request #49440 from frappe/mergify/bp/version-15-hotfix/pr-49437
refactor: PR 49320 (backport #49437)
2025-09-04 20:00:32 +05:30
rohitwaghchaure
4dbcef3d67 chore: fix test case
(cherry picked from commit ac8637d5a0)
(cherry picked from commit 6bdf11f5c9)
2025-09-04 12:52:18 +00:00
Rohit Waghchaure
9c14aa2d01 fix: non batch-wise valuation for batch item
(cherry picked from commit 11b82ba008)
(cherry picked from commit affe09ee0b)
2025-09-04 12:52:18 +00:00
rohitwaghchaure
e0f4c17462 Merge pull request #49457 from frappe/mergify/bp/version-15-hotfix/pr-49453
fix: non batch-wise valuation for batch item (backport #49453)
2025-09-04 18:20:11 +05:30
rohitwaghchaure
6bdf11f5c9 chore: fix test case
(cherry picked from commit ac8637d5a0)
2025-09-04 09:01:08 +00:00
Rohit Waghchaure
affe09ee0b fix: non batch-wise valuation for batch item
(cherry picked from commit 11b82ba008)
2025-09-04 09:01:07 +00:00
rohitwaghchaure
eb631d6e75 Merge pull request #49452 from frappe/mergify/bp/version-15-hotfix/pr-49449
fix: incorrect stock value in the report (backport #49449)
2025-09-04 07:10:40 +05:30
Rohit Waghchaure
d302ca7ea0 fix: incorrect stock value in the report
(cherry picked from commit 5824b5effd)
2025-09-03 19:18:03 +00:00
Raffael Meyer
af0399c2d2 Merge pull request #49435 from frappe/mergify/bp/version-15-hotfix/pr-49374
fix: improve permission handling for party link creation (backport #49374)
2025-09-03 17:13:08 +02:00
rohitwaghchaure
ce820e4150 Merge pull request #49443 from frappe/mergify/bp/version-15-hotfix/pr-49442
fix: incorrect batch qty (backport #49442)
2025-09-03 19:20:10 +05:30
Rohit Waghchaure
ae3dd5b831 fix: incorrect batch qty
(cherry picked from commit 000135a3d4)
2025-09-03 11:13:52 +00:00
Mihir Kandoi
43e9ab9cd1 refactor: PR 49320
(cherry picked from commit 991413608b)
2025-09-03 08:50:57 +00:00
mergify[bot]
b8a07a437b test: use valid IBANs in party matching test case (backport #49432) (#49433)
Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
2025-09-02 17:35:03 +00:00
Marc-Constantin Enke
9db9dd6f35 feat: add permission check for custom button
(cherry picked from commit 00fd1d2f26)
2025-09-02 17:20:37 +00:00
Marc-Constantin Enke
7280034abd fix: remove ignore_permissions
(cherry picked from commit 7f55f421ab)
2025-09-02 17:20:37 +00:00
Frappe PR Bot
2851f6e786 chore(release): Bumped to Version 15.78.0
# [15.78.0](https://github.com/frappe/erpnext/compare/v15.77.0...v15.78.0) (2025-09-02)

### Bug Fixes

* 🐛 fixing buying controller to include transaction controller… (backport [#49140](https://github.com/frappe/erpnext/issues/49140)) ([#49370](https://github.com/frappe/erpnext/issues/49370)) ([c06f72f](c06f72f9f7))
* add is_cancelled in condition ([f2c4bae](f2c4baeb0e))
* add option to disable Transaction Log (backport [#49342](https://github.com/frappe/erpnext/issues/49342)) ([#49344](https://github.com/frappe/erpnext/issues/49344)) ([7926cfd](7926cfd8c4))
* **budget:** always set fiscal year before fetching company approver role ([e6a305e](e6a305e972))
* convert NaN to numerical ([0b3fac3](0b3fac3a0e))
* **exchange rate revaluation:** add check for gain_loss ([1d28135](1d28135898))
* hide is_cumulative for apply_on is set to Transaction (backport [#49243](https://github.com/frappe/erpnext/issues/49243)) ([#49257](https://github.com/frappe/erpnext/issues/49257)) ([064ce4b](064ce4bf6d))
* ignore cancelled gl and add company filter ([835b9c3](835b9c3378))
* Issue with Barcode Scanning in Stock Entry ([45cdb39](45cdb39edd))
* **perf:** applying consistent index to fetch gl entries for financial statements ([a3605d8](a3605d8370))
* remove defunct payment gateway links from ERPNext Integrations workspace ([17f7351](17f7351f85)), closes [#49352](https://github.com/frappe/erpnext/issues/49352)
* **repost item valuation:** reorder function call ([e802536](e8025365cd))
* **repost item valuation:** validate voucher type in transaction ([6761a02](6761a023d0))
* run config with force ([9d34eb6](9d34eb686c))
* set missing due date in Purchase Invoice and POS Invoice ([#49232](https://github.com/frappe/erpnext/issues/49232)) ([6a31b7b](6a31b7b118))
* show company currency symbol ([ecb7858](ecb7858062))
* show create purchase receipt button only when update stock is not checked ([caa1681](caa1681c5f))
* source warehouse in manufacture entry and reqd prop of scrap warehouse ([7bb180e](7bb180e5da))
* source warehouse in manufacture entry and reqd prop of scrap warehouse (backport [#49320](https://github.com/frappe/erpnext/issues/49320)) ([#49337](https://github.com/frappe/erpnext/issues/49337)) ([be6f793](be6f79330a))
* validation for Recreate Stock Ledgers ([9f0d743](9f0d743e1b))
* valuation for batch items ([b57dabd](b57dabd8ef))

### Features

* optional fixed outgoing email for RfQ ([#49258](https://github.com/frappe/erpnext/issues/49258)) ([c875ff9](c875ff972f))

### Performance Improvements

* check PCV (smaller) table before checking GL Entries ([fc47fbe](fc47fbeaa1))
2025-09-02 14:17:15 +00:00
ruthra kumar
3b527e4155 Merge pull request #49423 from frappe/version-15-hotfix
chore: release v15
2025-09-02 19:45:59 +05:30
rohitwaghchaure
1d9b77460d Merge pull request #49429 from rohitwaghchaure/fixed-valuation-for-batch-v15
fix: valuation for batch items
2025-09-02 19:11:10 +05:30
Rohit Waghchaure
b57dabd8ef fix: valuation for batch items 2025-09-02 18:54:06 +05:30
ruthra kumar
e2f6ed693c Merge pull request #49421 from frappe/mergify/bp/version-15-hotfix/pr-49306
fix(exchange rate revaluation): add check for gain_loss (backport #49306)
2025-09-02 14:10:12 +05:30
ruthra kumar
dd0aa83882 Merge pull request #49420 from frappe/mergify/bp/version-15-hotfix/pr-49332
perf: check PCV (smaller) table before checking GL Entries (backport #49332)
2025-09-02 13:39:43 +05:30
ravibharathi656
1d28135898 fix(exchange rate revaluation): add check for gain_loss
(cherry picked from commit e5affb16c7)
2025-09-02 08:05:38 +00:00
Vignesh Sekar
fc47fbeaa1 perf: check PCV (smaller) table before checking GL Entries
(cherry picked from commit 4d3ddeae8d)
2025-09-02 07:47:16 +00:00
Diptanil Saha
8b2f384af3 Merge pull request #49419 from frappe/mergify/bp/version-15-hotfix/pr-49407
fix(perf): applying consistent index to fetch gl entries for financial statements (backport #49407)
2025-09-02 12:32:16 +05:30
diptanilsaha
a3605d8370 fix(perf): applying consistent index to fetch gl entries for financial statements
(cherry picked from commit 3e2fb85ae6)
2025-09-02 06:42:10 +00:00
ruthra kumar
a8531eec5b Merge pull request #49417 from frappe/mergify/bp/version-15-hotfix/pr-49379
fix: add is_cancelled in condition (backport #49379)
2025-09-02 11:14:07 +05:30
l0gesh29
f2c4baeb0e fix: add is_cancelled in condition
(cherry picked from commit 77a9cf6398)
2025-09-02 05:27:40 +00:00
ruthra kumar
28d69ca26f Merge pull request #49412 from frappe/mergify/bp/version-15-hotfix/pr-49366
fix(trial-balance-simple): ignore cancelled gl and add company filter (backport #49366)
2025-09-02 10:42:16 +05:30
Raffael Meyer
e36ff57c49 Merge pull request #49234 from frappe/mergify/bp/version-15-hotfix/pr-49232
fix: set missing due date in Purchase Invoice and POS Invoice (backport #49232)
2025-09-02 00:46:29 +02:00
rohitwaghchaure
7eb523fd5b Merge pull request #49408 from frappe/mergify/bp/version-15-hotfix/pr-49403
fix: validation for Recreate Stock Ledgers (backport #49403)
2025-09-01 22:08:50 +05:30
l0gesh29
835b9c3378 fix: ignore cancelled gl and add company filter
(cherry picked from commit afb067ce50)
2025-09-01 11:16:25 +00:00
Rohit Waghchaure
9f0d743e1b fix: validation for Recreate Stock Ledgers
(cherry picked from commit 785845a425)
2025-09-01 10:42:59 +00:00
ruthra kumar
ab089fae7e Merge pull request #49406 from frappe/mergify/bp/version-15-hotfix/pr-49335
fix: show company currency symbol (backport #49335)
2025-09-01 15:34:13 +05:30
Navin-S-R
ecb7858062 fix: show company currency symbol
(cherry picked from commit 49bb095152)

# Conflicts:
#	erpnext/selling/doctype/quotation_item/quotation_item.json
2025-09-01 15:09:02 +05:30
ruthra kumar
293735db32 Merge pull request #49404 from frappe/mergify/bp/version-15-hotfix/pr-49331
fix: run sync auto reconcile config with force (backport #49331)
2025-09-01 15:05:06 +05:30
ravibharathi656
9d34eb686c fix: run config with force
(cherry picked from commit e8288a2f63)
2025-09-01 09:13:04 +00:00
ruthra kumar
1e99ba5932 Merge pull request #49400 from frappe/mergify/bp/version-15-hotfix/pr-49302
fix(budget):  fiscal year assignment and approver role in budget (backport #49302)
2025-09-01 13:30:11 +05:30
Bhavan23
e6a305e972 fix(budget): always set fiscal year before fetching company approver role
(cherry picked from commit 770d6dd8e2)
2025-09-01 07:05:25 +00:00
Mihir Kandoi
ab0f37740c Merge pull request #49353 from IMS94/fix-defunct-payment-gateway-workspace-links
fix: remove defunct payment gateway links from ERPNext Integrations workspace
2025-09-01 11:34:09 +05:30
Mihir Kandoi
8db3307d6b Merge pull request #49395 from frappe/mergify/bp/version-15-hotfix/pr-49394
chore: remove unused import (Order) module (backport #49394)
2025-08-31 17:29:27 +05:30
Fawaz Alhafiz
6f20a2c6e5 chore: remove unused import (Order) module
(cherry picked from commit 4e86a46008)
2025-08-31 07:50:40 +00:00
Mihir Kandoi
6329f4524d Merge pull request #49391 from frappe/mergify/bp/version-15-hotfix/pr-49388
fix(repost item valuation): validate voucher type in transaction (backport #49388)
2025-08-30 23:56:13 +05:30
ravibharathi656
6761a023d0 fix(repost item valuation): validate voucher type in transaction
(cherry picked from commit 5663c2a1ca)
2025-08-30 17:56:29 +00:00
rohitwaghchaure
6317db19e1 Merge pull request #49387 from frappe/mergify/bp/version-15-hotfix/pr-49386
fix: Issue with Barcode Scanning in Stock Entry (backport #49386)
2025-08-30 13:59:53 +05:30
Rohit Waghchaure
45cdb39edd fix: Issue with Barcode Scanning in Stock Entry
(cherry picked from commit 13e3db3730)
2025-08-30 07:07:09 +00:00
rohitwaghchaure
dcb3e01df1 Merge pull request #49385 from frappe/mergify/bp/version-15-hotfix/pr-49376
fix(repost item valuation): reorder function call (backport #49376)
2025-08-30 12:36:17 +05:30
ravibharathi656
f43ed2e50e chore: remove console log
(cherry picked from commit d117411070)
2025-08-29 16:52:52 +00:00
ravibharathi656
e8025365cd fix(repost item valuation): reorder function call
(cherry picked from commit aaa4f0ae26)
2025-08-29 16:52:52 +00:00
mergify[bot]
c06f72f9f7 fix: 🐛 fixing buying controller to include transaction controller… (backport #49140) (#49370)
* fix: 🐛 fixing buying controller to include transaction controller… (#49140)

* fix: 🐛 fixing buying controller to include transaction controller function

* refactor: fixed formatting

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
(cherry picked from commit aedb171dd4)

# Conflicts:
#	erpnext/public/js/controllers/buying.js

* chore: resolve conflicts

---------

Co-authored-by: jll-02 <63648645+jll-02@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-08-28 23:42:35 +05:30
Imesha Sudasingha
17f7351f85 fix: remove defunct payment gateway links from ERPNext Integrations workspace
- Remove GoCardless Settings link (DocType deleted in v15.0)
- Remove Mpesa Settings link (DocType deleted in v15.0)
- Update Payments card link_count from 3 to 1
- Only Plaid Settings remains in Payments section

Fixes broken links that resulted in errors when clicked.
Closes #49352
2025-08-28 01:48:29 +05:30
Mihir Kandoi
b5d3863ecd Merge pull request #49349 from frappe/mergify/bp/version-15-hotfix/pr-49244
fix: convert NaN to numerical (backport #49244)
2025-08-27 22:46:27 +05:30
Mihir Kandoi
3ddaba9553 Merge pull request #49348 from frappe/mergify/bp/version-15-hotfix/pr-49258
feat: optional fixed outgoing email for RfQ (backport #49258)
2025-08-27 22:46:16 +05:30
Mihir Kandoi
9dc91e2bc6 Merge pull request #49351 from frappe/mergify/bp/version-15-hotfix/pr-49254
fix: show create purchase receipt button in purchase invoice only when update stock is not checked (backport #49254)
2025-08-27 22:45:29 +05:30
mergify[bot]
064ce4bf6d fix: hide is_cumulative for apply_on is set to Transaction (backport #49243) (#49257)
* fix: hide is_cumulative for apply_on is set to Transaction

(cherry picked from commit 699d42b26c)

# Conflicts:
#	erpnext/accounts/doctype/promotional_scheme/promotional_scheme.json

* chore: update modified date for promotional_scheme.json

---------

Co-authored-by: Navin-S-R <navin@aerele.in>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-08-27 16:51:19 +00:00
anwarpatelnoori
caa1681c5f fix: show create purchase receipt button only when update stock is not checked
(cherry picked from commit ed550bb633)
2025-08-27 16:41:58 +00:00
Mihir Kandoi
700f96af61 Merge pull request #49175 from AssemBahnasy/fix-pricing-rule-utils-final
fix: Pricing rule validation not working for Sales Invoice when validate_applied_rule is enabled
2025-08-27 22:10:57 +05:30
El-Shafei H.
0b3fac3a0e fix: convert NaN to numerical
(cherry picked from commit fac8013dba)
2025-08-27 16:36:36 +00:00
0xD0M1M0
c875ff972f feat: optional fixed outgoing email for RfQ (#49258)
* feat: optional fixed outgoing email for RfQ

* fix: linters

* fix: select only outgoing account

* fix: linters

(cherry picked from commit 2bf0ba9802)
2025-08-27 16:32:37 +00:00
mergify[bot]
7926cfd8c4 fix: add option to disable Transaction Log (backport #49342) (#49344)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix: add option to disable Transaction Log (#49342)
2025-08-27 14:13:39 +02:00
Mihir Kandoi
be6f79330a fix: source warehouse in manufacture entry and reqd prop of scrap warehouse (backport #49320) (#49337)
fix: source warehouse in manufacture entry and reqd prop of scrap warehouse

(cherry picked from commit fe0722c4f1)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-08-26 21:59:02 +05:30
Mihir Kandoi
7bb180e5da fix: source warehouse in manufacture entry and reqd prop of scrap warehouse
(cherry picked from commit fe0722c4f1)
2025-08-26 16:01:30 +00:00
Frappe PR Bot
c86e95e524 chore(release): Bumped to Version 15.77.0
# [15.77.0](https://github.com/frappe/erpnext/compare/v15.76.0...v15.77.0) (2025-08-26)

### Bug Fixes

* **asset:** handle None in depreciation value ([f231b1e](f231b1e32f))
* child item picker picking all items when creating PI from PR ([edaff5d](edaff5d699))
* correct logic for warehouse field label ([0767c2e](0767c2e0f6))
* correct typo in monthly auto exchange rate revaluation filter ([aa35770](aa35770423))
* handle all searchfields in items ([db4fc85](db4fc8545d))
* handle ple for immutable ledger ([756216b](756216b2cb))
* incorrect pending qty when creating sales invoice from sales order ([54030eb](54030eb721))
* match warehouse only when `last_scanned_warehouse` field exists ([fbbd5a3](fbbd5a3af5))
* Serial Nos popup only appears 1 time ([1968120](196812017e))
* set valid serial no naming series format ([bec385a](bec385a667))
* set value for asset owner company field ([94cd454](94cd4549c6))
* **Supplier:** add make_method for Pricing Rule ([#49282](https://github.com/frappe/erpnext/issues/49282)) ([ba840d2](ba840d22e5))

### Features

* add make methods for Bank Account (backport [#49000](https://github.com/frappe/erpnext/issues/49000)) ([#49275](https://github.com/frappe/erpnext/issues/49275)) ([655af24](655af24183))
* **payment-reconciliation:** add posting date field for debit/credit note auto jv creation ([083661b](083661b779))
* show title in link field for Project DocType ([#49265](https://github.com/frappe/erpnext/issues/49265)) ([c52f2c7](c52f2c75f6))
2025-08-26 11:46:29 +00:00
ruthra kumar
c00e20e17c Merge pull request #49328 from frappe/version-15-hotfix
chore: release v15
2025-08-26 17:15:09 +05:30
ruthra kumar
45aa450f88 Merge pull request #49330 from frappe/mergify/bp/version-15-hotfix/pr-49236
fix: handle ple for immutable ledger (backport #49236)
2025-08-26 16:30:01 +05:30
l0gesh29
756216b2cb fix: handle ple for immutable ledger
(cherry picked from commit 48eb488918)

# Conflicts:
#	erpnext/accounts/general_ledger.py
#	erpnext/accounts/utils.py
2025-08-26 16:14:23 +05:30
ruthra kumar
2cf1dd37ba Merge pull request #49326 from frappe/mergify/bp/version-15-hotfix/pr-49296
fix(accounts): correct typo in monthly auto exchange rate revaluation filter (backport #49296)
2025-08-26 15:48:38 +05:30
Khushi Rawat
45c60911db Merge pull request #49325 from frappe/mergify/bp/version-15-hotfix/pr-49319
fix: set value for asset owner company field (backport #49319)
2025-08-26 15:27:02 +05:30
CoiledCoder
2cb2bdeb00 refactor: centralize exchange rate revaluation scheduling logic
- Introduced a private helper `_auto_create_exchange_rate_revaluation_for(frequency)`
- Removed duplicate logic across daily, weekly, and monthly ERR functions
- Prevents future copy-paste bugs
- Keeps existing behavior unchanged

(cherry picked from commit 15040a362d)
2025-08-26 09:09:49 +00:00
CoiledCoder
aa35770423 fix: correct typo in monthly auto exchange rate revaluation filter
The "auto_create_exchange_rate_revaluation_monthly" function was
using the wrong filter key `"Montly"` instead of `"Monthly"`.
As a result, no companies configured for monthly ERR were being
processed.

(cherry picked from commit 19729a307f)
2025-08-26 09:09:48 +00:00
khushi8112
94cd4549c6 fix: set value for asset owner company field
(cherry picked from commit a24f1d056b)
2025-08-26 09:06:48 +00:00
Khushi Rawat
bd40106c7d Merge pull request #49322 from aerele/cancel-asset-value-adjustment
fix(asset): handle None in depreciation value
2025-08-26 14:18:55 +05:30
ravibharathi656
f231b1e32f fix(asset): handle None in depreciation value 2025-08-26 13:33:26 +05:30
ruthra kumar
3a50554149 Merge pull request #49300 from frappe/mergify/bp/version-15-hotfix/pr-49252
feat(payment-reconciliation): add posting date field for debit/credit… (backport #49252)
2025-08-26 13:28:11 +05:30
ruthra kumar
64c5af202c Merge pull request #49315 from frappe/mergify/bp/version-15-hotfix/pr-48875
fix: incorrect pending qty when creating sales invoice from sales order (backport #48875)
2025-08-26 13:12:58 +05:30
ruthra kumar
9cd15939c9 Merge pull request #49293 from frappe/mergify/bp/version-15-hotfix/pr-49265
feat: show title in link field for Project DocType (backport #49265)
2025-08-26 11:35:12 +05:30
Hussain Nagaria
c52f2c75f6 feat: show title in link field for Project DocType (#49265)
(cherry picked from commit a5f200636a)

# Conflicts:
#	erpnext/projects/doctype/project/project.json
2025-08-26 11:18:39 +05:30
l0gesh29
083661b779 feat(payment-reconciliation): add posting date field for debit/credit note auto jv creation
(cherry picked from commit 6b4004b127)

# Conflicts:
#	erpnext/accounts/doctype/payment_reconciliation_allocation/payment_reconciliation_allocation.json
2025-08-26 11:16:37 +05:30
ruthra kumar
6983573243 chore: resolve conflict 2025-08-26 11:06:55 +05:30
ravibharathi656
1380ee21b6 chore: remove update_stock
(cherry picked from commit 368dbe3bbf)
2025-08-25 19:39:14 +00:00
ravibharathi656
b403b6c7b4 test: add pending quantity check for invoice creation
(cherry picked from commit e5d4b4f0f0)

# Conflicts:
#	erpnext/selling/doctype/sales_order/test_sales_order.py
2025-08-25 19:39:14 +00:00
ravibharathi656
54030eb721 fix: incorrect pending qty when creating sales invoice from sales order
(cherry picked from commit a5138f4899)
2025-08-25 19:39:14 +00:00
Sagar Vora
5a7161eeb3 Merge pull request #49313 from frappe/mergify/bp/version-15-hotfix/pr-49312
fix: multiple fixes to warehouse barcode scanning logic (backport #49312)
2025-08-25 19:11:59 +00:00
Sagar Vora
0767c2e0f6 fix: correct logic for warehouse field label
(cherry picked from commit 72a38929e5)
2025-08-25 19:08:38 +00:00
Sagar Vora
fbbd5a3af5 fix: match warehouse only when last_scanned_warehouse field exists
(cherry picked from commit 4005e4412d)
2025-08-25 19:08:37 +00:00
rohitwaghchaure
04c2fca4e2 Merge pull request #49303 from frappe/mergify/bp/version-15-hotfix/pr-49301
fix: set valid serial no naming series format (backport #49301)
2025-08-25 17:51:15 +05:30
Kavin
bec385a667 fix: set valid serial no naming series format
(cherry picked from commit 46b85c7857)
2025-08-25 11:53:12 +00:00
Raffael Meyer
ba840d22e5 fix(Supplier): add make_method for Pricing Rule (#49282) 2025-08-22 19:18:42 +02:00
mergify[bot]
655af24183 feat: add make methods for Bank Account (backport #49000) (#49275)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-08-22 19:04:42 +02:00
mergify[bot]
c375ac3939 Merge pull request #49272 from frappe/mergify/bp/version-15-hotfix/pr-49050
fix: ensure variant conversion factor is returned before the template's (backport #49050)
2025-08-22 15:11:26 +05:30
rohitwaghchaure
e4f3836b31 Merge pull request #49270 from frappe/mergify/bp/version-15-hotfix/pr-49269
fix: Serial Nos popup only appears 1 time (backport #49269)
2025-08-21 23:38:01 +05:30
rohitwaghchaure
be01c4fafe chore: fix conflicts 2025-08-21 23:34:38 +05:30
Rohit Waghchaure
196812017e fix: Serial Nos popup only appears 1 time
(cherry picked from commit 5503d4b05b)

# Conflicts:
#	erpnext/public/js/controllers/transaction.js
2025-08-21 17:59:24 +00:00
Mihir Kandoi
c2d07eb2b2 Merge pull request #49263 from frappe/mergify/bp/version-15-hotfix/pr-49182 2025-08-21 18:11:02 +05:30
ravibharathi656
db4fc8545d fix: handle all searchfields in items
(cherry picked from commit ad559c3491)
2025-08-21 10:56:31 +00:00
Mihir Kandoi
b7307b4a56 Merge pull request #49251 from frappe/mergify/bp/version-15-hotfix/pr-49250 2025-08-20 18:04:08 +05:30
Mihir Kandoi
edaff5d699 fix: child item picker picking all items when creating PI from PR
(cherry picked from commit 738c1e0d0a)
2025-08-20 12:18:59 +00:00
Mihir Kandoi
dec7680d73 Merge pull request #49247 from frappe/mergify/bp/version-15-hotfix/pr-49183
Fix/mr status from wo (backport #49183)
2025-08-20 15:28:26 +05:30
Kavin
1c7a18866f Merge pull request #49183 from aerele/fix/mr-status-from-wo
Fix/mr status from wo

(cherry picked from commit 67e57018bc)
2025-08-20 09:43:11 +00:00
Raffael Meyer
6a31b7b118 fix: set missing due date in Purchase Invoice and POS Invoice (#49232)
(cherry picked from commit 77478303fe)
2025-08-19 12:31:26 +00:00
Frappe PR Bot
36bc8fe3f0 chore(release): Bumped to Version 15.76.0
# [15.76.0](https://github.com/frappe/erpnext/compare/v15.75.1...v15.76.0) (2025-08-19)

### Bug Fixes

* add fieldname in accounting dimension filter ([ac4a5bf](ac4a5bfe6d))
* add patch ([a853010](a853010537))
* add validation for draft PR/PI in Asset ([4187e60](4187e60b07))
* add value adjustment amount in asset value ([89ad9f1](89ad9f1bb4))
* add value adjustment amount in report for group by category filter ([089007f](089007f88a))
* additional cost not consider in valuation rate for Stock Entry transfer ([e4398d3](e4398d3761))
* apply grand total to default payment mode in Sales and POS invoices ([605f513](605f513ce3))
* **asset:** prevent translation function shadowing in make_journal_entry ([1af8ab2](1af8ab2a3b))
* company issue in setup wizard ([cea4b50](cea4b50bbc))
* current qty for batch in stock reco ([3ecb09a](3ecb09ae52))
* fetch fieldname in accounting dimension filter ([d494d8c](d494d8c299))
* formatted string for disabled filter in get_income_account ([c9f79b3](c9f79b3ba9))
* handle default accounting dimension ([e50d6c6](e50d6c6b62))
* handle default dimension for all company ([0cd45a0](0cd45a0022))
* handle empty loyalty point details ([dc953f7](dc953f70d1))
* handle mode of payment filter (backport [#49185](https://github.com/frappe/erpnext/issues/49185)) ([#49221](https://github.com/frappe/erpnext/issues/49221)) ([b6c992f](b6c992ffeb))
* ignore links in Dunning patch (backport [#49201](https://github.com/frappe/erpnext/issues/49201)) ([#49204](https://github.com/frappe/erpnext/issues/49204)) ([07ff97f](07ff97f647))
* **pos:** include Product Bundle components in reserved qty to prevent overselling ([5ce0dc2](5ce0dc2a7a)), closes [#49021](https://github.com/frappe/erpnext/issues/49021)
* **pos:** populate packed_items table in POS Invoice ([1f3d8e8](1f3d8e8d64))
* **pos:** use packed_items snapshot for bundle reservations ([cc82836](cc82836109)), closes [#49106](https://github.com/frappe/erpnext/issues/49106)
* product bundle child item quantity should be a positive number ([f831d45](f831d45cc3))
* **quotation:** update currency on duplicate ([419f717](419f717542))
* remove unclear message related to availability of product bundle ([383744b](383744b8e4))
* sanitize column name for inventory_dimensions in get_stock_balance ([69389bb](69389bb355))
* **stock:** don't override t_warehouse if no rules found ([da3d8fb](da3d8fbbc5))
* update dunning status based on credit notes (backport [#49066](https://github.com/frappe/erpnext/issues/49066)) ([#49208](https://github.com/frappe/erpnext/issues/49208)) ([9a12c73](9a12c73e22))
* use query builder instead of raw SQL in get_blanket_orders ([4a0d7fd](4a0d7fd205))
* use query builder instead of raw SQL in get_loyalty_details ([a3c5b0a](a3c5b0a510))
* use query builder instead of raw SQL in get_material_requests_based_on_supplier ([9d0fe06](9d0fe060c8))
* use query builder instead of raw SQL in get_rfq_containing_supplier ([4ac386a](4ac386a84e))
* use query builder instead of raw SQL in get_timesheet_detail_rate ([0a2a7fa](0a2a7fa6aa))
* use query builder instead of raw SQL in unset_existing_data ([92391a6](92391a69cf))
* wrap inter-company order button labels in __() for translation ([#49178](https://github.com/frappe/erpnext/issues/49178)) ([db48635](db486356db))
* wrap inter-company order button labels in __() for translation (backport [#49178](https://github.com/frappe/erpnext/issues/49178)) ([#49179](https://github.com/frappe/erpnext/issues/49179)) ([6030eb2](6030eb2992))

### Features

* enhance barcode scanner to support warehouse scanning (backport [#48865](https://github.com/frappe/erpnext/issues/48865)) ([#49162](https://github.com/frappe/erpnext/issues/49162)) ([ad052d7](ad052d72d7))
* select child item when creating one document from another ([5f06d87](5f06d87f01))

### Reverts

* Revert "fix: use checkout@v2 instead of v4" ([e849019](e8490196ba))
2025-08-19 11:56:17 +00:00
ruthra kumar
cf86843d48 Merge pull request #49227 from frappe/version-15-hotfix
chore: release v15
2025-08-19 17:25:00 +05:30
rohitwaghchaure
696fbbb0e2 Merge pull request #49230 from frappe/mergify/bp/version-15-hotfix/pr-49228
fix: company issue in setup wizard (backport #49228)
2025-08-19 16:42:29 +05:30
rohitwaghchaure
dffa3baea6 Merge pull request #49229 from frappe/mergify/bp/version-15-hotfix/pr-49223
fix(stock): don't override t_warehouse if no rules found (backport #49223)
2025-08-19 16:27:14 +05:30
Rohit Waghchaure
cea4b50bbc fix: company issue in setup wizard
(cherry picked from commit 1fb0d1460a)
2025-08-19 10:52:49 +00:00
Kavin
da3d8fbbc5 fix(stock): don't override t_warehouse if no rules found
(cherry picked from commit 66f217c8e6)
2025-08-19 10:39:47 +00:00
ruthra kumar
dac8dc6b8a Merge pull request #49224 from frappe/mergify/bp/version-15-hotfix/pr-49102
fix(quotation): update currency on duplicate (backport #49102)
2025-08-19 14:10:21 +05:30
ravibharathi656
419f717542 fix(quotation): update currency on duplicate
(cherry picked from commit 430a06d056)
2025-08-19 08:35:09 +00:00
Khushi Rawat
80d9181b29 Merge pull request #49215 from frappe/mergify/bp/version-15-hotfix/pr-49141
refactor: consider asset value adjustments in report (backport #49141)
2025-08-19 13:06:54 +05:30
ruthra kumar
b6c992ffeb fix: handle mode of payment filter (backport #49185) (#49221)
Merge pull request #49185 from aerele/mop-sales-register

fix: handle mode of payment filter
(cherry picked from commit d656e02441)

Co-authored-by: Logesh Periyasamy <logeshperiyasamy24@gmail.com>
2025-08-19 12:26:25 +05:30
Logesh Periyasamy
cfb7558465 Merge pull request #49185 from aerele/mop-sales-register
fix: handle mode of payment filter
(cherry picked from commit d656e02441)
2025-08-19 06:33:41 +00:00
ruthra kumar
2cfdb2d2cd Merge pull request #49218 from frappe/mergify/bp/version-15-hotfix/pr-49055
fix: fetch fieldname in accounting dimension filter (backport #49055)
2025-08-19 11:24:52 +05:30
Diptanil Saha
529a84154b Merge pull request #49219 from frappe/mergify/bp/version-15-hotfix/pr-49192
fix: improve queries with query builder and input sanitization (backport #49192)
2025-08-19 11:16:02 +05:30
ruthra kumar
4af814dc3b chore: resolve conflicts 2025-08-19 11:06:23 +05:30
diptanilsaha
dc953f70d1 fix: handle empty loyalty point details
(cherry picked from commit 1231ca17c9)
2025-08-19 05:25:19 +00:00
diptanilsaha
0a2a7fa6aa fix: use query builder instead of raw SQL in get_timesheet_detail_rate
(cherry picked from commit e563ed0c75)
2025-08-19 05:25:19 +00:00
diptanilsaha
4ac386a84e fix: use query builder instead of raw SQL in get_rfq_containing_supplier
(cherry picked from commit 7f2a52ff71)
2025-08-19 05:25:18 +00:00
diptanilsaha
92391a69cf fix: use query builder instead of raw SQL in unset_existing_data
(cherry picked from commit 7fa4ed6139)
2025-08-19 05:25:18 +00:00
diptanilsaha
69389bb355 fix: sanitize column name for inventory_dimensions in get_stock_balance
(cherry picked from commit eb22794f14)
2025-08-19 05:25:18 +00:00
diptanilsaha
4a0d7fd205 fix: use query builder instead of raw SQL in get_blanket_orders
(cherry picked from commit 1db135262d)
2025-08-19 05:25:18 +00:00
diptanilsaha
c9f79b3ba9 fix: formatted string for disabled filter in get_income_account
(cherry picked from commit 6320f7290f)
2025-08-19 05:25:17 +00:00
diptanilsaha
9d0fe060c8 fix: use query builder instead of raw SQL in get_material_requests_based_on_supplier
(cherry picked from commit de919568b4)
2025-08-19 05:25:17 +00:00
diptanilsaha
a3c5b0a510 fix: use query builder instead of raw SQL in get_loyalty_details
(cherry picked from commit 8696ba2f5d)
2025-08-19 05:25:17 +00:00
l0gesh29
0cd45a0022 fix: handle default dimension for all company
(cherry picked from commit 77021fff74)
2025-08-19 05:19:01 +00:00
l0gesh29
e50d6c6b62 fix: handle default accounting dimension
(cherry picked from commit 16e440f9a7)
2025-08-19 05:19:01 +00:00
l0gesh29
a853010537 fix: add patch
(cherry picked from commit 3cf765d985)

# Conflicts:
#	erpnext/patches.txt
2025-08-19 05:19:00 +00:00
l0gesh29
d494d8c299 fix: fetch fieldname in accounting dimension filter
(cherry picked from commit 42f9d27d79)
2025-08-19 05:18:59 +00:00
l0gesh29
ac4a5bfe6d fix: add fieldname in accounting dimension filter
(cherry picked from commit ac2acc535d)

# Conflicts:
#	erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.json
2025-08-19 05:18:59 +00:00
khushi8112
089007f88a fix: add value adjustment amount in report for group by category filter
(cherry picked from commit cd2bab7c5f)
2025-08-18 21:28:42 +00:00
khushi8112
89ad9f1bb4 fix: add value adjustment amount in asset value
(cherry picked from commit f8050f4278)
2025-08-18 21:28:42 +00:00
Diptanil Saha
d14391fb6f Merge pull request #49210 from diptanilsaha/skip_gt_default_mop
fix: apply grand total to default payment mode in Sales and POS invoices
2025-08-18 17:27:02 +05:30
mergify[bot]
9a12c73e22 fix: update dunning status based on credit notes (backport #49066) (#49208)
Co-authored-by: Karm Soni <karmdsoni8159@gmail.com>
Co-authored-by: Sagar Vora <16315650+sagarvora@users.noreply.github.com>
2025-08-18 11:51:24 +00:00
diptanilsaha
605f513ce3 fix: apply grand total to default payment mode in Sales and POS invoices 2025-08-18 17:04:38 +05:30
Diptanil Saha
fb34991980 Merge pull request #49207 from frappe/mergify/bp/version-15-hotfix/pr-49169
fix(asset): prevent translation function shadowing in make_journal_entry (backport #49169)
2025-08-18 15:16:37 +05:30
l0gesh29
1af8ab2a3b fix(asset): prevent translation function shadowing in make_journal_entry
(cherry picked from commit 5e82de1b71)
2025-08-18 09:26:40 +00:00
mergify[bot]
07ff97f647 fix: ignore links in Dunning patch (backport #49201) (#49204)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix: ignore links in Dunning patch (#49201)
2025-08-17 18:52:55 +00:00
Mihir Kandoi
b49f85b877 Merge pull request #49197 from mihir-kandoi/version-15-hotfix 2025-08-17 14:27:00 +05:30
Mihir Kandoi
e8490196ba Revert "fix: use checkout@v2 instead of v4"
This reverts commit c9d69d9629.
2025-08-17 13:01:58 +05:30
rohitwaghchaure
bc1c57a18a Merge pull request #49195 from frappe/mergify/bp/version-15-hotfix/pr-49193
fix: additional cost not consider in valuation rate for Stock Entry transfer (backport #49193)
2025-08-17 11:15:19 +05:30
rohitwaghchaure
016948804d chore: fix test case 2025-08-17 10:55:54 +05:30
rohitwaghchaure
41e7463412 chore: fix conflicts 2025-08-17 10:54:46 +05:30
Rohit Waghchaure
e4398d3761 fix: additional cost not consider in valuation rate for Stock Entry transfer
(cherry picked from commit bbc772abe7)

# Conflicts:
#	erpnext/stock/doctype/stock_entry/test_stock_entry.py
2025-08-17 05:22:52 +00:00
Mihir Kandoi
6030eb2992 fix: wrap inter-company order button labels in __() for translation (backport #49178) (#49179)
fix: wrap inter-company order button labels in __() for translation (#49178)

* Updated purchase_order.js

* Update sales_order.js

(cherry picked from commit 078b8439d9)

Co-authored-by: divyalekha99 <32547248+divyalekha99@users.noreply.github.com>
2025-08-14 20:33:32 +05:30
divyalekha99
db486356db fix: wrap inter-company order button labels in __() for translation (#49178)
* Updated purchase_order.js

* Update sales_order.js

(cherry picked from commit 078b8439d9)
2025-08-14 15:00:01 +00:00
Diptanil Saha
464f504b61 Merge pull request #49177 from frappe/mergify/bp/version-15-hotfix/pr-49108
fix(pos): include Product Bundle components in reserved qty to preven… (backport #49108)
2025-08-14 19:09:42 +05:30
Diptanil Saha
84fda4afb5 Merge pull request #49176 from frappe/mergify/bp/version-15-hotfix/pr-49163
fix: product bundle child item quantity should be a positive number (backport #49163)
2025-08-14 19:08:53 +05:30
Lewis
93ad17ac7b chore: improve code clarity per reviewer feedback
- Rename stock_qty variable to reserved_qty for clarity
- Update get_pos_reserved_qty_from_table to return float
- Simplify aggregation logic in get_pos_reserved_qty
- Ensure return values match docstring specifications

(cherry picked from commit 54d3e5675f)
2025-08-14 13:19:28 +00:00
diptanilsaha
f831d45cc3 fix: product bundle child item quantity should be a positive number
(cherry picked from commit 711076d02d)
2025-08-14 13:19:27 +00:00
Lewis
cc82836109 fix(pos): use packed_items snapshot for bundle reservations
Replaced live Product Bundle queries with `Packed Item` table
lookups to ensure historical reservation accuracy.
Addresses bundle qty underestimation and avoids errors when
bundle definitions change after sale.

Inspired by approach from @diptanilsaha in #49106.

(cherry picked from commit d77d79e011)
2025-08-14 13:19:27 +00:00
Lewis
383744b8e4 fix: remove unclear message related to availability of product bundle
(cherry picked from commit f5e5f7b588)
2025-08-14 13:19:27 +00:00
Lewis
1f3d8e8d64 fix(pos): populate packed_items table in POS Invoice
(cherry picked from commit a65b200eb7)
2025-08-14 13:19:27 +00:00
Lewis
c9902eed72 chore: apply pre-commit formatting
(cherry picked from commit 0fc187adc3)
2025-08-14 13:19:26 +00:00
Lewis Mojica
0d793c11a1 chore: remove unused variable
(cherry picked from commit 5a5804ca87)
2025-08-14 13:19:26 +00:00
Lewis
5ce0dc2a7a fix(pos): include Product Bundle components in reserved qty to prevent overselling
- Add `get_bundle_pos_reserved_qty` to account for component items in submitted POS Invoices
- Update `get_pos_reserved_qty` to sum direct and bundle reservations
- Remove double subtraction in `get_bundle_availability` to avoid underestimating bundle availability
- Prevents overselling when multiple POS sessions sell bundles with shared components
- Fixes #49021

(cherry picked from commit 984d744ac2)
2025-08-14 13:19:26 +00:00
Assem Bahnasy
d6d8903d13 style: Apply ruff formatting 2025-08-14 16:05:09 +03:00
mergify[bot]
ad052d72d7 feat: enhance barcode scanner to support warehouse scanning (backport #48865) (#49162)
Co-authored-by: Sagar Vora <16315650+sagarvora@users.noreply.github.com>
Co-authored-by: Soni Karm <93865733+karm1000@users.noreply.github.com>
2025-08-14 13:20:01 +05:30
Khushi Rawat
8d9095def0 Merge pull request #49146 from frappe/mergify/bp/version-15-hotfix/pr-49075
fix: add validation for draft PR/PI in Asset (backport #49075)
2025-08-14 12:10:00 +05:30
Frappe PR Bot
aaeb3ab06c chore(release): Bumped to Version 15.75.1
## [15.75.1](https://github.com/frappe/erpnext/compare/v15.75.0...v15.75.1) (2025-08-14)

### Bug Fixes

* current qty for batch in stock reco ([de641d7](de641d7f68))
2025-08-14 06:03:46 +00:00
rohitwaghchaure
1975ec3f76 Merge pull request #49159 from frappe/mergify/bp/version-15/pr-49158
chore: convert message to toast notification (backport #49155) (backport #49158)
2025-08-14 11:32:20 +05:30
rohitwaghchaure
b4533ee362 Merge pull request #49160 from frappe/mergify/bp/version-15/pr-49156
fix: current qty for batch in stock reco (backport #49154) (backport #49156)
2025-08-14 11:32:01 +05:30
Rohit Waghchaure
de641d7f68 fix: current qty for batch in stock reco
(cherry picked from commit 817e719cc2)
(cherry picked from commit 3ecb09ae52)
2025-08-14 05:27:13 +00:00
Rohit Waghchaure
02735e69dd chore: convert message to toast notification
(cherry picked from commit fc71001110)
(cherry picked from commit 7a04bf85bc)
2025-08-14 05:26:23 +00:00
rohitwaghchaure
ae22a90160 Merge pull request #49158 from frappe/mergify/bp/version-15-hotfix/pr-49155
chore: convert message to toast notification (backport #49155)
2025-08-14 10:55:28 +05:30
Rohit Waghchaure
7a04bf85bc chore: convert message to toast notification
(cherry picked from commit fc71001110)
2025-08-14 05:06:00 +00:00
rohitwaghchaure
ef0f91f862 Merge pull request #49156 from frappe/mergify/bp/version-15-hotfix/pr-49154
fix: current qty for batch in stock reco (backport #49154)
2025-08-14 08:31:20 +05:30
Rohit Waghchaure
3ecb09ae52 fix: current qty for batch in stock reco
(cherry picked from commit 817e719cc2)
2025-08-13 18:28:29 +00:00
Khushi Rawat
9c5dacd977 refactor: validate linked purchase docs before field usage
(cherry picked from commit 4a48b13715)
2025-08-13 11:49:35 +00:00
Rehan Ansari
4187e60b07 fix: add validation for draft PR/PI in Asset
(cherry picked from commit 4cf481cca8)
2025-08-13 11:49:35 +00:00
Mihir Kandoi
69eb31028a Merge pull request #49138 from frappe/mergify/bp/version-15-hotfix/pr-49134
chore: add default value for posting_time field in subcontracting receipt (backport #49134)
2025-08-13 14:21:41 +05:30
Karm Soni
15a104b0f8 chore: add default value for posting_time field in subcontracting receipt
(cherry picked from commit b7470617e0)
2025-08-13 08:35:45 +00:00
Mihir Kandoi
6b436e1e71 Merge pull request #49124 from frappe/mergify/bp/version-15-hotfix/pr-49122
feat: select child item when creating one document from another (backport #49122)
2025-08-12 21:53:39 +05:30
Mihir Kandoi
5f06d87f01 feat: select child item when creating one document from another
(cherry picked from commit a9936ae133)
2025-08-12 16:07:51 +00:00
Frappe PR Bot
ed50c3d896 chore(release): Bumped to Version 15.75.0
# [15.75.0](https://github.com/frappe/erpnext/compare/v15.74.0...v15.75.0) (2025-08-12)

### Bug Fixes

* avoid property setter for custom field ([faae734](faae734797))
* handle case where taxes is added invoice changed to non-export later ([90913c6](90913c66ae))
* handle negative inventory check ([#48558](https://github.com/frappe/erpnext/issues/48558)) ([#48691](https://github.com/frappe/erpnext/issues/48691)) ([9da2be2](9da2be2325))
* Pick List barcode scanner and manual picking issues ([38c886d](38c886db8b))
* **process statement of accounts:** use date instead of formatted date ([6ad3461](6ad3461953))
* **regional-uae:** mark export items as zero rated ([9df6424](9df6424a20))
* **regional-uae:** restrict zero rated export to invoice ([62db42c](62db42cf2f))
* **regional-uae:** split export determination ([106b83e](106b83e9f9))
* show message only if no tax is applied ([614d38d](614d38d0e6))
* show name of the employee in general ledger report ([0e7f778](0e7f778b3f))
* simplify export determination logic ([68c6586](68c65866bf))
* table render issue on pop-up edit ([52db89f](52db89f73f))

### Features

* add customer name column in gross profit report ([9cd6053](9cd60531d2))
* add item_name column to Material Request dialog in Purchase Order ([eafe33a](eafe33a176))
* add party name column in general ledger report ([680fa3b](680fa3b8f3))
* add party name in GL entries ([3763ad4](3763ad451b))

### Performance Improvements

* multiple performance fixes in `get_item_warehouse` (backport [#49118](https://github.com/frappe/erpnext/issues/49118)) ([76b0f4f](76b0f4fb25))
2025-08-12 12:04:27 +00:00
ruthra kumar
85bb086e90 Merge pull request #49116 from frappe/version-15-hotfix
chore: release v15
2025-08-12 17:33:04 +05:30
mergify[bot]
76b0f4fb25 perf: multiple performance fixes in get_item_warehouse (backport #49118)
Co-authored-by: Sagar Vora <16315650+sagarvora@users.noreply.github.com>
2025-08-12 11:43:43 +00:00
ruthra kumar
167ff00c99 Merge pull request #48999 from frappe/mergify/bp/version-15-hotfix/pr-48761
fix: prevent gain or loss entry cancellation upon reposting (backport #48761)
2025-08-12 17:03:12 +05:30
Logesh Periyasamy
6e7fb2ea01 Merge pull request #48761 from aerele/exchange-gain-or-loss-on-repost
fix: prevent gain or loss entry cancellation upon reposting
(cherry picked from commit a8d17b7590)
2025-08-12 16:47:07 +05:30
ruthra kumar
daf3aab6ae Merge pull request #49111 from frappe/mergify/bp/version-15-hotfix/pr-49086
fix(process statement of accounts): use date instead of formatted date (backport #49086)
2025-08-12 11:39:14 +05:30
ruthra kumar
1c9a74f81c Merge pull request #49110 from frappe/mergify/bp/version-15-hotfix/pr-49096
fix: table render issue on pop-up edit (backport #49096)
2025-08-12 10:49:38 +05:30
ruthra kumar
2eaffa119f Merge pull request #48715 from wojosc/patch-44
refactor: remove default value for opportunity type
2025-08-12 10:49:16 +05:30
ravibharathi656
6ad3461953 fix(process statement of accounts): use date instead of formatted date
(cherry picked from commit aa3f50ab77)
2025-08-12 05:18:09 +00:00
l0gesh29
52db89f73f fix: table render issue on pop-up edit
(cherry picked from commit 3431c6c90e)
2025-08-12 05:10:22 +00:00
Khushi Rawat
4f72635698 Merge pull request #49100 from frappe/mergify/bp/version-15-hotfix/pr-48862
feat: show party name in reports (backport #48862)
2025-08-11 18:25:50 +05:30
khushi8112
0e7f778b3f fix: show name of the employee in general ledger report
(cherry picked from commit 70411ec086)
2025-08-11 12:24:45 +00:00
khushi8112
d6e9216a45 chore: code format
(cherry picked from commit b0c0a86fcf)
2025-08-11 12:24:45 +00:00
khushi8112
9cd60531d2 feat: add customer name column in gross profit report
(cherry picked from commit 9dee411eb5)
2025-08-11 12:24:44 +00:00
khushi8112
3763ad451b feat: add party name in GL entries
(cherry picked from commit 3d94a7cf2c)
2025-08-11 12:24:44 +00:00
khushi8112
680fa3b8f3 feat: add party name column in general ledger report
(cherry picked from commit 5f24061dd4)
2025-08-11 12:24:44 +00:00
ruthra kumar
0644c78c2e Merge pull request #49097 from frappe/mergify/bp/version-15-hotfix/pr-49093
fix: allow creation of root accounts in account tree view  (backport #49093)
2025-08-11 17:44:51 +05:30
Lakshit Jain
c2ad5d0fc7 Merge pull request #49093 from ljain112/fix-account-coa
fix: allow creation of root accounts in account tree view

(cherry picked from commit d45cd5af2b)
2025-08-11 11:38:30 +00:00
Asmita Hase
6de74697c9 Merge pull request #49095 from frappe/mergify/bp/version-15-hotfix/pr-49088
fix: Include Employee party type in Receivable and Payable account filters (backport #49088)
2025-08-11 17:01:48 +05:30
Wolfram Schmidt
36197afa19 refactor: remove default value for opportunity type
removing default value as this leads to an error in non-english setups
2025-08-11 16:54:56 +05:30
Assem Bahnasy
e762007e0e refactor: Move Employee inclusion to SQL level to preserve search semantics
(cherry picked from commit 8a9bf166c6)
2025-08-11 11:15:19 +00:00
Assem Bahnasy
c462219dd7 refactor: Use parameterized SQL queries to prevent injection and handle None values
(cherry picked from commit a08c7f37d3)
2025-08-11 11:15:19 +00:00
ruthra kumar
0cd9330e44 Merge pull request #49085 from frappe/mergify/bp/version-15-hotfix/pr-48730
fix(regional-uae): mark export items as zero rated (backport #48730)
2025-08-11 12:35:56 +05:30
ruthra kumar
faba523086 chore: resolve conflict 2025-08-11 11:41:10 +05:30
Dany Robert
90913c66ae fix: handle case where taxes is added invoice changed to non-export later
(cherry picked from commit 29c3ef8280)
2025-08-11 06:06:08 +00:00
Dany Robert
d47c25287d chore: code styling
(cherry picked from commit c8940a39b3)
2025-08-11 06:06:08 +00:00
Dany Robert
614d38d0e6 fix: show message only if no tax is applied
(cherry picked from commit 38471995e7)
2025-08-11 06:06:08 +00:00
Dany Robert
534b27afa5 chore: linters
(cherry picked from commit eb6c8d8938)
2025-08-11 06:06:07 +00:00
Dany Robert
faae734797 fix: avoid property setter for custom field
(cherry picked from commit 0c15b65756)
2025-08-11 06:06:07 +00:00
Dany Robert
68c65866bf fix: simplify export determination logic
(cherry picked from commit d25846f383)
2025-08-11 06:06:07 +00:00
Dany Robert
62db42cf2f fix(regional-uae): restrict zero rated export to invoice
(cherry picked from commit 1170e4fb2c)
2025-08-11 06:06:06 +00:00
Dany Robert
106b83e9f9 fix(regional-uae): split export determination
(cherry picked from commit dc72e6cf36)
2025-08-11 06:06:06 +00:00
Dany Robert
9df6424a20 fix(regional-uae): mark export items as zero rated
(cherry picked from commit b8224693c4)

# Conflicts:
#	erpnext/patches.txt
2025-08-11 06:06:06 +00:00
Mihir Kandoi
474ddbae0c Merge pull request #49083 from frappe/mergify/bp/version-15-hotfix/pr-48691
fix: handle negative inventory check (#48558) (backport #48691)
2025-08-11 10:45:20 +05:30
Vishist16
9da2be2325 fix: handle negative inventory check (#48558) (#48691)
* fix: handle negative inventory check (#48558)

* fix: updated DocField via Desk UI as suggested

* fix: update DocField via Desk UI and fix linting issues

(cherry picked from commit 3ee23d9ee8)
2025-08-11 05:00:20 +00:00
mergify[bot]
15e8fa3189 Merge pull request #49081 from frappe/mergify/bp/version-15-hotfix/pr-49068
fix(job-card): Add filter to item_code query for scrap_items to exclude disabled (backport #49068)
2025-08-11 10:25:21 +05:30
Mihir Kandoi
02d2ad6442 Merge pull request #49080 from frappe/mergify/bp/version-15-hotfix/pr-49071
feat: add item_name column to Material Request dialog in Purchase Order (backport #49071)
2025-08-11 10:11:47 +05:30
navinrc
eafe33a176 feat: add item_name column to Material Request dialog in Purchase Order
(cherry picked from commit 4312719010)
2025-08-11 04:33:31 +00:00
rohitwaghchaure
bb2c21be44 Merge pull request #49029 from IMS94/fix/pick-list-barcode-scanner-serial-assignment-hotfix
fix: Pick List barcode scanner and manual picking issues
2025-08-08 19:53:21 +05:30
Frappe PR Bot
d4519e5d3d chore(release): Bumped to Version 15.74.0
# [15.74.0](https://github.com/frappe/erpnext/compare/v15.73.2...v15.74.0) (2025-08-08)

### Bug Fixes

* add condition to fetch active accounts ([0d47eb1](0d47eb1fa0))
* added a flag on journal entry to ignore party account type validation if required ([8a3fdb4](8a3fdb4ec2))
* dont validate account type in for employee party type ([d3dde83](d3dde833f7))
* nonetype error on applying presentation_currency filter on financial statements and trial balance report ([24ca7bb](24ca7bb64f))
* **purchase invoice:** filter only enabled account ([b060cdb](b060cdb4f5))
* stock reservation Delivered Qty against the batch ([849f646](849f646bd2))
* timeout while submitting purchase receipt ([e693ab7](e693ab76fa))
* zero valuation rate for the batch ([90a0873](90a0873044))

### Features

* added chart of accounts and tax template for australian localisation ([#48208](https://github.com/frappe/erpnext/issues/48208)) ([36cb5b6](36cb5b6589))
2025-08-08 09:20:20 +00:00
Asmita Hase
1fceebd0a8 Merge pull request #49058 from frappe/version-15-hotfix 2025-08-08 14:48:56 +05:30
Asmita Hase
418d14ecc9 Merge pull request #49054 from frappe/mergify/bp/version-15-hotfix/pr-49053
fix: dont validate account type while creating journal entry for employee party type (backport #49053)
2025-08-08 14:19:17 +05:30
Asmita Hase
d3dde833f7 fix: dont validate account type in for employee party type
(cherry picked from commit e7a2ff1884)
2025-08-08 08:28:37 +00:00
Asmita Hase
0e56c47a4c Merge pull request #49052 from frappe/mergify/bp/version-15-hotfix/pr-49051 2025-08-08 13:56:38 +05:30
Asmita Hase
5f2725f61f chore: trigger create_advance_payment_ledger_records patch
(cherry picked from commit 6d908f44a5)
2025-08-08 07:29:33 +00:00
Mihir Kandoi
b45d74c56e Merge pull request #49049 from frappe/mergify/bp/version-15-hotfix/pr-48813
fix(purchase invoice): filter only enabled account (backport #48813)
2025-08-08 11:11:43 +05:30
mithili
90e583db19 chore: add back filter
(cherry picked from commit 23308f6d10)
2025-08-08 05:25:04 +00:00
mithili
0d47eb1fa0 fix: add condition to fetch active accounts
(cherry picked from commit 7c8dd86a35)
2025-08-08 05:25:04 +00:00
mithili
b060cdb4f5 fix(purchase invoice): filter only enabled account
(cherry picked from commit c3111db6e2)
2025-08-08 05:25:04 +00:00
Asmita Hase
09c96d6a83 Merge pull request #49044 from frappe/mergify/bp/version-15-hotfix/pr-49042
fix: flag on journal entry to ignore party account type validation if required (backport #49042)
2025-08-07 18:17:15 +05:30
Asmita Hase
8a3fdb4ec2 fix: added a flag on journal entry to ignore party account type validation if required
(cherry picked from commit 0665d13fd3)
2025-08-07 12:30:05 +00:00
Frappe PR Bot
e0313bb27f chore(release): Bumped to Version 15.73.2
## [15.73.2](https://github.com/frappe/erpnext/compare/v15.73.1...v15.73.2) (2025-08-07)

### Bug Fixes

* zero valuation rate for the batch ([fb126e0](fb126e0838))
2025-08-07 11:03:27 +00:00
rohitwaghchaure
04c5369792 Merge pull request #49039 from frappe/mergify/bp/version-15/pr-49022
fix: zero valuation rate for the batch (backport #49022)
2025-08-07 16:32:05 +05:30
rohitwaghchaure
a11d368465 chore: fix conflicts 2025-08-07 16:15:31 +05:30
Rohit Waghchaure
fb126e0838 fix: zero valuation rate for the batch
(cherry picked from commit c8410cb5ca)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
2025-08-07 10:43:45 +00:00
rohitwaghchaure
96e467670a Merge pull request #49035 from frappe/mergify/bp/version-15-hotfix/pr-49022
fix: zero valuation rate for the batch (backport #49022)
2025-08-07 14:34:46 +05:30
rohitwaghchaure
105838091e chore: fix conflicts 2025-08-07 14:10:21 +05:30
Rohit Waghchaure
90a0873044 fix: zero valuation rate for the batch
(cherry picked from commit c8410cb5ca)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
2025-08-07 08:25:51 +00:00
rohitwaghchaure
965de96251 Merge pull request #49012 from rohitwaghchaure/fixed-support-43860
fix: stock reservation Delivered Qty against the batch
2025-08-07 12:27:54 +05:30
ruthra kumar
1a57f603fb Merge pull request #49031 from frappe/mergify/bp/version-15-hotfix/pr-48208
feat: added chart of accounts and tax template for australian localisation (backport #48208)
2025-08-07 10:36:52 +05:30
Jeba Jebas
36cb5b6589 feat: added chart of accounts and tax template for australian localisation (#48208)
* Add Australian Localisation Setup

* feat: added chart of accounts and tax template for australian localisation

* chore: linter fix

---------

Co-authored-by: ruthra kumar <ruthra@erpnext.com>
(cherry picked from commit bb62a01c0d)
2025-08-07 04:39:17 +00:00
Imesha Sudasingha
dab6bb8e05 style: apply pre-commit formatting fixes 2025-08-07 05:15:42 +05:30
Imesha Sudasingha
eebeb36b6c refactor: combine duplicate pick_manually handlers in pick_list.js 2025-08-07 05:09:46 +05:30
Imesha Sudasingha
38c886db8b fix: Pick List barcode scanner and manual picking issues
- Fix barcode scanner serial_no_field configuration from 'not_supported' to 'serial_no'
- Add conditional serial assignment in create_pick_list to respect pick_manually flag
- Add client-side handler to clear auto-assigned data when switching to manual picking
- Add server-side validation to ensure data consistency
2025-08-07 05:04:25 +05:30
Diptanil Saha
f4f1fdedee Merge pull request #49025 from frappe/mergify/bp/version-15-hotfix/pr-49023
fix: NoneType error on applying presentation_currency filter on financial statements and trial balance report (backport #49023)
2025-08-07 02:27:43 +05:30
diptanilsaha
24ca7bb64f fix: nonetype error on applying presentation_currency filter on financial statements and trial balance report
(cherry picked from commit d7e22de44c)
2025-08-06 20:41:36 +00:00
Rohit Waghchaure
849f646bd2 fix: stock reservation Delivered Qty against the batch 2025-08-06 22:29:45 +05:30
rohitwaghchaure
e19c4c6452 Merge pull request #49019 from frappe/mergify/bp/version-15-hotfix/pr-49010
fix: timeout while submitting purchase receipt (backport #49010)
2025-08-06 22:24:17 +05:30
Rohit Waghchaure
e693ab76fa fix: timeout while submitting purchase receipt
(cherry picked from commit c433943c46)
2025-08-06 14:36:34 +00:00
Frappe PR Bot
6b38654542 chore(release): Bumped to Version 15.73.1
## [15.73.1](https://github.com/frappe/erpnext/compare/v15.73.0...v15.73.1) (2025-08-06)

### Bug Fixes

* fetch revaluated asset value for all the assets ([5224b66](5224b6677d))
2025-08-06 12:23:54 +00:00
Asmita Hase
935b8cfcf7 Merge pull request #49016 from frappe/version-15-hotfix 2025-08-06 17:52:33 +05:30
Khushi Rawat
639c75312d Merge pull request #49013 from frappe/mergify/bp/version-15-hotfix/pr-49011
fix: fetch revaluated asset value for fixed asset register (backport #49011)
2025-08-06 17:36:09 +05:30
khushi8112
e1121d1c68 chore: format code
(cherry picked from commit a33bcb47b3)
2025-08-06 11:44:55 +00:00
khushi8112
5224b6677d fix: fetch revaluated asset value for all the assets
(cherry picked from commit 67ec4fa477)
2025-08-06 11:44:55 +00:00
Asmita Hase
ad3d6a7c91 Merge pull request #49006 from frappe/mergify/bp/version-15-hotfix/pr-49003 2025-08-06 12:14:59 +05:30
Asmita Hase
2d420ed661 chore: removed uncessary comment
(cherry picked from commit b4f831a931)
2025-08-06 06:16:55 +00:00
Asmita Hase
4cc9061990 chore: add account type to employee advance account in standard chart of accounts
(cherry picked from commit a273147b6e)
2025-08-06 06:16:54 +00:00
Asmita Hase
5266690cd8 refactor: get advance payment doctypes from hooks
(cherry picked from commit 2cb2e05b19)
2025-08-06 06:16:54 +00:00
ruthra kumar
373a17e3de Merge pull request #49002 from ruthra-kumar/fix_linter_issue
chore: resolve linting issue
2025-08-06 09:57:40 +05:30
ruthra kumar
2af2002431 chore: resolve linting issue 2025-08-06 09:56:39 +05:30
Frappe PR Bot
5b4093069c chore(release): Bumped to Version 15.73.0
# [15.73.0](https://github.com/frappe/erpnext/compare/v15.72.3...v15.73.0) (2025-08-06)

### Bug Fixes

* account currency validation to exclude cancelled entries ([4ce4d34](4ce4d345e7))
* **accounts:** allow default bank account per company ([8cd90de](8cd90de70b))
* add doctype fieldname in condition ([3603cdf](3603cdf457))
* add missing parentheses ([78857cd](78857cd798))
* change modified timestamp so migrations work ([f8ea431](f8ea431551))
* do not recalculate depreciation on sale invoice cancellation for fully depreciated asset ([db41b14](db41b14317))
* do not split round off when there is a cost center allocation ([e36e502](e36e5027d7))
* enable allow_on_submit for accounting dimensions in allowed doctypes ([e22f93f](e22f93f1fb))
* failing subcontracting patch ([2f4a9f2](2f4a9f283d))
* failing subcontracting patch (backport [#48940](https://github.com/frappe/erpnext/issues/48940)) ([#48961](https://github.com/frappe/erpnext/issues/48961)) ([5a984de](5a984de697))
* include child doctypes in allow_on_submit patch for accounting dimensions ([ad56177](ad56177234))
* include child doctypes in repostable accounting types ([56dca02](56dca02cab))
* include Sales Invoice in SABB validation for packed items ([d862a74](d862a742b0))
* multiple fixes for advance payment accounting (backport [#48341](https://github.com/frappe/erpnext/issues/48341)) ([#48896](https://github.com/frappe/erpnext/issues/48896)) ([cb0addc](cb0addc122))
* payment ledger voucher seperator row currencies ([5b0486c](5b0486ca26))
* permission error on tests ([6f12029](6f12029477))
* prevent negative values in BOM fields ([#48520](https://github.com/frappe/erpnext/issues/48520), [#48662](https://github.com/frappe/erpnext/issues/48662)) (backport [#48696](https://github.com/frappe/erpnext/issues/48696)) ([#48897](https://github.com/frappe/erpnext/issues/48897)) ([5de5a8b](5de5a8bfd5))
* **process statement of accounts:** make date fields mandatory ([3e8deee](3e8deeed07))
* provide company for outstanding record. ([dc4b236](dc4b236951))
* provide missing `company` in report records that require reference to `Company:company:default_currency` ([070190d](070190d07b))
* remove api call to set default payments ([d9c1ef0](d9c1ef0926))
* server error on opportunity summary by sales stage report ([652589f](652589f636))
* set use_serial_batch_fields when creating PR from PO ([0207b82](0207b82f82))
* submit depreciation schedule only for submitted asset ([9d8cb2f](9d8cb2f57c))
* **tax withholding details:** avoid voucher duplication ([cee9f20](cee9f200ad))
* use checkout@v2 instead of v4 ([c9d69d9](c9d69d9629))
* Use correct Attachments folder in code list import ([dc7ac35](dc7ac3550e))
* use maintenance_status filter for indicators ([eec327c](eec327c02b))
* validate if journal entry linked to schedule is in draft ([37eaa07](37eaa07192))

### Features

* add 'Manufacture' section to project dashboard and show linked Work Orders ([83e9842](83e9842dd3))
* add non-negative constraint to batch size and sub operation time fields (backport [#48948](https://github.com/frappe/erpnext/issues/48948)) ([#48991](https://github.com/frappe/erpnext/issues/48991)) ([964f927](964f9275dc))
* Add non-negative constraint to completed qty fields in job card and time log (backport [#48946](https://github.com/frappe/erpnext/issues/48946)) ([#48989](https://github.com/frappe/erpnext/issues/48989)) ([84e91e0](84e91e0c7c))
* add show_amount_in_company_currency in gl report ([b964b12](b964b122ed))

### Performance Improvements

* process auto bank reconciliation in batches ([19a8dde](19a8ddef86))
* process_gl_map causing performance issues in the reposting ([a96fa55](a96fa55704))

### Reverts

* Revert "fix: set proper currency format" ([0355006](03550066a7))
2025-08-06 02:37:49 +00:00
ruthra kumar
53fef46f9a Merge pull request #48979 from frappe/version-15-hotfix
chore: release v15
2025-08-06 08:06:33 +05:30
ruthra kumar
1070322695 Merge branch 'version-15' into version-15-hotfix 2025-08-05 21:41:58 +05:30
ruthra kumar
3ea6278eb9 Merge pull request #48997 from frappe/mergify/bp/version-15-hotfix/pr-48901
fix: do not split round off when there is a cost center allocation (backport #48901)
2025-08-05 20:46:12 +05:30
ravibharathi656
e822a74479 test: add test for cost center allocation commercial rounding
(cherry picked from commit dd24cce509)

# Conflicts:
#	erpnext/accounts/doctype/cost_center_allocation/test_cost_center_allocation.py
2025-08-05 20:29:25 +05:30
venkat102
e36e5027d7 fix: do not split round off when there is a cost center allocation
(cherry picked from commit f0df41d521)
2025-08-05 14:47:51 +00:00
ruthra kumar
f97e29058c Merge pull request #48993 from frappe/mergify/bp/version-15-hotfix/pr-48947
fix(process statement of accounts): make date fields mandatory (backport #48947)
2025-08-05 17:08:55 +05:30
mergify[bot]
964f9275dc feat: add non-negative constraint to batch size and sub operation time fields (backport #48948) (#48991)
* feat: add non-negative constraint to batch size and sub operation time fields

(cherry picked from commit f4722d3b24)

# Conflicts:
#	erpnext/manufacturing/doctype/operation/operation.json
#	erpnext/manufacturing/doctype/sub_operation/sub_operation.json

* chore: resolve conflicts

* chore: resolve conflicts

* chore: resolve conflicts

---------

Co-authored-by: KerollesFathy <kerolles.f@outlook.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-08-05 11:19:46 +00:00
Mihir Kandoi
f3895e9dc9 Merge pull request #48992 from frappe/mergify/bp/version-15-hotfix/pr-48949
feat: add Manufacture section to project dashboard to show linked Work Orders (backport #48949)
2025-08-05 16:48:33 +05:30
ravibharathi656
3e8deeed07 fix(process statement of accounts): make date fields mandatory
(cherry picked from commit 23bc180d98)
2025-08-05 11:06:47 +00:00
mergify[bot]
84e91e0c7c feat: Add non-negative constraint to completed qty fields in job card and time log (backport #48946) (#48989)
* feat: Add non-negative constraint to completed qty fields in job card and time log

(cherry picked from commit c30665fda7)

# Conflicts:
#	erpnext/manufacturing/doctype/job_card/job_card.json
#	erpnext/manufacturing/doctype/job_card_time_log/job_card_time_log.json

* chore: resolve conflicts

* chore: resolve conflicts

---------

Co-authored-by: KerollesFathy <kerolles.f@outlook.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-08-05 11:06:43 +00:00
KerollesFathy
83e9842dd3 feat: add 'Manufacture' section to project dashboard and show linked Work Orders
(cherry picked from commit 2729d7521d)
2025-08-05 10:59:44 +00:00
Khushi Rawat
3760ff8a7a Merge pull request #48977 from frappe/mergify/bp/version-15-hotfix/pr-48968
fix: validate asset before submitting depreciation schedule (backport #48968)
2025-08-05 16:28:03 +05:30
Khushi Rawat
ddecce400a Merge pull request #48987 from frappe/mergify/bp/version-15-hotfix/pr-48929
chore: add translation function on remarks in asset depreciation entry  (backport #48929)
2025-08-05 16:27:47 +05:30
ruthra kumar
6367bd9561 Merge pull request #48985 from frappe/mergify/bp/version-15-hotfix/pr-48798
feat: add show_amount_in_company_currency in gl report (backport #48798)
2025-08-05 16:26:37 +05:30
ruthra kumar
104569318e Merge pull request #48982 from frappe/mergify/bp/version-15-hotfix/pr-48909
fix(tax withholding details): avoid voucher duplication (backport #48909)
2025-08-05 16:25:48 +05:30
Khushi Rawat
4a8465df90 chore: resolved conflicts 2025-08-05 16:05:54 +05:30
Khushi Rawat
78857cd798 fix: add missing parentheses
(cherry picked from commit a60db40fd2)
2025-08-05 10:26:31 +00:00
Ernesto Ruiz
2c9ee7ae14 chore: add translation function on remark in setup_journal_entry_metadata in depreciation.py
(cherry picked from commit 803180d5de)

# Conflicts:
#	erpnext/assets/doctype/asset/depreciation.py
2025-08-05 10:26:31 +00:00
Ernesto Ruiz
4a5e0b181f chore: add translation function on remarks in make_journal_entry in asset.py
(cherry picked from commit 119904e44f)
2025-08-05 10:26:31 +00:00
Khushi Rawat
35f826c499 chore: remove duplicate code 2025-08-05 15:54:11 +05:30
Diptanil Saha
b565d4f0a8 Merge pull request #48983 from diptanilsaha/pos_grand_total_default_mop
refactor(pos): disable grand total to default mode of payment
2025-08-05 15:24:32 +05:30
l0gesh29
b964b122ed feat: add show_amount_in_company_currency in gl report
(cherry picked from commit 468e5e9b2e)
2025-08-05 09:52:53 +00:00
ravibharathi656
cee9f200ad fix(tax withholding details): avoid voucher duplication
(cherry picked from commit 8837016243)
2025-08-05 09:46:51 +00:00
ruthra kumar
214f15e700 Merge pull request #48972 from frappe/mergify/bp/version-15-hotfix/pr-48718
refactor: process subscriptions in batch wise (backport #48718)
2025-08-05 15:13:00 +05:30
ruthra kumar
0341941d3f Merge pull request #48973 from frappe/mergify/bp/version-15-hotfix/pr-48774
perf: process auto bank reconciliation in batches (backport #48774)
2025-08-05 15:12:46 +05:30
diptanilsaha
8d1b599d5f refactor(pos): disable grand total to default mode of payment 2025-08-05 15:09:55 +05:30
Khushi Rawat
4022fcb0d9 Merge pull request #48976 from frappe/mergify/bp/version-15-hotfix/pr-48974
fix: use maintenance_status filter for indicators (backport #48974)
2025-08-05 15:07:50 +05:30
Khushi Rawat
4f14651a42 chore: resolved conflicts 2025-08-05 15:06:57 +05:30
khushi8112
497247d89a chore: fetch docstatus to validate
(cherry picked from commit d6fb99916e)
2025-08-05 09:32:29 +00:00
khushi8112
137d2d4044 chore: add mistakenly removed test records
(cherry picked from commit f5a71c6b88)
2025-08-05 09:32:28 +00:00
khushi8112
37eaa07192 fix: validate if journal entry linked to schedule is in draft
(cherry picked from commit d5edca2022)
2025-08-05 09:32:28 +00:00
khushi8112
9d8cb2f57c fix: submit depreciation schedule only for submitted asset
(cherry picked from commit a4628c2024)

# Conflicts:
#	erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
2025-08-05 09:32:28 +00:00
khushi8112
eec327c02b fix: use maintenance_status filter for indicators
(cherry picked from commit 1b674a1051)
2025-08-05 09:32:22 +00:00
Diptanil Saha
093c94aa7c Merge pull request #48965 from frappe/mergify/bp/version-15-hotfix/pr-48964
fix: remove api call to set default payments (backport #48964)
2025-08-05 14:49:37 +05:30
ravibharathi656
19a8ddef86 perf: process auto bank reconciliation in batches
(cherry picked from commit 657de2cc7e)
2025-08-05 09:08:46 +00:00
ravibharathi656
0fdd944418 refactor: process subscriptions in batch wise
(cherry picked from commit 283d69c0bd)
2025-08-05 08:58:22 +00:00
ruthra kumar
f997393b0e Merge pull request #48971 from frappe/mergify/bp/version-15-hotfix/pr-48861
chore: correct description for `consider_party_ledger_amount` in Tax Withholding Category (backport #48861)
2025-08-05 14:25:46 +05:30
ljain112
0d02d7086c chore: correct description for consider_party_ledger_amount in Tax Withholding Category
(cherry picked from commit f619bca2d6)

# Conflicts:
#	erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.json
2025-08-05 14:25:23 +05:30
Mihir Kandoi
913bde0dfe Merge pull request #48967 from frappe/mergify/bp/version-15-hotfix/pr-48693
fix: Use correct Attachments folder in code list import (backport #48693)
2025-08-05 14:24:42 +05:30
Mihir Kandoi
21d33cf6b9 Merge pull request #48767 from WHWYIT/fix-issues-48765
Fix: Procurement Tracker - No permission to read Employee #48765
2025-08-05 14:20:33 +05:30
Corentin Forler
dc7ac3550e fix: Use correct Attachments folder in code list import
(cherry picked from commit bc2cb1737a)
2025-08-05 08:34:39 +00:00
Diptanil Saha
e8ba2b1576 chore: resolve conflict 2025-08-05 13:24:49 +05:30
diptanilsaha
d9c1ef0926 fix: remove api call to set default payments
(cherry picked from commit 871b8473fa)

# Conflicts:
#	erpnext/public/js/controllers/taxes_and_totals.js
2025-08-05 07:46:37 +00:00
ruthra kumar
0061bde950 Merge pull request #48962 from frappe/mergify/bp/version-15-hotfix/pr-48860
fix: add doctype fieldname in condition (backport #48860)
2025-08-05 12:17:56 +05:30
mergify[bot]
5a984de697 fix: failing subcontracting patch (backport #48940) (#48961)
* fix: failing subcontracting patch

(cherry picked from commit 14b47e81ce)

# Conflicts:
#	erpnext/patches.txt

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-08-05 06:37:20 +00:00
l0gesh29
3603cdf457 fix: add doctype fieldname in condition
(cherry picked from commit e2d63e4c32)
2025-08-05 06:32:41 +00:00
ruthra kumar
a74b3e3602 Merge pull request #48939 from frappe/mergify/bp/version-15-hotfix/pr-48575
feat(payment gateway account): add company (backport #48575)
2025-08-05 10:43:12 +05:30
Ravibharathi
8259a748f6 Merge pull request #48575 from aerele/company-payment-gateway
feat(payment gateway account): add company

(cherry picked from commit 02380c3eab)
2025-08-05 10:12:39 +05:30
ruthra kumar
59c6e8f233 Merge pull request #48953 from frappe/mergify/bp/version-15-hotfix/pr-48951
chore: added now as default value for the posting time (backport #48951)
2025-08-05 10:08:55 +05:30
Rohit Waghchaure
dfa35363b9 chore: added now as default value for the posting time
(cherry picked from commit b3cebd87c8)

# Conflicts:
#	erpnext/accounts/doctype/pos_invoice/pos_invoice.json
#	erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
#	erpnext/stock/doctype/delivery_note/delivery_note.json
#	erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json
2025-08-05 09:44:21 +05:30
mergify[bot]
bab2e86c01 chore: remove wrongly configured 'pos*' assignment from CODEOWNERS (backport #48954) (#48955)
chore: remove wrongly configured 'pos*' assignment from CODEOWNERS (#48954)

(cherry picked from commit cc26d5da14)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-08-05 00:10:09 +05:30
ruthra kumar
fc462d4526 Merge pull request #48937 from frappe/mergify/bp/version-15-hotfix/pr-48926
fix: provide missing `company` in report records that require reference to `Company:company:default_currency` (backport #48926)
2025-08-04 11:02:53 +05:30
Devin Slauenwhite
5b0486ca26 fix: payment ledger voucher seperator row currencies
(cherry picked from commit c03f1c25cf)
2025-08-04 05:00:08 +00:00
Devin Slauenwhite
dc4b236951 fix: provide company for outstanding record.
(cherry picked from commit 97959dbe75)
2025-08-04 05:00:08 +00:00
Devin Slauenwhite
070190d07b fix: provide missing company in report records that require reference to Company:company:default_currency
(cherry picked from commit 7f3905185c)
2025-08-04 05:00:08 +00:00
Devin Slauenwhite
03550066a7 Revert "fix: set proper currency format"
This reverts PR https://github.com/frappe/erpnext/pull/42458
This reverts commit 2533808f1e.

(cherry picked from commit 316470eee4)
2025-08-04 05:00:07 +00:00
ruthra kumar
b93cfc5d83 Merge pull request #48936 from frappe/mergify/bp/version-15-hotfix/pr-48136
fix(accounts):enable allow_on_submit for accounting dimensions in repost settings allowed doctypes (backport #48136)
2025-08-04 09:34:13 +05:30
ravibharathi656
ad56177234 fix: include child doctypes in allow_on_submit patch for accounting dimensions
(cherry picked from commit 1e37fd8991)
2025-08-04 09:14:13 +05:30
ravibharathi656
e22f93f1fb fix: enable allow_on_submit for accounting dimensions in allowed doctypes
(cherry picked from commit 55e79c4dfd)
2025-08-04 03:35:35 +00:00
ravibharathi656
56dca02cab fix: include child doctypes in repostable accounting types
(cherry picked from commit fbd8fd7d22)
2025-08-04 03:35:34 +00:00
Frappe PR Bot
8795ce975f chore(release): Bumped to Version 15.72.3
## [15.72.3](https://github.com/frappe/erpnext/compare/v15.72.2...v15.72.3) (2025-08-03)

### Performance Improvements

* process_gl_map causing performance issues in the reposting ([58f6534](58f6534d8b))
2025-08-03 10:42:14 +00:00
rohitwaghchaure
629cdd62f2 Merge pull request #48932 from frappe/mergify/bp/version-15/pr-48914
perf: process_gl_map causing performance issues in the reposting (backport #48914)
2025-08-03 16:08:38 +05:30
Rohit Waghchaure
58f6534d8b perf: process_gl_map causing performance issues in the reposting
(cherry picked from commit a96fa55704)
2025-08-03 09:46:12 +00:00
Mihir Kandoi
c7db277aa8 Merge pull request #48928 from frappe/mergify/bp/version-15-hotfix/pr-48748
fix: account currency validation to exclude cancelled entries (backport #48748)
2025-08-02 22:34:05 +05:30
Dev Dusija
4ce4d345e7 fix: account currency validation to exclude cancelled entries
(cherry picked from commit c9c45fe89f)
2025-08-02 16:48:31 +00:00
Mihir Kandoi
f714888d48 Merge pull request #48924 from frappe/mergify/bp/version-15-hotfix/pr-48915
fix: set use_serial_batch_fields when creating PR from PO (backport #48915)
2025-08-02 20:57:46 +05:30
Kavin
0207b82f82 fix: set use_serial_batch_fields when creating PR from PO
(cherry picked from commit a384c96617)
2025-08-02 15:12:26 +00:00
rohitwaghchaure
7f1dbeee8b Merge pull request #48914 from rohitwaghchaure/fixed-support-45378
perf: process_gl_map causing performance issues in the reposting
2025-08-02 19:01:40 +05:30
Rohit Waghchaure
a96fa55704 perf: process_gl_map causing performance issues in the reposting 2025-08-02 18:44:32 +05:30
Mihir Kandoi
4488b27fe3 Merge pull request #48910 from frappe/mergify/bp/version-15-hotfix/pr-48908
fix: include Sales Invoice in SABB validation for packed items (backport #48908)
2025-08-01 17:34:59 +05:30
Mihir Kandoi
d862a742b0 fix: include Sales Invoice in SABB validation for packed items
(cherry picked from commit 2ce297aff8)
2025-08-01 11:50:21 +00:00
Frappe PR Bot
31343b6287 chore(release): Bumped to Version 15.72.2
## [15.72.2](https://github.com/frappe/erpnext/compare/v15.72.1...v15.72.2) (2025-08-01)

### Bug Fixes

* multiple fixes for advance payment accounting (backport [#48341](https://github.com/frappe/erpnext/issues/48341)) ([#48896](https://github.com/frappe/erpnext/issues/48896)) ([52b9f92](52b9f92553))
2025-08-01 10:25:24 +00:00
ruthra kumar
e0850ed209 Merge pull request #48906 from frappe/mergify/bp/version-15/pr-48896
fix: multiple fixes for advance payment accounting (backport #48341) (backport #48896)
2025-08-01 15:53:57 +05:30
mergify[bot]
52b9f92553 fix: multiple fixes for advance payment accounting (backport #48341) (#48896)
* fix: multiple fixes for advance payment accounting

(cherry picked from commit e70caedddc)

# Conflicts:
#	erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
#	erpnext/accounts/doctype/payment_entry/payment_entry.py
#	erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json
#	erpnext/accounts/utils.py
#	erpnext/controllers/accounts_controller.py
#	erpnext/patches/v15_0/create_advance_payment_ledger_records.py

* chore: resolve conflicts

* fix: do not execute patch if no advance doctypes

---------

Co-authored-by: Lakshit Jain <108322669+ljain112@users.noreply.github.com>
Co-authored-by: ljain112 <ljain112@gmail.com>
(cherry picked from commit cb0addc122)
2025-08-01 10:01:31 +00:00
mergify[bot]
cb0addc122 fix: multiple fixes for advance payment accounting (backport #48341) (#48896)
* fix: multiple fixes for advance payment accounting

(cherry picked from commit e70caedddc)

# Conflicts:
#	erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
#	erpnext/accounts/doctype/payment_entry/payment_entry.py
#	erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json
#	erpnext/accounts/utils.py
#	erpnext/controllers/accounts_controller.py
#	erpnext/patches/v15_0/create_advance_payment_ledger_records.py

* chore: resolve conflicts

* fix: do not execute patch if no advance doctypes

---------

Co-authored-by: Lakshit Jain <108322669+ljain112@users.noreply.github.com>
Co-authored-by: ljain112 <ljain112@gmail.com>
2025-08-01 15:30:30 +05:30
mergify[bot]
5de5a8bfd5 fix: prevent negative values in BOM fields (#48520, #48662) (backport #48696) (#48897)
* fix: prevent negative values in BOM fields (#48520, #48662) (#48696)

* fix: prevent negative values in BOM fields (#48520, #48662)

* fix: applied non_negative validation using Desk UI for BOM fields

(cherry picked from commit 3a80e116e8)

# Conflicts:
#	erpnext/manufacturing/doctype/bom_operation/bom_operation.json
#	erpnext/manufacturing/doctype/bom_scrap_item/bom_scrap_item.json

* chore: resolve conflicts

* chore: resolve conflicts

---------

Co-authored-by: Vishist16 <101823906+Vishist16@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-07-31 15:42:23 +00:00
Frappe PR Bot
396886c6e8 chore(release): Bumped to Version 15.72.1
## [15.72.1](https://github.com/frappe/erpnext/compare/v15.72.0...v15.72.1) (2025-07-31)

### Bug Fixes

* failing subcontracting patch ([14d5c7f](14d5c7f3cd))
2025-07-31 11:05:20 +00:00
Mihir Kandoi
3a0db8d550 Merge pull request #48892 from frappe/mergify/bp/version-15/pr-48888
fix: failing subcontracting patch (backport #48887) (backport #48888)
2025-07-31 16:34:07 +05:30
Mihir Kandoi
9e661b206c chore: add date so patch can rerun
(cherry picked from commit ed927a2147)
2025-07-31 10:46:45 +00:00
Mihir Kandoi
14d5c7f3cd fix: failing subcontracting patch
(cherry picked from commit bb43419944)
(cherry picked from commit 2f4a9f283d)
2025-07-31 10:46:45 +00:00
Mihir Kandoi
5291c66ea1 Merge pull request #48888 from frappe/mergify/bp/version-15-hotfix/pr-48887
fix: failing subcontracting patch (backport #48887)
2025-07-31 16:15:15 +05:30
Mihir Kandoi
ed927a2147 chore: add date so patch can rerun 2025-07-31 16:00:35 +05:30
Mihir Kandoi
2f4a9f283d fix: failing subcontracting patch
(cherry picked from commit bb43419944)
2025-07-31 10:10:40 +00:00
Mihir Kandoi
79bfcbf424 Merge pull request #48885 from mihir-kandoi/version-15-hotfix
fix: permission error on tests
2025-07-31 14:52:34 +05:30
Mihir Kandoi
c9d69d9629 fix: use checkout@v2 instead of v4 2025-07-31 14:19:44 +05:30
Mihir Kandoi
6f12029477 fix: permission error on tests 2025-07-31 14:04:02 +05:30
mergify[bot]
7bb127de63 Merge pull request #48876 from frappe/mergify/bp/version-15-hotfix/pr-48873
fix: return conversion factor of variant and not template (backport #48873)
2025-07-31 07:03:15 +00:00
Diptanil Saha
87de70f4fd Merge pull request #48877 from frappe/mergify/bp/version-15-hotfix/pr-48619
fix(accounts): allow default bank account per company (backport #48619)
2025-07-31 12:21:04 +05:30
Khushi Rawat
782fecca46 Merge pull request #48857 from khushi8112/asset-depreciation-on-cancel-of-sales-invoice
fix: do not recalculate depreciation on sale invoice cancellation for fully depreciated asset
2025-07-31 12:11:02 +05:30
Nikhil Kothari
8cd90de70b fix(accounts): allow default bank account per company
(cherry picked from commit 982550b92c)
2025-07-31 06:34:31 +00:00
Diptanil Saha
0b9a8ee67c Merge pull request #48859 from frappe/mergify/bp/version-15-hotfix/pr-48858
fix: server error on opportunity summary by sales stage report (backport #48858)
2025-07-30 16:04:47 +05:30
diptanilsaha
652589f636 fix: server error on opportunity summary by sales stage report
(cherry picked from commit 830b3ba1e5)
2025-07-30 10:20:05 +00:00
khushi8112
106f7ea112 test: test asset status after sales invoice creation and cancellation 2025-07-30 13:51:34 +05:30
khushi8112
db41b14317 fix: do not recalculate depreciation on sale invoice cancellation for fully depreciated asset 2025-07-30 13:50:32 +05:30
Mihir Kandoi
609191c3a5 Merge pull request #48852 from frappe/mergify/bp/version-15-hotfix/pr-48851 2025-07-29 22:37:58 +05:30
Mihir Kandoi
7489c9159d chore: resolve conflicts 2025-07-29 22:22:25 +05:30
Mihir Kandoi
b48619078d Update CODEOWNERS
(cherry picked from commit b9b3302b69)

# Conflicts:
#	CODEOWNERS
2025-07-29 16:49:03 +00:00
Diptanil Saha
523007588d Merge pull request #48850 from frappe/mergify/bp/version-15-hotfix/pr-48839
fix: change modified timestamp so migrations work (backport #48839)
2025-07-29 21:18:48 +05:30
Frappe PR Bot
b4a6d09d5d chore(release): Bumped to Version 15.72.0
# [15.72.0](https://github.com/frappe/erpnext/compare/v15.71.1...v15.72.0) (2025-07-29)

### Bug Fixes

* append finance book row only when calculate depreciation is checked ([36f22f9](36f22f929d))
* attribute error in payment entry ([3739e2c](3739e2ca5a))
* avoid auto_repeat on duplicate ([65a2706](65a27066cc))
* correct query filter assignment in stock ledger and balance reports ([fa01bdc](fa01bdc490))
* create job card for selected operations only ([23180da](23180dad42))
* do not set value after depreciation as zero ([20bbfc5](20bbfc504f))
* enhance warehouse filter to support list and tuple values ([#48755](https://github.com/frappe/erpnext/issues/48755)) ([0cb2c41](0cb2c41cba))
* error when trying to edit quantity of top most FG in bom creator ([bd7de51](bd7de515b1))
* fetch item valuation rate for internal transactions ([b23f7a9](b23f7a9d91))
* fetch payment term template from order ([ee8eb36](ee8eb368e7))
* get default company currency ([622052b](622052b950))
* handle empty warehouse condition in get_warehouse_condition function; typo; ([1d52a8f](1d52a8fb69))
* ignore is overridden by transaction.js upon clicking cancel ([424baed](424baed077))
* include empty values in user permission ([cfcd21d](cfcd21d5c6))
* incorrect GL entries ([207d2ac](207d2ac63c))
* Misclassification of Journal Voucher Entries in Customer Ledger Summary ([#48041](https://github.com/frappe/erpnext/issues/48041)) ([01fcd98](01fcd98c84))
* over billed purchase receipt status ([1efdff0](1efdff0ad1))
* patch to enable fetch_valuation_rate_for_internal_transaction ([bf5b6a5](bf5b6a540f))
* patch to set default buying price list in material request ([#48680](https://github.com/frappe/erpnext/issues/48680)) ([fd1c213](fd1c213a8d))
* **pick list:** make warehouse editable ([6a50410](6a5041042e))
* post gl entry on completion date of asset repair ([5a82b72](5a82b723c2))
* prevent concurrency issues ([ad75754](ad75754ca6))
* prevent negative scrap quantity in Job Card ([#48545](https://github.com/frappe/erpnext/issues/48545)) ([ae945b2](ae945b2e6f))
* remove alias for order by field ([193fbcb](193fbcba11))
* **sales-order:** disallow address edits after sales order is submitted ([2073e98](2073e98613))
* serial no warehouse for backdated stock reco ([b82aea4](b82aea4a87))
* set company as mandatory ([49befc1](49befc1dfd))
* set letter head from company if exists ([d4fae00](d4fae00b80))
* sql error in quality inspection ([3e92ae8](3e92ae8bd0))
* status in MR (material transfer) when using transit stock entries ([584b442](584b442824))
* test case ([9fe1e6d](9fe1e6d0bd))
* test case ([c7dcbed](c7dcbed16f))
* **test:** update tests ([62033b5](62033b5c7a))
* update advance paid amount on unreconcile ([074a706](074a7065be))
* update asset value after revaluation cancellation ([d9b24a3](d9b24a30eb))
* update get_data function to use item_query ([9bf0d85](9bf0d852ee))
* update subscription details patch ([ebda396](ebda396518))
* use db_set in email_campaign (backport [#45679](https://github.com/frappe/erpnext/issues/45679)) ([#48806](https://github.com/frappe/erpnext/issues/48806)) ([9b59fb6](9b59fb659b))
* use the item_query for get_data ([a7e8f40](a7e8f404f7))
* valuation for rejected materials ([d378e51](d378e51492))
* warehouse filter query by chaining conditions ([b57163b](b57163b7be))

### Features

* add fetch_valuation_rate_for_internal_transaction in accounts settings ([f8d1e5a](f8d1e5a0d3))
* Add non-negative constraint to workstation cost fields (backport [#48557](https://github.com/frappe/erpnext/issues/48557)) ([#48826](https://github.com/frappe/erpnext/issues/48826)) ([e1d7ec9](e1d7ec906f))
* enhance apply_warehouse_filter to support multiple warehouses in filters ([801cda3](801cda3813))
* option to recalculate costing and billing fields in project ([6adc8a0](6adc8a09c0))
* show opening/closing balance in cash flow report ([#47877](https://github.com/frappe/erpnext/issues/47877)) ([7fd5b2b](7fd5b2b26a))
* update stock balance report to support multi-select for items and warehouses ([2b08c5b](2b08c5b769))
* update stock ledger report to support multi-select for warehouses and items ([ecf9e6e](ecf9e6e748))
2025-07-29 15:39:56 +00:00
ruthra kumar
943aca9739 Merge pull request #48832 from frappe/version-15-hotfix
chore: release v15
2025-07-29 21:08:37 +05:30
Diptanil Saha
184cabdcb0 chore: resolve conflict 2025-07-29 21:02:04 +05:30
Ayush Chaudhari
f8ea431551 fix: change modified timestamp so migrations work
(cherry picked from commit c18d565d3e)

# Conflicts:
#	erpnext/manufacturing/doctype/job_card_scrap_item/job_card_scrap_item.json
2025-07-29 15:30:28 +00:00
ruthra kumar
9732973b73 Merge pull request #48849 from frappe/mergify/bp/version-15-hotfix/pr-48534
fix: update advance paid amount on unreconcile (backport #48534)
2025-07-29 20:52:07 +05:30
Ravibharathi
074a7065be fix: update advance paid amount on unreconcile
(cherry picked from commit 99f7eb38d3)
2025-07-29 15:06:20 +00:00
ruthra kumar
9f36531f2a Merge pull request #48847 from frappe/mergify/bp/version-15-hotfix/pr-48835
fix: include empty values in user permission (backport #48835)
2025-07-29 20:17:23 +05:30
l0gesh29
cfcd21d5c6 fix: include empty values in user permission
(cherry picked from commit f13d98fc7c)
2025-07-29 14:26:35 +00:00
rohitwaghchaure
5c34299b1e Merge pull request #48843 from frappe/mergify/bp/version-15-hotfix/pr-48743
fix(pick list): make warehouse editable (backport #48743)
2025-07-29 18:42:43 +05:30
rohitwaghchaure
4fda27fdba Merge pull request #48842 from frappe/mergify/bp/version-15-hotfix/pr-48841
fix: serial no warehouse for backdated stock reco (backport #48841)
2025-07-29 18:32:45 +05:30
ravibharathi656
6a5041042e fix(pick list): make warehouse editable
(cherry picked from commit f5beda48dc)
2025-07-29 12:55:17 +00:00
Rohit Waghchaure
b82aea4a87 fix: serial no warehouse for backdated stock reco
(cherry picked from commit 1deedc766c)
2025-07-29 12:46:52 +00:00
Khushi Rawat
21bdf6ef14 Merge pull request #48840 from khushi8112/finance-books-issue-when-asset-splitting
fix: finance books issue when asset splitting
2025-07-29 18:01:37 +05:30
khushi8112
bc1d3ea017 chore: remove print statement 2025-07-29 17:43:21 +05:30
khushi8112
1be071683a test: test assets after split 2025-07-29 17:39:48 +05:30
khushi8112
36f22f929d fix: append finance book row only when calculate depreciation is checked 2025-07-29 17:39:04 +05:30
ruthra kumar
1d85da43a6 Merge pull request #48838 from frappe/mergify/bp/version-15-hotfix/pr-48837
fix: unable to cancel PO if unreconciliation is done (backport #48837)
2025-07-29 17:17:35 +05:30
ruthra kumar
424baed077 fix: ignore is overridden by transaction.js upon clicking cancel
which overrides with 'Serial and Batch Bundle'

(cherry picked from commit cf70147c0d)
2025-07-29 11:34:31 +00:00
ruthra kumar
9508ae5044 Merge pull request #48836 from frappe/mergify/bp/version-15-hotfix/pr-48782
fix: attribute error in payment entry (backport #48782)
2025-07-29 17:03:55 +05:30
ljain112
1697ac0b57 chore: added test case for reconciliation_effect_date
(cherry picked from commit f7ee9ee967)
2025-07-29 11:13:12 +00:00
ljain112
3739e2ca5a fix: attribute error in payment entry
(cherry picked from commit dc841fe661)
2025-07-29 11:13:12 +00:00
Khushi Rawat
ec9747cc99 Merge pull request #48833 from khushi8112/bp-v15-pr-48649
fix: post gl entry on completion date of asset repair
2025-07-29 15:36:43 +05:30
Khushi Rawat
21f5541158 Merge pull request #48629 from khushi8112/update-value-after-depreciation-after-revaluation
fix: update asset value after revaluation cancellation
2025-07-29 15:33:33 +05:30
khushi8112
5a82b723c2 fix: post gl entry on completion date of asset repair 2025-07-29 15:17:30 +05:30
Mihir Kandoi
d7a9c7b161 Merge pull request #48828 from frappe/mergify/bp/version-15-hotfix/pr-48700
fix: prevent negative scrap quantity in Job Card (#48545) (backport #48700)
2025-07-29 14:26:05 +05:30
mergify[bot]
e1d7ec906f feat: Add non-negative constraint to workstation cost fields (backport #48557) (#48826)
* feat: Add non-negative constraint to workstation cost fields

(cherry picked from commit a2bb557570)

# Conflicts:
#	erpnext/manufacturing/doctype/workstation/workstation.json

* fix: Add non-negative constraint to job capacity field in workstation

(cherry picked from commit 92a12d7fea)

# Conflicts:
#	erpnext/manufacturing/doctype/workstation/workstation.json

* chore: resolve conflicts

---------

Co-authored-by: KerollesFathy <kerolles.f@outlook.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-07-29 08:53:25 +00:00
ruthra kumar
fe1292e3fa Merge pull request #48829 from frappe/mergify/bp/version-15-hotfix/pr-48593
fix(sales-order): disallow address edits after sales order is submitted (backport #48593)
2025-07-29 14:19:38 +05:30
Diptanil Saha
61e5c52419 Merge pull request #48830 from frappe/mergify/bp/version-15-hotfix/pr-48769
fix: set letter head from company if exists (backport #48769)
2025-07-29 13:56:33 +05:30
ravibharathi656
d4fae00b80 fix: set letter head from company if exists
(cherry picked from commit d163da171f)
2025-07-29 08:23:11 +00:00
Bhavan23
2073e98613 fix(sales-order): disallow address edits after sales order is submitted
(cherry picked from commit daac7c589b)
2025-07-29 08:10:07 +00:00
Vishist Singh Solanki
ae945b2e6f fix: prevent negative scrap quantity in Job Card (#48545)
(cherry picked from commit 94ec76545c)
2025-07-29 07:57:54 +00:00
ruthra kumar
84c0321785 Merge pull request #48827 from frappe/mergify/bp/version-15-hotfix/pr-47877
feat(cashflow): show opening/closing balance (backport #47877)
2025-07-29 13:25:18 +05:30
Mihir Kandoi
f0f8666baa Merge pull request #48682 from frappe/mergify/bp/version-15-hotfix/pr-48680
fix: patch to set default buying price list in material request (backport #48680)
2025-07-29 13:23:16 +05:30
Mihir Kandoi
5d7b8200fa Merge pull request #48681 from frappe/mergify/bp/version-15-hotfix/pr-48653
feat: button to recalculate costing and billing fields in project (backport #48653)
2025-07-29 13:22:59 +05:30
Logesh Periyasamy
7fd5b2b26a feat: show opening/closing balance in cash flow report (#47877)
* feat: add checkbox to carryforward opening balance

* fix: ignore period closing voucher

* chore: rename filter check box

* feat: add total for opening and closing balance

* fix: update section name

* fix: remove section rename

---------

Co-authored-by: venkat102 <venkatesharunachalam659@gmail.com>
(cherry picked from commit 88b9f8d68c)
2025-07-29 07:35:55 +00:00
Mihir Kandoi
85f1efe67e Merge pull request #48777 from frappe/mergify/bp/version-15-hotfix/pr-48773
fix: create job card for selected operations only (backport #48773)
2025-07-29 13:00:28 +05:30
ruthra kumar
d543a0c959 Merge pull request #48823 from frappe/mergify/bp/version-15-hotfix/pr-48757
fix: add patch for update subscription details (backport #48757)
2025-07-29 12:29:51 +05:30
l0gesh29
ebda396518 fix: update subscription details patch
(cherry picked from commit c7b1379a7f)
2025-07-29 06:38:09 +00:00
Mihir Kandoi
c086f43964 Merge pull request #48821 from frappe/mergify/bp/version-15-hotfix/pr-48820
fix: over billed purchase receipt status (backport #48820)
2025-07-29 12:03:28 +05:30
Mihir Kandoi
3336b5d55d Merge branch 'version-15-hotfix' into mergify/bp/version-15-hotfix/pr-48820 2025-07-29 11:48:27 +05:30
mergify[bot]
18b007dbf2 Merge pull request #48805 from frappe/mergify/bp/version-15-hotfix/pr-48676
fix: missing account in GL entries (subcontracting) (backport #48676)
2025-07-29 11:48:12 +05:30
Mihir Kandoi
1efdff0ad1 fix: over billed purchase receipt status
(cherry picked from commit 15e354f76e)
2025-07-29 06:02:50 +00:00
Mihir Kandoi
92e315c4e1 Merge pull request #48811 from frappe/mergify/bp/version-15-hotfix/pr-48804
fix: sql error in quality inspection (backport #48804)
2025-07-29 11:18:46 +05:30
Mihir Kandoi
22e6ea41f7 Merge pull request #48819 from frappe/mergify/bp/version-15-hotfix/pr-39555
ci: Add fake passing tests when CI is skipped (backport #39555)
2025-07-29 11:18:02 +05:30
ruthra kumar
1c81b2c684 Merge pull request #48815 from frappe/mergify/bp/version-15-hotfix/pr-48797
fix: avoid auto_repeat on duplicate (backport #48797)
2025-07-29 09:18:28 +05:30
ruthra kumar
907358a356 Merge pull request #48814 from frappe/mergify/bp/version-15-hotfix/pr-48796
fix: remove alias for order by field (backport #48796)
2025-07-29 09:17:55 +05:30
Mihir Kandoi
9c3011cb9f Potential fix for code scanning alert no. 9: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-07-28 22:23:42 +05:30
Mihir Kandoi
5840a242a6 Potential fix for code scanning alert no. 13: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-07-28 22:23:34 +05:30
Ankush Menat
4fd32fc3bd ci: Add fake passing tests when CI is skipped (#39555)
(cherry picked from commit dfda5ad673)
2025-07-28 16:50:44 +00:00
Diptanil Saha
2d4419c9d5 Merge pull request #48818 from frappe/mergify/bp/version-15-hotfix/pr-48778
fix: fetch payment term template from order (backport #48778)
2025-07-28 20:41:42 +05:30
ravibharathi656
ee8eb368e7 fix: fetch payment term template from order
(cherry picked from commit 5ed34d6ff9)
2025-07-28 14:55:42 +00:00
Diptanil Saha
95470b4262 Merge pull request #48816 from diptanilsaha/backport_48675
feat(internal-transaction): fetch valuation rate for internal transaction (backport #48675, #48794)
2025-07-28 18:45:30 +05:30
diptanilsaha
bf5b6a540f fix: patch to enable fetch_valuation_rate_for_internal_transaction 2025-07-28 18:25:16 +05:30
mithili
65a27066cc fix: avoid auto_repeat on duplicate
(cherry picked from commit 2c54f49cbc)
2025-07-28 12:29:13 +00:00
rohitwaghchaure
f772976676 Merge pull request #48809 from frappe/mergify/bp/version-15-hotfix/pr-48787
fix: concurrency issues (backport #48787)
2025-07-28 17:55:49 +05:30
rohitwaghchaure
5e6f957e97 Merge pull request #48808 from frappe/mergify/bp/version-15-hotfix/pr-48801
fix: incorrect GL entries (backport #48801)
2025-07-28 17:55:09 +05:30
diptanilsaha
b23f7a9d91 fix: fetch item valuation rate for internal transactions 2025-07-28 17:54:56 +05:30
l0gesh29
f8d1e5a0d3 feat: add fetch_valuation_rate_for_internal_transaction in accounts settings 2025-07-28 17:54:32 +05:30
l0gesh29
1ca81887ca chore: rename variable
(cherry picked from commit 8fdda31e45)
2025-07-28 12:10:10 +00:00
l0gesh29
193fbcba11 fix: remove alias for order by field
(cherry picked from commit 048b87328b)
2025-07-28 12:10:10 +00:00
ruthra kumar
794fac12a4 Merge pull request #48812 from frappe/mergify/bp/version-15-hotfix/pr-48480
Currency sales partner commision report (backport #48480)
2025-07-28 17:29:32 +05:30
mergify[bot]
9b59fb659b fix: use db_set in email_campaign (backport #45679) (#48806)
Bug fix in email_campaign's update_status function. (#45679)

During the scheduler event of set_email_campaign_status, the function calling update_status isn't saving the modified status field.

(cherry picked from commit 88e68bb803)

Co-authored-by: harshpwctech <84438948+harshpwctech@users.noreply.github.com>
2025-07-28 17:26:17 +05:30
mithili
8d25269de6 refactor: remove join in sql
(cherry picked from commit 9638151f9d)
2025-07-28 11:42:54 +00:00
mithili
8314059bf7 chore: update query to fetch company currency
(cherry picked from commit 998617879c)
2025-07-28 11:42:53 +00:00
mithili
622052b950 fix: get default company currency
(cherry picked from commit 984947f333)
2025-07-28 11:42:53 +00:00
mithili
49befc1dfd fix: set company as mandatory
(cherry picked from commit 2de2ea9f58)
2025-07-28 11:42:53 +00:00
Mihir Kandoi
3e92ae8bd0 fix: sql error in quality inspection
(cherry picked from commit 062b245e3f)
2025-07-28 11:24:29 +00:00
Rohit Waghchaure
ad75754ca6 fix: prevent concurrency issues
(cherry picked from commit a186b1266d)
2025-07-28 10:59:17 +00:00
Rohit Waghchaure
207d2ac63c fix: incorrect GL entries
(cherry picked from commit 4c273fcc99)
2025-07-28 10:59:06 +00:00
Mihir Kandoi
442fede0fe Merge pull request #48803 from frappe/mergify/bp/version-15-hotfix/pr-48793
fix: status in MR (material transfer) when using transit stock entries (backport #48793)
2025-07-28 16:04:11 +05:30
Mihir Kandoi
584b442824 fix: status in MR (material transfer) when using transit stock entries
(cherry picked from commit baa612bc72)
2025-07-28 10:03:28 +00:00
Mihir Kandoi
faa9006072 Merge pull request #48789 from mihir-kandoi/st44460
fix: error when trying to edit quantity of top most FG in bom creator
2025-07-28 14:53:19 +05:30
Assem Bahnasy
01fcd98c84 fix: Misclassification of Journal Voucher Entries in Customer Ledger Summary (#48041)
* fix: miscalculation of Invoiced Amount, Paid Amount, and Credit Amount in Customer Ledger Summary

* style: Apply ruff-format to customer_ledger_summary.py and ignore .venv/

* fix: Ensure .venv/ is ignored in .gitignore

* chore: removing backportrc line

* test: adding test_journal_voucher_against_return_invoice()

* fix: fixed test_journal_voucher_against_return_invoice function

* Revert .gitignore changes

---------

Co-authored-by: ruthra kumar <ruthra@erpnext.com>
2025-07-28 14:35:59 +05:30
Mihir Kandoi
bd7de515b1 fix: error when trying to edit quantity of top most FG in bom creator 2025-07-28 11:42:13 +05:30
Smit Vora
8d8d47b0d6 Merge pull request #48729 from frappe/mergify/bp/version-15-hotfix/pr-48382 2025-07-26 12:13:27 +05:30
Soni Karm
0cb2c41cba fix: enhance warehouse filter to support list and tuple values (#48755) 2025-07-26 11:32:23 +05:30
Shreyas Sojitra
23180dad42 fix: create job card for selected operations only
(cherry picked from commit 27e5344188)
2025-07-25 04:36:33 +00:00
Liuyang
284e45011e Fix: Procurement Tracker - No permission to read Employee #48765 2025-07-24 16:53:07 +08:00
Frappe PR Bot
ad45063c76 chore(release): Bumped to Version 15.71.1
## [15.71.1](https://github.com/frappe/erpnext/compare/v15.71.0...v15.71.1) (2025-07-24)

### Bug Fixes

* call hooks after gle & sle rename ([#48706](https://github.com/frappe/erpnext/issues/48706)) ([3d7185f](3d7185fad7))
2025-07-24 01:39:52 +00:00
ruthra kumar
c3188ff9a3 Merge pull request #48762 from frappe/mergify/bp/version-15/pr-48706
fix: call hooks on gle and sle rename (backport #48706)
2025-07-24 07:08:24 +05:30
Kitti U. @ Ecosoft
3d7185fad7 fix: call hooks after gle & sle rename (#48706)
(cherry picked from commit ed79adebc4)
2025-07-24 06:34:51 +05:30
mergify[bot]
fd441e1eff refactor: call hooks after gle & sle rename (backport #48706) (#48754)
refactor: call hooks after gle & sle rename (#48706)

(cherry picked from commit ed79adebc4)

Co-authored-by: Kitti U. @ Ecosoft <kittiu@gmail.com>
2025-07-23 18:37:14 +05:30
rohitwaghchaure
0588b68cec Merge pull request #48734 from frappe/mergify/bp/version-15-hotfix/pr-48720
fix: valuation for rejected materials (backport #48720)
2025-07-23 08:45:35 +05:30
rohitwaghchaure
c2140625f5 chore: fixed test case 2025-07-23 08:27:33 +05:30
Frappe PR Bot
32029f4dca chore(release): Bumped to Version 15.71.0
# [15.71.0](https://github.com/frappe/erpnext/compare/v15.70.2...v15.71.0) (2025-07-23)

### Bug Fixes

* add alias for order by field ([4bef3cc](4bef3cc92f))
* add validation for account key ([90fa7db](90fa7db13c))
* added serial no condition ([467fe1d](467fe1d72f))
* carry forward the delivered_by_supplier check to PO ([6fddf4c](6fddf4c5aa))
* do not consider cancelled SLEs in report ([32915cf](32915cf2b7))
* fetch sales invoice based on mode_of_payment in item-wise sales register ([d04c256](d04c256b73))
* job card linter error (backport [#47561](https://github.com/frappe/erpnext/issues/47561)) ([#48695](https://github.com/frappe/erpnext/issues/48695)) ([a139cd4](a139cd4b5e))
* performance issue while submitting the purchase invoice ([b9e6f52](b9e6f524e5))
* **period closing voucher:** closing account head debit and debit in account currency should be equal ([98bd880](98bd880c73))
* pos customer selection on new order ([#48623](https://github.com/frappe/erpnext/issues/48623)) ([a46cafe](a46cafe652))
* precision issue for Sales Incoming Rate ([3e53660](3e53660bba))
* **production plan:** add company filter to sub assembly warehouse ([e683703](e68370359f))
* resolve bundle item into line item if againt default supplier checked ([725f9ea](725f9ea012))
* resolve sql syntax on accounting dimension ([96a1444](96a1444e92))
* sales partner in pos invoice ([#48670](https://github.com/frappe/erpnext/issues/48670)) ([65efc7e](65efc7e950)), closes [#48667](https://github.com/frappe/erpnext/issues/48667) [#48669](https://github.com/frappe/erpnext/issues/48669)
* set delivery date if missing ([8f23ca5](8f23ca5c6b))
* show amount for exchange gain or loss account ([38b223e](38b223e732))
* stand-alone credit note gl entries ([93c2a67](93c2a67930))
* **transaction:** recalculate tax and total when quantity changes (backport [#48565](https://github.com/frappe/erpnext/issues/48565)) ([#48625](https://github.com/frappe/erpnext/issues/48625)) ([2b1fdba](2b1fdba7fd))
* update outstanding amount on payment reconcillation ([0d496bb](0d496bb05f))
* view ledger button of company on chart of accounts (backport [#48677](https://github.com/frappe/erpnext/issues/48677)) ([#48678](https://github.com/frappe/erpnext/issues/48678)) ([56f5ec9](56f5ec961f))

### Features

* consider process less when calculating pending qty in work order ([2b42848](2b42848376))

### Reverts

* do not set pay_to_recd_from to None ([ab79e5d](ab79e5d946))
2025-07-23 02:54:26 +00:00
ruthra kumar
f25aff7b97 Merge pull request #48745 from frappe/version-15-hotfix
chore: release v15
2025-07-23 08:23:03 +05:30
ruthra kumar
3825490f0d Merge pull request #48752 from frappe/mergify/bp/version-15-hotfix/pr-48650
fix: update outstanding amount on payment reconcillation (backport #48650)
2025-07-23 07:24:53 +05:30
ruthra kumar
0a1b815546 Merge pull request #48751 from frappe/mergify/bp/version-15-hotfix/pr-48732
fix: resolve sql syntax on accounting dimension (backport #48732)
2025-07-23 07:24:18 +05:30
ruthra kumar
3a94c6c86c Merge pull request #48747 from frappe/mergify/bp/version-15-hotfix/pr-48733
fix: add alias for order by field (backport #48733)
2025-07-23 06:53:15 +05:30
ravibharathi656
0d496bb05f fix: update outstanding amount on payment reconcillation
(cherry picked from commit 478766c600)
2025-07-23 01:23:13 +00:00
l0gesh29
96a1444e92 fix: resolve sql syntax on accounting dimension
(cherry picked from commit 1662b7c311)
2025-07-23 01:15:13 +00:00
ruthra kumar
f9d8f510a0 Merge pull request #48725 from frappe/mergify/bp/version-15-hotfix/pr-48671
revert: do not set pay_to_recd_from to None (backport #48671)
2025-07-22 17:57:46 +05:30
ruthra kumar
35bc733d28 Merge pull request #48726 from frappe/mergify/bp/version-15-hotfix/pr-48690
fix: set delivery date if missing (backport #48690)
2025-07-22 17:56:10 +05:30
l0gesh29
4bef3cc92f fix: add alias for order by field
(cherry picked from commit feaf39a812)
2025-07-22 12:25:17 +00:00
Smit Vora
176a124f1a chore: restore removed import as it's used in v15 2025-07-22 15:50:18 +05:30
ruthra kumar
d95306fd60 Merge pull request #48741 from frappe/mergify/bp/version-15-hotfix/pr-48665
fix: show amount for exchange gain or loss account (backport #48665)
2025-07-22 12:55:57 +05:30
l0gesh29
90fa7db13c fix: add validation for account key
(cherry picked from commit b6da350c20)
2025-07-22 06:44:06 +00:00
l0gesh29
38b223e732 fix: show amount for exchange gain or loss account
(cherry picked from commit 4f90f50eb2)
2025-07-22 06:44:06 +00:00
rohitwaghchaure
4453e447dc chore: fix conflicts 2025-07-22 09:57:07 +05:30
Rohit Waghchaure
d378e51492 fix: valuation for rejected materials
(cherry picked from commit b7039cc506)

# Conflicts:
#	erpnext/controllers/buying_controller.py
2025-07-22 04:18:22 +00:00
rohitwaghchaure
526c1e7c9a Merge pull request #48727 from frappe/mergify/bp/version-15-hotfix/pr-48704
fix(production plan): add company filter to sub assembly warehouse (backport #48704)
2025-07-21 20:04:42 +05:30
Karm Soni
9bf0d852ee fix: update get_data function to use item_query
(cherry picked from commit 8a97b39028)
2025-07-21 14:33:53 +00:00
Karm Soni
fb81202830 refactor: revert indentation
(cherry picked from commit 063c4e9720)
2025-07-21 14:33:52 +00:00
Karm Soni
a1aee44014 refactor: remove unused imports in stock_balance.py
(cherry picked from commit bc46045cc7)
2025-07-21 14:33:52 +00:00
Karm Soni
b57163b7be fix: warehouse filter query by chaining conditions
(cherry picked from commit 7a266113ed)
2025-07-21 14:33:52 +00:00
Karm Soni
1d52a8fb69 fix: handle empty warehouse condition in get_warehouse_condition function; typo;
(cherry picked from commit fca9843fc2)
2025-07-21 14:33:52 +00:00
Karm Soni
a7e8f404f7 fix: use the item_query for get_data
(cherry picked from commit 169caaf66f)
2025-07-21 14:33:51 +00:00
Karm Soni
fa01bdc490 fix: correct query filter assignment in stock ledger and balance reports
(cherry picked from commit e60c711fdc)
2025-07-21 14:33:51 +00:00
Karm Soni
62033b5c7a fix(test): update tests
(cherry picked from commit 0a71ca6739)
2025-07-21 14:33:51 +00:00
Karm Soni
ecf9e6e748 feat: update stock ledger report to support multi-select for warehouses and items
(cherry picked from commit f2afd98725)
2025-07-21 14:33:50 +00:00
Karm Soni
72e8ce0449 refactor: use existing functionality
(cherry picked from commit 2882576479)
2025-07-21 14:33:50 +00:00
Karm Soni
801cda3813 feat: enhance apply_warehouse_filter to support multiple warehouses in filters
(cherry picked from commit 2ff1dcc391)
2025-07-21 14:33:50 +00:00
Karm Soni
2b08c5b769 feat: update stock balance report to support multi-select for items and warehouses
(cherry picked from commit 0d2a88bafc)
2025-07-21 14:33:49 +00:00
ravibharathi656
e68370359f fix(production plan): add company filter to sub assembly warehouse
(cherry picked from commit 1728a95111)
2025-07-21 14:27:40 +00:00
ravibharathi656
8f23ca5c6b fix: set delivery date if missing
(cherry picked from commit cf6913891a)

# Conflicts:
#	erpnext/selling/doctype/sales_order/sales_order.py
2025-07-21 19:51:02 +05:30
ravibharathi656
e3ccdbb20b test: add test for pay_to_recd_from
(cherry picked from commit 7e12332ea5)
2025-07-21 14:10:08 +00:00
ravibharathi656
ab79e5d946 revert: do not set pay_to_recd_from to None
(cherry picked from commit 03d6550db3)
2025-07-21 14:10:08 +00:00
Mihir Kandoi
b607448fd8 Merge pull request #48699 from frappe/mergify/bp/version-15-hotfix/pr-48695 2025-07-18 21:50:00 +05:30
mergify[bot]
a139cd4b5e fix: job card linter error (backport #47561) (#48695)
* fix: job card linter error (#47561)

(cherry picked from commit 4174269091)

# Conflicts:
#	erpnext/manufacturing/doctype/work_order/work_order.py

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
(cherry picked from commit 4794e7acff)
2025-07-18 16:01:34 +00:00
Mihir Kandoi
8e91e6ac2c Merge pull request #48698 from frappe/revert-48695-mergify/bp/version-15-hotfix/pr-47561
Revert "fix: job card linter error (backport #47561)"
2025-07-18 21:27:35 +05:30
Mihir Kandoi
9501149bd8 Revert "fix: job card linter error (backport #47561) (#48695)"
This reverts commit 4794e7acff.
2025-07-18 21:26:28 +05:30
mergify[bot]
4794e7acff fix: job card linter error (backport #47561) (#48695)
* fix: job card linter error (#47561)

(cherry picked from commit 4174269091)

# Conflicts:
#	erpnext/manufacturing/doctype/work_order/work_order.py

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-07-18 21:26:21 +05:30
Mihir Kandoi
fd1c213a8d fix: patch to set default buying price list in material request (#48680)
* fix: patch to set default buying price list in material request

(cherry picked from commit 446264e496)
2025-07-18 11:14:15 +00:00
Mihir Kandoi
36a9f3b3e9 chore: rename recalculating to updating
(cherry picked from commit f6e16c1180)
2025-07-18 10:56:08 +00:00
Mihir Kandoi
6adc8a09c0 feat: option to recalculate costing and billing fields in project
(cherry picked from commit dd23d4c81b)
2025-07-18 10:56:07 +00:00
Mihir Kandoi
969c3a2b4d Merge pull request #48679 from frappe/mergify/bp/version-15-hotfix/pr-48631
feat: consider process less when calculating pending qty in work order (backport #48631)
2025-07-18 16:04:14 +05:30
Mihir Kandoi
2b42848376 feat: consider process less when calculating pending qty in work order
(cherry picked from commit 74c4ca68e5)
2025-07-18 10:24:04 +00:00
mergify[bot]
56f5ec961f fix: view ledger button of company on chart of accounts (backport #48677) (#48678)
fix: view ledger button of company on chart of accounts

(cherry picked from commit 98eb115746)

Co-authored-by: diptanilsaha <diptanil@frappe.io>
2025-07-18 15:48:39 +05:30
Diptanil Saha
65efc7e950 fix: sales partner in pos invoice (#48670)
* Merge pull request #48667 from diptanilsaha/fix_pos_sales_partner

fix: sales partner on pos invoice

* fix: remove incorrect report conditions and unset sales partner on consolidated sales invoice (#48669)

* fix: undo query changes for sales partner related reports

* fix: patch to remove sales partner from consolidated sales invoice
2025-07-18 11:09:32 +05:30
Frappe PR Bot
196c3fc656 chore(release): Bumped to Version 15.70.2
## [15.70.2](https://github.com/frappe/erpnext/compare/v15.70.1...v15.70.2) (2025-07-17)

### Bug Fixes

* stand-alone credit note gl entries ([84cf5ad](84cf5ad601))
2025-07-17 11:26:04 +00:00
rohitwaghchaure
1759e02c35 Merge pull request #48661 from frappe/mergify/bp/version-15/pr-48652
fix: stand-alone credit note gl entries (backport #48616) (backport #48652)
2025-07-17 16:54:50 +05:30
rohitwaghchaure
b83535bc31 Merge pull request #48658 from frappe/mergify/bp/version-15-hotfix/pr-48655
fix: precision issue for Sales Incoming Rate (backport #48655)
2025-07-17 16:23:35 +05:30
Rohit Waghchaure
84cf5ad601 fix: stand-alone credit note gl entries
(cherry picked from commit f3d6a64156)
(cherry picked from commit 93c2a67930)
2025-07-17 10:45:16 +00:00
Rohit Waghchaure
3e53660bba fix: precision issue for Sales Incoming Rate
(cherry picked from commit 7b99275ceb)
2025-07-17 10:05:43 +00:00
rohitwaghchaure
904cecfa91 Merge pull request #48652 from frappe/mergify/bp/version-15-hotfix/pr-48616
fix: stand-alone credit note gl entries (backport #48616)
2025-07-17 15:34:14 +05:30
Rohit Waghchaure
93c2a67930 fix: stand-alone credit note gl entries
(cherry picked from commit f3d6a64156)
2025-07-17 08:29:20 +00:00
Mihir Kandoi
179444f51e Merge pull request #48646 from frappe/mergify/bp/version-15-hotfix/pr-48645
fix: do not consider cancelled SLEs in report (backport #48645)
2025-07-17 12:01:31 +05:30
Mihir Kandoi
32915cf2b7 fix: do not consider cancelled SLEs in report
(cherry picked from commit 71578cb2ef)
2025-07-17 06:09:41 +00:00
Frappe PR Bot
83ab16b161 chore(release): Bumped to Version 15.70.1
## [15.70.1](https://github.com/frappe/erpnext/compare/v15.70.0...v15.70.1) (2025-07-16)

### Bug Fixes

* **period closing voucher:** closing account head debit and debit in account currency should be equal ([c554e2c](c554e2cce7))
2025-07-16 15:12:00 +00:00
ruthra kumar
8e16da08d0 Merge pull request #48641 from frappe/mergify/bp/version-15/pr-48612
fix(period closing voucher): closing account head debit and debit in account currency should be equal (backport #48612)
2025-07-16 20:40:46 +05:30
ruthra kumar
e8be903ed9 Merge pull request #48639 from frappe/mergify/bp/version-15-hotfix/pr-48612
fix(period closing voucher): closing account head debit and debit in account currency should be equal (backport #48612)
2025-07-16 20:31:21 +05:30
venkat102
c554e2cce7 fix(period closing voucher): closing account head debit and debit in account currency should be equal
(cherry picked from commit d6fd613272)
2025-07-16 14:46:26 +00:00
venkat102
98bd880c73 fix(period closing voucher): closing account head debit and debit in account currency should be equal
(cherry picked from commit d6fd613272)
2025-07-16 14:44:15 +00:00
rohitwaghchaure
7c2b32fb74 Merge pull request #48635 from frappe/mergify/bp/version-15-hotfix/pr-48633
fix: performance issue while submitting the purchase invoice (backport #48633)
2025-07-16 17:10:35 +05:30
Rohit Waghchaure
b9e6f524e5 fix: performance issue while submitting the purchase invoice
(cherry picked from commit 47979871de)
2025-07-16 11:16:36 +00:00
khushi8112
9fe1e6d0bd fix: test case 2025-07-16 16:03:07 +05:30
khushi8112
c7dcbed16f fix: test case 2025-07-16 15:41:42 +05:30
khushi8112
20bbfc504f fix: do not set value after depreciation as zero 2025-07-16 14:33:35 +05:30
khushi8112
3ab6a256e0 test: updated test case 2025-07-16 13:33:31 +05:30
khushi8112
d9b24a30eb fix: update asset value after revaluation cancellation 2025-07-16 13:12:51 +05:30
Khushi Rawat
7d686abe37 Merge pull request #48603 from frappe/mergify/bp/version-15-hotfix/pr-48360
fix: fetch sales invoice based on mode_of_payment in item-wise sales register (backport #48360)
2025-07-16 12:28:10 +05:30
mergify[bot]
2b1fdba7fd fix(transaction): recalculate tax and total when quantity changes (backport #48565) (#48625)
fix(transaction): recalculate tax and total when quantity changes

(cherry picked from commit ac7b6c6a3d)

Co-authored-by: Bhavan23 <bhavansathru.it@gmail.com>
2025-07-16 12:09:58 +05:30
Diptanil Saha
a46cafe652 fix: pos customer selection on new order (#48623) 2025-07-16 11:08:29 +05:30
Diptanil Saha
6b96a26462 Merge pull request #48614 from diptanilsaha/backport_48411
fix: employee search based on the fields mentioned in the employee doctype search fields (backport #48411)
2025-07-15 18:51:51 +05:30
rohitwaghchaure
01ed30ec01 Merge pull request #48599 from frappe/mergify/bp/version-15-hotfix/pr-48408
fix: resolve bundle item into line item if againt default supplier ch… (backport #48408)
2025-07-15 18:41:35 +05:30
rohitwaghchaure
34d4c32dfd Merge pull request #48613 from frappe/mergify/bp/version-15-hotfix/pr-48610
fix: added serial no condition (backport #48610)
2025-07-15 18:35:16 +05:30
Frappe PR Bot
b35f5aca91 chore(release): Bumped to Version 15.70.0
# [15.70.0](https://github.com/frappe/erpnext/compare/v15.69.2...v15.70.0) (2025-07-15)

### Bug Fixes

* employee_exit_translatability ([c894b18](c894b18165))
* **Employee:** add context to status in List View (backport [#48576](https://github.com/frappe/erpnext/issues/48576)) ([#48577](https://github.com/frappe/erpnext/issues/48577)) ([0e67487](0e67487508))
* error in available serial no report is no serial no present in company ([f1ff5a3](f1ff5a39ae))
* fetch item tax template after setting `base_net_rate` ([b5c4f61](b5c4f61fef))
* field name of price_list in material request ([ee6ef03](ee6ef03e24))
* fix party account field access ([54275db](54275dbe38))
* gross margin not set in project on submission of stock entry ([81e244b](81e244be55))
* handle cases where distributed discount amount is not set ([78df526](78df52606f))
* incorrect if condition ([a195152](a195152cc8))
* incorrect last sle for no batch wise valuation ([f2af2fe](f2af2fe63b))
* incorrect stock reco sle ([1322cc1](1322cc1378))
* incorrect test ([c57ca1a](c57ca1ae29))
* indicator in material_request_list.js ([4eb9f73](4eb9f73a52))
* invalid comparison error in sabb.py ([7ac5463](7ac546333a))
* make labels in serial_batch_prompt translatable ([c20a5b0](c20a5b01b4))
* missing parameter in precision function ([f80ad4e](f80ad4ee58))
* no attribute error in old subcontracting flow ([5fce819](5fce8191f9))
* pos adding item multiple times on item group filter ([3a70b5d](3a70b5d7fc))
* prevent creation of root accounts in account tree view ([817bcc7](817bcc78a0))
* prevent unnecessary db.commit ([00d39eb](00d39eb208))
* prevent unnecessary db.commit for contact insert [Linters] ([5cfeb29](5cfeb2978b))
* resolve sql error on dimension-wise accounts balance report (backport [#48477](https://github.com/frappe/erpnext/issues/48477)) ([#48478](https://github.com/frappe/erpnext/issues/48478)) ([243b533](243b533150))
* set value after depreciation when creating test asset ([4383d29](4383d29d7b))
* sort available batches based on expiry when merging SLEs with SABB and those without (backport [#48471](https://github.com/frappe/erpnext/issues/48471)) ([#48473](https://github.com/frappe/erpnext/issues/48473)) ([7a4c8d8](7a4c8d81e2))
* split and set value after depreciation ([3488ba0](3488ba05eb))
* stock settings save issue ([a5c49d1](a5c49d1e08))
* system was allowing credit notes with serial numbers for any customer ([4b6444e](4b6444e93b))
* updated test ([f35fd98](f35fd9842e))
* use `flt` value of bin qty ([fc8d451](fc8d451c55))
* use planned_qty instead of pending_qty to check if WO should be created against PP ([89660c9](89660c9070))

### Features

* add calculate_ageing_with option in summary reports ([72e154f](72e154fbb7))
* batch rate (valuation) in Batch-Wise Balance History report ([facd202](facd2027c3))
* **BOM:** improve tree display with item_name and qty (backport [#48176](https://github.com/frappe/erpnext/issues/48176)) ([#48494](https://github.com/frappe/erpnext/issues/48494)) ([fdd79c7](fdd79c7677))
* parent item group support in Stock Projected Qty report ([db525c2](db525c2538))
* update the modified date of the SLE after reposting ([8c77ea1](8c77ea16cf))

### Performance Improvements

* optimize code for subcontracting ([9aef305](9aef3058a6))
* use `cached_doc` for Account Settings ([f1cdd76](f1cdd76fc1))
2025-07-15 12:52:04 +00:00
ruthra kumar
e101849fb2 Merge pull request #48602 from frappe/version-15-hotfix
chore: release v15
2025-07-15 18:20:37 +05:30
rohitwaghchaure
873e0a4219 chore: fix conflicts 2025-07-15 18:05:31 +05:30
Rohit Waghchaure
467fe1d72f fix: added serial no condition
(cherry picked from commit bb7ddd11f1)
2025-07-15 12:35:27 +00:00
Sagar Vora
6b68a50cc4 Merge pull request #48608 from frappe/mergify/bp/version-15-hotfix/pr-48607
fix: fix party account field access (backport #48607)
2025-07-15 11:28:24 +00:00
ljain112
54275dbe38 fix: fix party account field access
(cherry picked from commit 0da8ed2daa)
2025-07-15 11:25:17 +00:00
rohitwaghchaure
9070c4302d Merge pull request #48598 from frappe/mergify/bp/version-15-hotfix/pr-48595
fix: system was allowing credit notes with serial numbers for any customer (backport #48595)
2025-07-15 16:35:29 +05:30
Khushi Rawat
47878758fc Merge pull request #48589 from khushi8112/update-value-after-depreciation-when-asset-splitting
fix: update value after depreciation when asset splitting
2025-07-15 15:54:08 +05:30
ravibharathi656
d04c256b73 fix: fetch sales invoice based on mode_of_payment in item-wise sales register
(cherry picked from commit 39cd7a29df)
2025-07-15 10:21:05 +00:00
khushi8112
c57ca1ae29 fix: incorrect test 2025-07-15 15:36:13 +05:30
ruthra kumar
0a9f45aacf Merge pull request #48600 from frappe/mergify/bp/version-15-hotfix/pr-48535
fix: handle cases where distributed discount amount is not set (backport #48535)
2025-07-15 15:34:45 +05:30
ljain112
78df52606f fix: handle cases where distributed discount amount is not set
(cherry picked from commit 816b84be02)
2025-07-15 09:38:01 +00:00
l0gesh29
6fddf4c5aa fix: carry forward the delivered_by_supplier check to PO
(cherry picked from commit f3460ec840)

# Conflicts:
#	erpnext/stock/doctype/packed_item/packed_item.json
2025-07-15 09:37:02 +00:00
l0gesh29
725f9ea012 fix: resolve bundle item into line item if againt default supplier checked
(cherry picked from commit ec07549d5e)
2025-07-15 09:37:02 +00:00
rohitwaghchaure
3100099cfa chore: fix conflicts 2025-07-15 15:04:18 +05:30
rohitwaghchaure
9aeb08f968 chore: fix conflicts 2025-07-15 15:03:41 +05:30
Rohit Waghchaure
4b6444e93b fix: system was allowing credit notes with serial numbers for any customer
(cherry picked from commit e073075834)

# Conflicts:
#	erpnext/stock/doctype/delivery_note/delivery_note.py
#	erpnext/stock/doctype/serial_no/serial_no.json
2025-07-15 09:28:35 +00:00
rohitwaghchaure
0151733a25 Merge pull request #48596 from frappe/mergify/bp/version-15-hotfix/pr-48588
perf: optimize code for subcontracting (backport #48588)
2025-07-15 14:55:57 +05:30
khushi8112
4383d29d7b fix: set value after depreciation when creating test asset 2025-07-15 14:34:00 +05:30
Mihir Kandoi
9aef3058a6 perf: optimize code for subcontracting
(cherry picked from commit bc6f69ad54)
2025-07-15 08:45:36 +00:00
khushi8112
68162f79a1 chore: run pre-commit 2025-07-15 13:40:00 +05:30
khushi8112
f35fd9842e fix: updated test 2025-07-15 13:30:35 +05:30
ruthra kumar
ba63f27e3c Merge pull request #48587 from frappe/mergify/bp/version-15-hotfix/pr-48582
fix: make labels in serial_batch_prompt translatable (backport #48582)
2025-07-15 12:23:51 +05:30
khushi8112
3488ba05eb fix: split and set value after depreciation 2025-07-15 12:22:50 +05:30
barredterra
c20a5b01b4 fix: make labels in serial_batch_prompt translatable
(cherry picked from commit 8757800888)
2025-07-15 06:25:37 +00:00
ruthra kumar
c20c9031f4 Merge pull request #48574 from frappe/mergify/bp/version-15-hotfix/pr-47892
refactor: use sql for building voucher balance in Receivable report (backport #47892)
2025-07-15 07:20:37 +05:30
Mihir Kandoi
16cb147d86 Merge pull request #48569 from frappe/mergify/bp/version-15-hotfix/pr-48542
fix: field name of price_list in material request (backport #48542)
2025-07-14 21:31:54 +05:30
mergify[bot]
0e67487508 fix(Employee): add context to status in List View (backport #48576) (#48577)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix(Employee): add context to status in List View (#48576)
2025-07-14 15:42:30 +02:00
rohitwaghchaure
2a8b8aa71d Merge pull request #48570 from frappe/mergify/bp/version-15-hotfix/pr-48568
fix: recalculate qty issue for stock reco (backport #48568)
2025-07-14 18:16:48 +05:30
ruthra kumar
3b38c6708c chore: rename method
(cherry picked from commit fc8ca7d82c)
2025-07-14 12:33:08 +00:00
ruthra kumar
72b9684742 refactor: build and pass match conditions as qb criterion
(cherry picked from commit 7efeed54de)
2025-07-14 12:33:08 +00:00
ruthra kumar
1d18a3b1a3 chore: drop unused utility method
(cherry picked from commit 52c0df24e3)
2025-07-14 12:33:08 +00:00
ruthra kumar
0bf5d3dae3 refactor: dynamic DB field types
(cherry picked from commit 9d0ebe3427)
2025-07-14 12:33:07 +00:00
ruthra kumar
d9b36ea37c refactor: better variable name
(cherry picked from commit 1a90c0d031)
2025-07-14 12:33:07 +00:00
ruthra kumar
2d2ca049fa refactor: prefix-ed names for easy distinction
(cherry picked from commit c5e35cc330)
2025-07-14 12:33:07 +00:00
ruthra kumar
1afb27231c refactor: utility to drop existing procedures and include cost center
(cherry picked from commit da32bb5f51)
2025-07-14 12:33:06 +00:00
ruthra kumar
a173c77859 refactor: order by posting date
(cherry picked from commit 7b7440d44a)
2025-07-14 12:33:06 +00:00
ruthra kumar
5d0d0c3102 refactor: call procedures based on config
(cherry picked from commit e90c6a33bd)
2025-07-14 12:33:06 +00:00
ruthra kumar
92d58a4e4c refactor: introduce sql option for data fetch
(cherry picked from commit 8cf8f6abad)
2025-07-14 12:33:05 +00:00
ruthra kumar
fee646fbe2 refactor: better readability
(cherry picked from commit 097e74979f)
2025-07-14 12:33:05 +00:00
ruthra kumar
c6d82b241e refactor: using sql procedures for AR report
- dynamic filters are passed

(cherry picked from commit e5920c57aa)
2025-07-14 12:33:04 +00:00
Mihir Kandoi
e3f7915c38 Merge pull request #48571 from frappe/mergify/bp/version-15-hotfix/pr-48526
fix: gross margin not set in project on submission of stock entry (backport #48526)
2025-07-14 17:31:46 +05:30
Mihir Kandoi
c39993a3ba chore: resolve conflicts 2025-07-14 17:22:00 +05:30
Mihir Kandoi
d8212d98ca chore: resolve conflicts 2025-07-14 17:20:28 +05:30
Mihir Kandoi
e3ba4320d6 chore: resolve conflicts 2025-07-14 17:19:40 +05:30
Mihir Kandoi
81e244be55 fix: gross margin not set in project on submission of stock entry
(cherry picked from commit ec578ba231)
2025-07-14 11:43:16 +00:00
Mihir Kandoi
a195152cc8 fix: incorrect if condition
(cherry picked from commit 668574e4f0)
2025-07-14 11:38:10 +00:00
Mihir Kandoi
1322cc1378 fix: incorrect stock reco sle
(cherry picked from commit 597d5aff02)
2025-07-14 11:38:09 +00:00
Mihir Kandoi
ee6ef03e24 fix: field name of price_list in material request
(cherry picked from commit adb9a6bc15)

# Conflicts:
#	erpnext/patches.txt
#	erpnext/stock/doctype/material_request/material_request.py
#	erpnext/stock/doctype/packed_item/packed_item.py
2025-07-14 11:14:53 +00:00
ruthra kumar
6e10b53e24 Merge pull request #48567 from frappe/mergify/bp/version-15-hotfix/pr-48321
fix: fetch item tax template after setting `base_net_rate` (backport #48321)
2025-07-14 15:06:32 +05:30
ljain112
b5c4f61fef fix: fetch item tax template after setting base_net_rate
(cherry picked from commit db654d5e59)
2025-07-14 09:32:56 +00:00
ruthra kumar
9750eba9db Merge pull request #48566 from frappe/mergify/bp/version-15-hotfix/pr-48435
fix: prevent creation of root accounts in account tree view (backport #48435)
2025-07-14 14:51:17 +05:30
ljain112
817bcc78a0 fix: prevent creation of root accounts in account tree view
(cherry picked from commit 3600f2f91b)
2025-07-14 09:15:45 +00:00
ruthra kumar
69f2d751a2 Merge pull request #48562 from frappe/mergify/bp/version-15-hotfix/pr-48540
feat: add calculate_ageing_with option in summary reports (backport #48540)
2025-07-14 11:42:13 +05:30
ruthra kumar
9287e9a2ca Merge pull request #48556 from frappe/mergify/bp/version-15-hotfix/pr-48550
chore: fix flacky test and remove redundant code (backport #48550)
2025-07-14 11:41:36 +05:30
l0gesh29
72e154fbb7 feat: add calculate_ageing_with option in summary reports
(cherry picked from commit a3834eef46)
2025-07-14 06:08:52 +00:00
Sagar Vora
d5faae3e7c Merge pull request #48081 from frappe/mergify/bp/version-15-hotfix/pr-48048
fix: use `flt` value of bin qty (backport #48048)
2025-07-14 05:17:07 +00:00
Sagar Vora
f4a79bb760 Merge pull request #48537 from frappe/mergify/bp/version-15-hotfix/pr-48495 2025-07-14 05:15:01 +00:00
ljain112
153df4eca5 chore: resolve conflicts 2025-07-13 18:16:49 +05:30
ljain112
8f6cd40c7b chore: return doc if item already exists for test
(cherry picked from commit e6b9e82b2f)
2025-07-13 11:51:32 +00:00
ljain112
567f7b4d71 chore: fix flacky test and remove redundant code
(cherry picked from commit de8c3ba968)

# Conflicts:
#	erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
2025-07-13 11:51:32 +00:00
Frappe PR Bot
cad5f39b7f chore(release): Bumped to Version 15.69.2
## [15.69.2](https://github.com/frappe/erpnext/compare/v15.69.1...v15.69.2) (2025-07-11)

### Bug Fixes

* incorrect last sle for no batch wise valuation ([35451fd](35451fd298))
2025-07-11 09:55:30 +00:00
rohitwaghchaure
1e2845c277 Merge pull request #48527 from frappe/mergify/bp/version-15/pr-48525
fix: incorrect last sle for no batch wise valuation (backport #48512) (backport #48525)
2025-07-11 15:23:58 +05:30
ljain112
f1cdd76fc1 perf: use cached_doc for Account Settings
(cherry picked from commit 751f3abd95)
2025-07-11 09:15:52 +00:00
Asmita Hase
715f4025cc Merge pull request #48531 from frappe/mergify/bp/version-15-hotfix/pr-48395
fix: employee_exit_translatability (backport #48395)
2025-07-11 12:37:17 +05:30
mahsem
c894b18165 fix: employee_exit_translatability
(cherry picked from commit 80d6779210)
2025-07-11 06:33:22 +00:00
Rohit Waghchaure
35451fd298 fix: incorrect last sle for no batch wise valuation
(cherry picked from commit 93d3eb662f)
(cherry picked from commit f2af2fe63b)
2025-07-11 05:49:11 +00:00
rohitwaghchaure
43e4c00e1c Merge pull request #48525 from frappe/mergify/bp/version-15-hotfix/pr-48512
fix: incorrect last sle for no batch wise valuation (backport #48512)
2025-07-11 11:18:09 +05:30
Rohit Waghchaure
f2af2fe63b fix: incorrect last sle for no batch wise valuation
(cherry picked from commit 93d3eb662f)
2025-07-11 05:33:01 +00:00
Mihir Kandoi
76fe861281 Merge pull request #48516 from frappe/mergify/bp/version-15-hotfix/pr-48514
fix: no attribute error in old subcontracting flow (backport #48514)
2025-07-11 10:23:39 +05:30
Mihir Kandoi
39e2c87955 Merge pull request #48515 from frappe/mergify/bp/version-15-hotfix/pr-48513
fix: error in available serial no report if no serial no present in company (backport #48513)
2025-07-11 10:23:10 +05:30
Mihir Kandoi
5fce8191f9 fix: no attribute error in old subcontracting flow
(cherry picked from commit 51751a7a05)
2025-07-10 17:33:10 +00:00
Mihir Kandoi
f1ff5a39ae fix: error in available serial no report is no serial no present in company
(cherry picked from commit 0ae60b8b61)
2025-07-10 17:21:58 +00:00
Mihir Kandoi
f70ce62f2a Merge pull request #48504 from frappe/mergify/bp/version-15-hotfix/pr-48503
fix: invalid comparison error in sabb.py (backport #48503)
2025-07-10 21:36:56 +05:30
Mihir Kandoi
36af50b2ce Merge pull request #48511 from frappe/mergify/bp/version-15-hotfix/pr-48510
fix: missing parameter in precision function (backport #48510)
2025-07-10 21:36:08 +05:30
Mihir Kandoi
f80ad4ee58 fix: missing parameter in precision function
(cherry picked from commit 3886641887)
2025-07-10 13:39:28 +00:00
Diptanil Saha
5f41abbdf7 Merge pull request #48507 from frappe/mergify/bp/version-15-hotfix/pr-48506
fix: pos adding item multiple times on applying item group filter (backport #48506)
2025-07-10 12:42:00 +05:30
diptanilsaha
3a70b5d7fc fix: pos adding item multiple times on item group filter
(cherry picked from commit e9f99e5a3f)
2025-07-10 07:09:28 +00:00
ruthra kumar
0a447caa8e Merge pull request #48505 from frappe/mergify/bp/version-15-hotfix/pr-45300
fix: prevent unnecessary db.commit for contact insert (backport #45300)
2025-07-10 11:34:12 +05:30
HarryPaulo
5cfeb2978b fix: prevent unnecessary db.commit for contact insert [Linters]
(cherry picked from commit 87de5c7450)
2025-07-10 05:43:14 +00:00
HarryPaulo
00d39eb208 fix: prevent unnecessary db.commit
(cherry picked from commit 5f15b0b65b)
2025-07-10 05:43:14 +00:00
Mihir Kandoi
7ac546333a fix: invalid comparison error in sabb.py
(cherry picked from commit ec1faf02ed)
2025-07-10 05:35:48 +00:00
Mihir Kandoi
c1334ea2cb Merge pull request #48501 from frappe/mergify/bp/version-15-hotfix/pr-48499 2025-07-09 21:44:35 +05:30
Mihir Kandoi
89660c9070 fix: use planned_qty instead of pending_qty to check if WO should be created against PP
(cherry picked from commit b11bf8eb79)
2025-07-09 15:56:34 +00:00
Frappe PR Bot
76f7eb0f9f chore(release): Bumped to Version 15.69.1
## [15.69.1](https://github.com/frappe/erpnext/compare/v15.69.0...v15.69.1) (2025-07-09)

### Bug Fixes

* use planned_qty instead of pending_qty to check if WO should be created against PP ([9967b1c](9967b1ce4a))
2025-07-09 15:40:37 +00:00
Mihir Kandoi
9c34b90328 Merge pull request #48500 from frappe/mergify/bp/version-15/pr-48499
fix: use planned_qty instead of pending_qty to check if WO should be created against PP (backport #48499)
2025-07-09 21:09:06 +05:30
Mihir Kandoi
9967b1ce4a fix: use planned_qty instead of pending_qty to check if WO should be created against PP
(cherry picked from commit b11bf8eb79)
2025-07-09 15:35:22 +00:00
Frappe PR Bot
0854333e42 chore(release): Bumped to Version 15.69.0
# [15.69.0](https://github.com/frappe/erpnext/compare/v15.68.0...v15.69.0) (2025-07-09)

### Features

* batch rate (valuation) in Batch-Wise Balance History report ([ba7e0b9](ba7e0b9506))
2025-07-09 15:16:52 +00:00
rohitwaghchaure
48e0ce1132 Merge pull request #48498 from frappe/mergify/bp/version-15/pr-48489
feat: batch rate (valuation) in Batch-Wise Balance History report (backport #48487) (backport #48489)
2025-07-09 20:44:29 +05:30
Rohit Waghchaure
ba7e0b9506 feat: batch rate (valuation) in Batch-Wise Balance History report
(cherry picked from commit 8a2a845a16)
(cherry picked from commit facd2027c3)
2025-07-09 14:16:27 +00:00
rohitwaghchaure
4d10cb2727 Merge pull request #48497 from frappe/mergify/bp/version-15-hotfix/pr-48490
feat: update the modified date of the SLE after reposting (backport #48490)
2025-07-09 19:45:12 +05:30
Rohit Waghchaure
8c77ea16cf feat: update the modified date of the SLE after reposting
(cherry picked from commit c2cd4934e7)
2025-07-09 13:52:15 +00:00
rohitwaghchaure
2c59874fd8 Merge pull request #48492 from frappe/mergify/bp/version-15-hotfix/pr-48488
feat: parent item group support in Stock Projected Qty report (backport #48488)
2025-07-09 18:59:38 +05:30
mergify[bot]
fdd79c7677 feat(BOM): improve tree display with item_name and qty (backport #48176) (#48494)
Co-authored-by: Patrick Eißler <77415730+PatrickDEissler@users.noreply.github.com>
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-07-09 14:13:24 +02:00
Rohit Waghchaure
db525c2538 feat: parent item group support in Stock Projected Qty report
(cherry picked from commit 6e80d89d13)
2025-07-09 11:20:04 +00:00
rohitwaghchaure
142de2e2a7 Merge pull request #48489 from frappe/mergify/bp/version-15-hotfix/pr-48487
feat: batch rate (valuation) in Batch-Wise Balance History report (backport #48487)
2025-07-09 16:48:05 +05:30
Rohit Waghchaure
facd2027c3 feat: batch rate (valuation) in Batch-Wise Balance History report
(cherry picked from commit 8a2a845a16)
2025-07-09 10:59:11 +00:00
rohitwaghchaure
90979860cb Merge pull request #48482 from frappe/mergify/bp/version-15-hotfix/pr-48481
fix: stock settings save issue (backport #48481)
2025-07-09 14:16:18 +05:30
Rohit Waghchaure
a5c49d1e08 fix: stock settings save issue
(cherry picked from commit 64ae1ec367)
2025-07-09 06:34:10 +00:00
mergify[bot]
243b533150 fix: resolve sql error on dimension-wise accounts balance report (backport #48477) (#48478)
fix: resolve sql error on dimension-wise accounts balance report (#48477)

(cherry picked from commit c714b724da)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-07-08 23:50:20 +05:30
Mihir Kandoi
85cb234376 Merge pull request #48476 from frappe/mergify/bp/version-15-hotfix/pr-48475
fix: indicator in material_request_list.js (backport #48475)
2025-07-08 23:07:32 +05:30
Mihir Kandoi
4eb9f73a52 fix: indicator in material_request_list.js
(cherry picked from commit d10647a592)
2025-07-08 16:46:16 +00:00
mergify[bot]
7a4c8d81e2 fix: sort available batches based on expiry when merging SLEs with SABB and those without (backport #48471) (#48473)
* fix: sort available batches based on expiry

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-07-08 21:23:30 +05:30
Frappe PR Bot
a94a13a7c1 chore(release): Bumped to Version 15.68.0
# [15.68.0](https://github.com/frappe/erpnext/compare/v15.67.0...v15.68.0) (2025-07-08)

### Bug Fixes

* add company field on POS Invoice Merge Log (backport [#48357](https://github.com/frappe/erpnext/issues/48357)) ([#48414](https://github.com/frappe/erpnext/issues/48414)) ([26db582](26db582499))
* Add company validation to company related fields in Process Statement Of Accounts ([5362648](536264896e))
* add not specified key for None respresented customer_group and territory ([8371daf](8371dafb1a))
* add selling price validation on update item ([a10e394](a10e3948b2))
* address not found when creating internal PR from DN ([f1621d1](f1621d15ff))
* consider empty string in previous doc validation ([b2de9cd](b2de9cdef2))
* cost center for payment entry against advance payment doctypes in accounts Payable/Receivable report ([3f004db](3f004db14f))
* duplicate items being created when fetching items from warehouse in stock reco ([818ddc0](818ddc0b8c))
* fetch from parent optional in inventory dimension ([ed77c15](ed77c15ebc))
* get fiscal year based on date ([177b23c](177b23c624))
* incorrect pending qty when creating PI from PO and PI rates differ from PO (backport [#48173](https://github.com/frappe/erpnext/issues/48173)) ([#48340](https://github.com/frappe/erpnext/issues/48340)) ([8eede1d](8eede1d266))
* item list and project not being set in work order when created from material request ([5cd36c3](5cd36c318b))
* job card material request/transfer buttons UI overlap ([09f8660](09f866022b))
* LCV from PR order mismatch ([74948aa](74948aabda))
* make labels in error message translatable (backport [#48327](https://github.com/frappe/erpnext/issues/48327)) ([#48436](https://github.com/frappe/erpnext/issues/48436)) ([6b41dc2](6b41dc2fed))
* multiple fixes related Deferred Accounting ([a4633d6](a4633d6e75))
* pos recent order display customer code and name (backport [#48379](https://github.com/frappe/erpnext/issues/48379)) ([#48388](https://github.com/frappe/erpnext/issues/48388)) ([f25097d](f25097da1d))
* **Quotation:** hide buttons if user cannot use them (backport [#48115](https://github.com/frappe/erpnext/issues/48115)) ([#48405](https://github.com/frappe/erpnext/issues/48405)) ([a2436e4](a2436e4b6e))
* rate not being fetched for product bundles in material request ([cfedaf5](cfedaf5dc1))
* rename journal entry title on update ([b7b5f6a](b7b5f6acf3))
* unnecessary primary button ([b1abcd5](b1abcd5577))
* update condition for blank tree fields in pricing rule ([f2d644b](f2d644ba29))
* update item reference in quality inspection ([65c277f](65c277fd27))
* update payment request outstanding on unreconciliation ([450061c](450061c7db))
* use default buying price list when price list is falsy ([a336e19](a336e19bb8))
* valuation rate of raw materials in subcontracting receipt ([4545213](4545213adc))

### Features

* add price list field to material request (backport [#48425](https://github.com/frappe/erpnext/issues/48425)) ([#48429](https://github.com/frappe/erpnext/issues/48429)) ([d4700e5](d4700e5560))
* add subject field to project ([#48368](https://github.com/frappe/erpnext/issues/48368)) ([9a538c6](9a538c6843))

### Reverts

* do not convert exchange gain/loss amount to foreign currency ([d0d1d63](d0d1d63d31))
* Revert "fix: stock reco qty with inventory dimension ([#47918](https://github.com/frappe/erpnext/issues/47918))" ([9a99ccc](9a99ccc166))
2025-07-08 13:01:14 +00:00
ruthra kumar
e573c6094a Merge pull request #48462 from frappe/version-15-hotfix
chore: release v15
2025-07-08 18:29:42 +05:30
ruthra kumar
524619e0b4 Merge pull request #48467 from frappe/mergify/bp/version-15-hotfix/pr-48259
fix: add not specified key for None respresented customer_group and t… (backport #48259)
2025-07-08 17:48:30 +05:30
ruthra kumar
5f5fa2f8e1 Merge pull request #48466 from frappe/mergify/bp/version-15-hotfix/pr-48378
fix: update item reference in quality inspection (backport #48378)
2025-07-08 17:48:17 +05:30
pugazhendhivelu
65c277fd27 fix: update item reference in quality inspection
(cherry picked from commit 9da5010265)

# Conflicts:
#	erpnext/public/js/controllers/transaction.js
2025-07-08 17:16:50 +05:30
l0gesh29
8371dafb1a fix: add not specified key for None respresented customer_group and territory
(cherry picked from commit 24cc711a70)

# Conflicts:
#	erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
2025-07-08 17:13:30 +05:30
ruthra kumar
f8bc0e47ff Merge pull request #48464 from frappe/mergify/bp/version-15-hotfix/pr-48402
fix: rename journal entry title on update (backport #48402)
2025-07-08 17:11:27 +05:30
ruthra kumar
d3a95f04cc Merge pull request #48470 from frappe/mergify/bp/version-15-hotfix/pr-48469
chore: better label for checkbox (backport #48469)
2025-07-08 17:10:50 +05:30
ruthra kumar
5f63794739 chore: better label for checkbox
(cherry picked from commit 8c2e40e291)
2025-07-08 11:40:08 +00:00
ruthra kumar
41bca34f6a Merge pull request #48468 from frappe/mergify/bp/version-15-hotfix/pr-48427
fix: Add company validation to company related fields in Process Statement Of Accounts (backport #48427)
2025-07-08 16:23:47 +05:30
ruthra kumar
f4b7093838 Merge pull request #48465 from frappe/mergify/bp/version-15-hotfix/pr-48359
fix: get fiscal year based on date (backport #48359)
2025-07-08 16:21:03 +05:30
ljain112
536264896e fix: Add company validation to company related fields in Process Statement Of Accounts
(cherry picked from commit 4e45e69247)
2025-07-08 10:37:17 +00:00
l0gesh29
177b23c624 fix: get fiscal year based on date
(cherry picked from commit efb8e7c0e4)
2025-07-08 10:26:26 +00:00
ravibharathi656
f81dba6380 chore: add none value
(cherry picked from commit 9e633bddef)
2025-07-08 10:25:18 +00:00
ravibharathi656
b7b5f6acf3 fix: rename journal entry title on update
(cherry picked from commit acb9829159)
2025-07-08 10:25:18 +00:00
ruthra kumar
d60d8a2625 Merge pull request #48457 from frappe/mergify/bp/version-15-hotfix/pr-48361
revert: do not convert exchange gain/loss amount to foreign currency (backport #48361)
2025-07-08 15:45:34 +05:30
ruthra kumar
e0efe922a6 Merge pull request #48459 from frappe/mergify/bp/version-15-hotfix/pr-48328
fix: update condition for blank tree fields in pricing rule (backport #48328)
2025-07-08 15:44:42 +05:30
mergify[bot]
500972e8aa refactor: remove do_reposting_for_each_stock_transaction feature (backport #48444) (#48452)
* refactor: remove do_reposting_for_each_stock_transaction feature

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-07-08 15:05:35 +05:30
Mihir Kandoi
b833dfab9d Merge pull request #48460 from frappe/mergify/bp/version-15-hotfix/pr-48456
fix: duplicate items being created when fetching items from warehouse in stock reco (backport #48456)
2025-07-08 15:05:11 +05:30
Mihir Kandoi
818ddc0b8c fix: duplicate items being created when fetching items from warehouse in stock reco
(cherry picked from commit 73f6c29559)
2025-07-08 09:01:47 +00:00
venkat102
d0d1d63d31 revert: do not convert exchange gain/loss amount to foreign currency
(cherry picked from commit c17ae703c7)

# Conflicts:
#	erpnext/accounts/report/general_ledger/test_general_ledger.py
2025-07-08 14:30:10 +05:30
ljain112
f2d644ba29 fix: update condition for blank tree fields in pricing rule
(cherry picked from commit 7e0e9db4d2)
2025-07-08 08:53:35 +00:00
ruthra kumar
9e831bbfc6 Merge pull request #48448 from frappe/mergify/bp/version-15-hotfix/pr-48326
fix: cost center for payment entry against advance payment doctypes in accounts payable/rece (backport #48326)
2025-07-08 14:06:28 +05:30
ruthra kumar
7690efa4f7 Merge pull request #48454 from frappe/mergify/bp/version-15-hotfix/pr-48416
refactor: remove duplicate reconciliation date logic (backport #48416)
2025-07-08 13:50:32 +05:30
ljain112
00669661e5 chore: resolve conflicts 2025-07-08 13:19:03 +05:30
ljain112
2ab1b42033 refactor: remove duplicate reconciliation date logic
(cherry picked from commit 398406082a)
2025-07-08 07:34:23 +00:00
ruthra kumar
2c156b58f0 Merge pull request #48453 from frappe/mergify/bp/version-15-hotfix/pr-48343
fix: consider empty string in previous doc validation (backport #48343)
2025-07-08 12:59:52 +05:30
Diptanil Saha
c617b343b3 Merge pull request #48449 from frappe/mergify/bp/version-15-hotfix/pr-48403
fix: add selling price validation on update item (backport #48403)
2025-07-08 12:41:58 +05:30
l0gesh29
b2de9cdef2 fix: consider empty string in previous doc validation
(cherry picked from commit dd43594ad6)
2025-07-08 07:11:51 +00:00
rohitwaghchaure
ae59908f0a Merge pull request #48443 from frappe/mergify/bp/version-15-hotfix/pr-48441
Revert "fix: stock reco qty with inventory dimension" (backport #48441)
2025-07-08 12:30:40 +05:30
l0gesh29
a10e3948b2 fix: add selling price validation on update item
(cherry picked from commit 327d067305)
2025-07-08 06:45:18 +00:00
Mihir Kandoi
fbe1f449d8 Merge pull request #48447 from frappe/mergify/bp/version-15-hotfix/pr-48332
fix: valuation rate of raw materials in subcontracting receipt (backport #48332)
2025-07-08 12:14:53 +05:30
Mihir Kandoi
b3fa0ac596 Merge pull request #48446 from frappe/mergify/bp/version-15-hotfix/pr-48445
fix: use default buying price list when price list is falsy (backport #48445)
2025-07-08 12:14:36 +05:30
ljain112
82d03e2617 refactor: function to fetch advance payment doctypes
(cherry picked from commit 48e8e85617)

# Conflicts:
#	erpnext/accounts/doctype/journal_entry/journal_entry.py
#	erpnext/accounts/doctype/payment_entry/payment_entry.py
#	erpnext/accounts/doctype/payment_request/payment_request.py
#	erpnext/accounts/doctype/unreconcile_payment/unreconcile_payment.py
#	erpnext/accounts/utils.py
#	erpnext/controllers/accounts_controller.py
2025-07-08 06:36:06 +00:00
ljain112
3f004db14f fix: cost center for payment entry against advance payment doctypes in accounts Payable/Receivable report
(cherry picked from commit 8f19f14004)
2025-07-08 06:36:06 +00:00
Mihir Kandoi
4545213adc fix: valuation rate of raw materials in subcontracting receipt
(cherry picked from commit 84ea6afd01)
2025-07-08 06:28:44 +00:00
Mihir Kandoi
a336e19bb8 fix: use default buying price list when price list is falsy
(cherry picked from commit 27c73cf9e9)
2025-07-08 06:26:09 +00:00
rohitwaghchaure
9a99ccc166 Revert "fix: stock reco qty with inventory dimension (#47918)"
This reverts commit 342cebc778.

(cherry picked from commit 8ba66c9833)
2025-07-08 05:08:04 +00:00
ruthra kumar
9935f04bde Merge pull request #48440 from frappe/mergify/bp/version-15-hotfix/pr-48324
fix: update payment request outstanding on unreconciliation (backport #48324)
2025-07-08 10:33:36 +05:30
ruthra kumar
cc5c4a3f9a chore: resolve conflict 2025-07-08 10:17:43 +05:30
rohitwaghchaure
0fefccc128 Merge pull request #48434 from frappe/mergify/bp/version-15-hotfix/pr-48432
fix: fetch from parent optional in inventory dimension (backport #48432)
2025-07-08 09:58:27 +05:30
ljain112
a8448f9e60 chore: fix test case for payment request
(cherry picked from commit 31d12517f0)
2025-07-08 04:16:41 +00:00
ljain112
450061c7db fix: update payment request outstanding on unreconciliation
(cherry picked from commit 8098229b55)

# Conflicts:
#	erpnext/accounts/doctype/payment_request/test_payment_request.py
2025-07-08 04:16:40 +00:00
rohitwaghchaure
5df8ad6ef1 chore: fix conflicts 2025-07-08 08:33:33 +05:30
mergify[bot]
6b41dc2fed fix: make labels in error message translatable (backport #48327) (#48436)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix: make labels in error message translatable (#48327)
2025-07-07 22:36:48 +02:00
Rohit Waghchaure
ed77c15ebc fix: fetch from parent optional in inventory dimension
(cherry picked from commit 8aac6a6b18)

# Conflicts:
#	erpnext/stock/doctype/inventory_dimension/inventory_dimension.json
2025-07-07 11:52:53 +00:00
mergify[bot]
d4700e5560 feat: add price list field to material request (backport #48425) (#48429)
* feat: add price list field to material request

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-07-07 15:50:04 +05:30
Mihir Kandoi
f4c9a6e59c Merge pull request #48430 from frappe/mergify/bp/version-15-hotfix/pr-48428
fix: address not found when creating internal PR from DN (backport #48428)
2025-07-07 15:43:22 +05:30
Mihir Kandoi
f1621d15ff fix: address not found when creating internal PR from DN
(cherry picked from commit 97c48ed6d2)
2025-07-07 09:51:19 +00:00
Mihir Kandoi
8638654c13 Merge pull request #48426 from frappe/mergify/bp/version-15-hotfix/pr-48424
fix: item list and project not being set in work order when created from material request (backport #48424)
2025-07-07 15:05:15 +05:30
Mihir Kandoi
5cd36c318b fix: item list and project not being set in work order when created from material request
(cherry picked from commit 099a5fbad9)
2025-07-07 08:49:26 +00:00
mergify[bot]
8eede1d266 fix: incorrect pending qty when creating PI from PO and PI rates differ from PO (backport #48173) (#48340)
* fix: incorrect pending qty when creating PI from PO and PI rates differ from PO

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-07-06 21:40:26 +05:30
mergify[bot]
26db582499 fix: add company field on POS Invoice Merge Log (backport #48357) (#48414)
* fix: add company field on POS Invoice Merge Log

(cherry picked from commit 109658731b)

# Conflicts:
#	erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.json

* fix: patch for updating company name on existing pos merge log records

(cherry picked from commit d46b68230c)

# Conflicts:
#	erpnext/patches.txt

* fix: pass company on create_merge_logs

(cherry picked from commit b4b473185f)

* test: test company fetching from POS Closing Entry

(cherry picked from commit 9548f341bf)

# Conflicts:
#	erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py

* chore: remove conflicts

---------

Co-authored-by: Kavin <78342682+kavin0411@users.noreply.github.com>
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2025-07-06 15:25:59 +05:30
ruthra kumar
89458f07c9 Merge pull request #48415 from frappe/mergify/bp/version-15-hotfix/pr-47805
fix: multiple fixes related Deferred Accounting (backport #47805)
2025-07-06 15:25:16 +05:30
Lakshit Jain
a4633d6e75 fix: multiple fixes related Deferred Accounting
(cherry picked from commit 277c1101fc)
2025-07-06 14:59:23 +05:30
Mihir Kandoi
dbe107345c Merge pull request #48404 from frappe/mergify/bp/version-15-hotfix/pr-48368
feat: add subject field to project (backport #48368)
2025-07-05 12:07:00 +05:30
mergify[bot]
a2436e4b6e fix(Quotation): hide buttons if user cannot use them (backport #48115) (#48405)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix(Quotation): hide buttons if user cannot use them (#48115)
2025-07-04 20:10:27 +02:00
Mihir Kandoi
9a538c6843 feat: add subject field to project (#48368)
* feat: add subject field to project

(cherry picked from commit 407fdab487)
2025-07-04 16:10:19 +00:00
Mihir Kandoi
d8f5924eb2 Merge pull request #48373 from mihir-kandoi/st42781
fix: LCV from PR order mismatch
2025-07-04 15:30:29 +05:30
Mihir Kandoi
9312a5b762 Merge pull request #48396 from frappe/mergify/bp/version-15-hotfix/pr-48372
fix: rate not being fetched for product bundles in material request (backport #48372)
2025-07-04 15:30:09 +05:30
Mihir Kandoi
edef03ac22 chore: resolve conflict 2025-07-04 12:49:45 +05:30
Mihir Kandoi
74948aabda fix: LCV from PR order mismatch 2025-07-04 12:48:15 +05:30
Mihir Kandoi
cfedaf5dc1 fix: rate not being fetched for product bundles in material request
(cherry picked from commit 45c7bac2d0)

# Conflicts:
#	erpnext/stock/doctype/packed_item/packed_item.py
2025-07-04 07:16:39 +00:00
mergify[bot]
f25097da1d fix: pos recent order display customer code and name (backport #48379) (#48388)
fix: pos recent order display customer code and name (#48379)

(cherry picked from commit 5f721f01d3)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-07-04 12:40:19 +05:30
mergify[bot]
3952f5d913 chore: fix flaky test in Tax Withholding Details (backport #48375) (#48394)
* chore: fix flaky test in Tax Withholding Details

(cherry picked from commit 14a2f98521)

* fix: sort tax withhodling details report by section code and transaction date

(cherry picked from commit 7ee2418f60)

* fix(test): flaky budget test case

(cherry picked from commit 704223e5d0)

* fix(test): import get_accumulated_monthly_budget

---------

Co-authored-by: ljain112 <ljain112@gmail.com>
Co-authored-by: ruthra kumar <ruthra@erpnext.com>
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2025-07-04 12:05:55 +05:30
Mihir Kandoi
9d23199c25 Merge pull request #48377 from mihir-kandoi/fix-job-card-buttons-d
fix: job card material request/transfer buttons UI overlap
2025-07-04 11:22:46 +05:30
Mihir Kandoi
b1abcd5577 fix: unnecessary primary button 2025-07-04 08:29:29 +05:30
Mihir Kandoi
09f866022b fix: job card material request/transfer buttons UI overlap 2025-07-03 14:05:07 +05:30
Frappe PR Bot
f087da927a chore(release): Bumped to Version 15.67.0
# [15.67.0](https://github.com/frappe/erpnext/compare/v15.66.1...v15.67.0) (2025-07-01)

### Bug Fixes

* accounting entries for standalone credit notes ([cfc8c61](cfc8c610fa))
* better integration of Pick List with Delivery Note (backport [#47831](https://github.com/frappe/erpnext/issues/47831)) ([#48158](https://github.com/frappe/erpnext/issues/48158)) ([8f47505](8f47505604))
* customer section on pos item cart (backport [#48284](https://github.com/frappe/erpnext/issues/48284)) ([#48285](https://github.com/frappe/erpnext/issues/48285)) ([b6e0953](b6e09531d7))
* customer_group import from lead to customer ([#48266](https://github.com/frappe/erpnext/issues/48266)) ([5463a8b](5463a8b6cf))
* default UOMs by new stock Entry created by Stock Level section button ([f1062c6](f1062c61f6))
* disassemble qty calculation & max calculation to be allowed to create it ([bf78f61](bf78f6173c))
* failing test case ([bde63ed](bde63ed0e5))
* func parameters ([c69bb74](c69bb746ce))
* not able to save material request ([0e2bca4](0e2bca4b34))
* option to pick serial / batch for asset repair ([7de15b7](7de15b74d4))
* **pos invoice:** search using customer name (backport [#48279](https://github.com/frappe/erpnext/issues/48279)) ([#48323](https://github.com/frappe/erpnext/issues/48323)) ([ab20b96](ab20b965ca))
* saperated validations for each purpose of validation ([0c07dfa](0c07dfadfe))
* update salvage value after value adjustment (backport [#48228](https://github.com/frappe/erpnext/issues/48228)) ([#48248](https://github.com/frappe/erpnext/issues/48248)) ([ef202d7](ef202d7cd0))
* use company default currency in amount_eligible_for_commission ([9b8fffd](9b8fffd1d4))
* use gain_loss_posting_date instead of today ([ff36284](ff362843cb))
* use label "State/Province" for translatability (backport [#48273](https://github.com/frappe/erpnext/issues/48273)) ([#48286](https://github.com/frappe/erpnext/issues/48286)) ([af55ce0](af55ce0f6c))
* validate asset before repair ([a1eab1d](a1eab1db74))

### Features

* added Transfer and Issue option in purpose ([1f7eccd](1f7eccdac5))

### Performance Improvements

* use set_value for updating bank clearance_date ([a0db227](a0db227a7a))
2025-07-01 12:02:06 +00:00
ruthra kumar
171d86a3ab Merge pull request #48338 from frappe/version-15-hotfix
chore: release v15
2025-07-01 17:30:39 +05:30
ruthra kumar
58c6031c1f Merge pull request #48339 from frappe/mergify/bp/version-15-hotfix/pr-48244
fix: use gain_loss_posting_date instead of today (backport #48244)
2025-07-01 16:20:01 +05:30
ravibharathi656
ff362843cb fix: use gain_loss_posting_date instead of today
(cherry picked from commit 0585bc5aef)
2025-07-01 10:12:35 +00:00
rohitwaghchaure
86b14dd4be Merge pull request #48319 from frappe/mergify/bp/version-15-hotfix/pr-48298
fix: default UOMs by new Stock Entry created by Stock Level section button (when Item is batch or serial) (backport #48298)
2025-07-01 13:24:29 +05:30
ruthra kumar
037ef10fcb Merge pull request #48292 from ljain112/fix-bank-cleareance-v15
perf: use set_value for updating bank clearance_date
2025-07-01 11:58:13 +05:30
mergify[bot]
ab20b965ca fix(pos invoice): search using customer name (backport #48279) (#48323)
* fix(pos invoice): search using customer name

(cherry picked from commit 20fd071c4e)

# Conflicts:
#	erpnext/selling/page/point_of_sale/point_of_sale.py

* refactor: use or_filters for customer and customer_name

(cherry picked from commit 6a401bcfbb)

# Conflicts:
#	erpnext/selling/page/point_of_sale/point_of_sale.py

* refactor: refactored for version 15

---------

Co-authored-by: ravibharathi656 <ravibharathi656@gmail.com>
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2025-06-30 14:51:47 +05:30
rohitwaghchaure
e1a726bdd4 Merge pull request #48294 from frappe/mergify/bp/version-15-hotfix/pr-48293
fix: option to pick serial / batch for asset repair (backport #48293)
2025-06-30 13:27:29 +05:30
rohitwaghchaure
221e5a2190 Merge pull request #48320 from frappe/mergify/bp/version-15-hotfix/pr-48184
fix: Disassembly order items calculation in stock entry & track it in work order (backport #48184)
2025-06-30 13:16:30 +05:30
rohitwaghchaure
f0724f2f04 Merge pull request #48317 from frappe/mergify/bp/version-15-hotfix/pr-48240
refactor: bom stock report (backport #48240)
2025-06-30 13:15:37 +05:30
rohitwaghchaure
c404faaa6d chore: fix issue 2025-06-30 12:46:52 +05:30
rohitwaghchaure
abfe3c8365 chore: fix conflicts 2025-06-30 12:45:04 +05:30
iamkhanraheel
61f4547860 test: added test case for disassembly order
(cherry picked from commit aee26c3550)
2025-06-30 06:57:52 +00:00
iamkhanraheel
c69bb746ce fix: func parameters
(cherry picked from commit ce6ace4b8a)
2025-06-30 06:57:51 +00:00
iamkhanraheel
bf78f6173c fix: disassemble qty calculation & max calculation to be allowed to create it
(cherry picked from commit 3e4d160626)

# Conflicts:
#	erpnext/manufacturing/doctype/work_order/work_order.json
#	erpnext/stock/doctype/stock_entry/stock_entry.py
2025-06-30 06:57:51 +00:00
ruthra kumar
e628a37b99 Merge pull request #48318 from frappe/mergify/bp/version-15-hotfix/pr-48304
chore: fix translation message (backport #48304)
2025-06-30 12:22:58 +05:30
Florian HENRY
f1062c61f6 fix: default UOMs by new stock Entry created by Stock Level section button
(cherry picked from commit e7da4992f3)
2025-06-30 05:40:15 +00:00
Abdallah A. Zaqout
f479675ce6 chore: fix translation message
(cherry picked from commit bc002937ad)
2025-06-30 05:34:05 +00:00
Mihir Kandoi
ce7dbf3090 refactor: bom stock report
(cherry picked from commit ee4e0c646d)
2025-06-30 05:32:04 +00:00
rohitwaghchaure
ac587b9c94 chore: fix conflicts 2025-06-30 10:55:56 +05:30
ruthra kumar
1ea3daeb17 Merge pull request #48267 from frappe/mergify/bp/version-15-hotfix/pr-48266
fix: customer_group import from lead to customer (backport #48266)
2025-06-30 10:48:20 +05:30
ruthra kumar
b2f6fed42c Merge pull request #48315 from frappe/mergify/bp/version-15-hotfix/pr-48271
fix: use company default currency in amount_eligible_for_commission (backport #48271)
2025-06-30 10:34:49 +05:30
rohitwaghchaure
352642096e chore: fix conflicts 2025-06-30 10:12:54 +05:30
rohitwaghchaure
ab61b46a01 chore: fix conflicts 2025-06-30 10:09:59 +05:30
ravibharathi656
9b8fffd1d4 fix: use company default currency in amount_eligible_for_commission
(cherry picked from commit 7c7b392789)
2025-06-30 04:39:08 +00:00
rohitwaghchaure
46243fdb5f Merge pull request #48314 from frappe/mergify/bp/version-15-hotfix/pr-48310
fix: accounting entries for standalone credit notes (backport #48310)
2025-06-30 10:07:36 +05:30
Rohit Waghchaure
cfc8c610fa fix: accounting entries for standalone credit notes
(cherry picked from commit 52177cffcd)
2025-06-30 04:09:56 +00:00
Khushi Rawat
d73ff810d9 Merge pull request #48312 from frappe/mergify/bp/version-15-hotfix/pr-48311
fix: validate asset status for repair (backport #48311)
2025-06-30 01:31:45 +05:30
Khushi Rawat
2b37287b19 chore: resolved conflicts 2025-06-30 01:04:54 +05:30
Khushi Rawat
f31b008502 chore: resolved conflicts 2025-06-30 01:03:49 +05:30
khushi8112
6f24c02121 test: asset status validation
(cherry picked from commit cfe04a2aaf)

# Conflicts:
#	erpnext/assets/doctype/asset_repair/test_asset_repair.py
2025-06-29 19:26:03 +00:00
khushi8112
a1eab1db74 fix: validate asset before repair
(cherry picked from commit c6baa34812)

# Conflicts:
#	erpnext/assets/doctype/asset_repair/asset_repair.json
2025-06-29 19:26:03 +00:00
Frappe PR Bot
fcf9f82092 chore(release): Bumped to Version 15.66.1
## [15.66.1](https://github.com/frappe/erpnext/compare/v15.66.0...v15.66.1) (2025-06-27)

### Bug Fixes

* not able to save material request ([a49026e](a49026e9d2))
2025-06-27 12:28:50 +00:00
rohitwaghchaure
e817561dce Merge pull request #48300 from frappe/mergify/bp/version-15/pr-48297
fix: not able to save material request (backport #48296) (backport #48297)
2025-06-27 17:57:24 +05:30
Rohit Waghchaure
a49026e9d2 fix: not able to save material request
(cherry picked from commit c5e36eb323)
(cherry picked from commit 0e2bca4b34)
2025-06-27 11:18:10 +00:00
rohitwaghchaure
7574069af2 Merge pull request #48297 from frappe/mergify/bp/version-15-hotfix/pr-48296
fix: not able to save material request (backport #48296)
2025-06-27 16:47:17 +05:30
Rohit Waghchaure
0e2bca4b34 fix: not able to save material request
(cherry picked from commit c5e36eb323)
2025-06-27 10:55:48 +00:00
Rohit Waghchaure
7de15b74d4 fix: option to pick serial / batch for asset repair
(cherry picked from commit ae77c609ff)

# Conflicts:
#	erpnext/assets/doctype/asset_repair/asset_repair.py
#	erpnext/assets/doctype/asset_repair_consumed_item/asset_repair_consumed_item.json
2025-06-27 09:59:22 +00:00
ljain112
a0db227a7a perf: use set_value for updating bank clearance_date 2025-06-27 14:12:14 +05:30
mergify[bot]
af55ce0f6c fix: use label "State/Province" for translatability (backport #48273) (#48286)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix: use label "State/Province" for translatability (#48273)
2025-06-26 20:49:06 +02:00
0xD0M1M0
894bb703f6 chore: improve some german translations (#48283) 2025-06-26 20:23:35 +02:00
mergify[bot]
b6e09531d7 fix: customer section on pos item cart (backport #48284) (#48285)
* fix: customer section on pos item cart (#48284)

* fix: customer recent transactions

* fix: pos customer section display customer_name instead of customer name

(cherry picked from commit e1d9f863c6)

# Conflicts:
#	erpnext/public/scss/point-of-sale.scss
#	erpnext/selling/page/point_of_sale/point_of_sale.py
#	erpnext/selling/page/point_of_sale/pos_item_cart.js

* chore: resolve conflict

* chore: resolve conflict

* chore: resolve conflict

---------

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-06-26 23:20:38 +05:30
mergify[bot]
8f47505604 fix: better integration of Pick List with Delivery Note (backport #47831) (#48158)
* fix: better integration of Pick List with Delivery Note (#47831)

Co-authored-by: priyanshshah2442 <priyanshshah2442@gmail.com>
(cherry picked from commit 527cfe9c7d)

# Conflicts:
#	erpnext/patches.txt
#	erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
#	erpnext/stock/doctype/pick_list/pick_list.py
#	erpnext/stock/doctype/pick_list_item/pick_list_item.json

* chore: resolve conflicts

* fix: setting status correctly as per v15 utility

* fix: get items from Pick List to DN even if not linked to Sales Order

---------

Co-authored-by: Smit Vora <smitvora203@gmail.com>
Co-authored-by: Priyansh Shah <108476017+priyanshshah2442@users.noreply.github.com>
2025-06-26 18:25:53 +05:30
0xD0M1M0
5463a8b6cf fix: customer_group import from lead to customer (#48266)
In case customization happens and the lead has the field "customer_group", the get_mapped_doc function would fail and be overwritten by the default value.

(cherry picked from commit 1b18105bce)
2025-06-25 21:26:40 +00:00
Khushi Rawat
b8a773e3e1 Merge pull request #48253 from frappe/mergify/bp/version-15-hotfix/pr-47901
feat: Asset Transfer and Issue in single asset movement record (backport #47901)
2025-06-25 15:23:54 +05:30
khushi8112
dc642fbc41 chore: linters check 2025-06-25 15:04:17 +05:30
Khushi Rawat
ddbdcbb026 chore: resolved conflicts 2025-06-25 14:47:47 +05:30
Khushi Rawat
df938f24d4 chore: resolved conflicts 2025-06-25 14:47:00 +05:30
Khushi Rawat
bde63ed0e5 fix: failing test case
(cherry picked from commit 7d3bec8ef8)
2025-06-25 09:08:24 +00:00
Khushi Rawat
1c3ac9c1fd refactor: split set_latest_location_and_custodian_in_asset into smaller functions
(cherry picked from commit 7e52cb2856)
2025-06-25 09:08:24 +00:00
Khushi Rawat
0c07dfadfe fix: saperated validations for each purpose of validation
(cherry picked from commit 07d1a0ed9c)

# Conflicts:
#	erpnext/assets/doctype/asset_movement/asset_movement.py
2025-06-25 09:08:24 +00:00
Khushi Rawat
1f7eccdac5 feat: added Transfer and Issue option in purpose
(cherry picked from commit f5e5146021)

# Conflicts:
#	erpnext/assets/doctype/asset_movement/asset_movement.json
2025-06-25 09:08:23 +00:00
Khushi Rawat
ef202d7cd0 fix: update salvage value after value adjustment (backport #48228) (#48248)
fix: update salvage value after value adjustment
2025-06-25 11:43:18 +05:30
Frappe PR Bot
de03618b09 chore(release): Bumped to Version 15.66.0
# [15.66.0](https://github.com/frappe/erpnext/compare/v15.65.4...v15.66.0) (2025-06-25)

### Bug Fixes

* add descendants item groups to fetch the barcode items ([5cabdbf](5cabdbfe06))
* add is_group filter for warehouse ([ad0819f](ad0819feee))
* add party and party_name columns to trend reports ([ceab26d](ceab26d5f1))
* add validation for exchange gain/loss entries ([153ed04](153ed04161))
* **asset-invoice:** handle asset invoice cancellation ([d3daeaf](d3daeaf475))
* auto append_taxes_from_item_tax_template in backend ([2bf8dff](2bf8dffb60))
* coa reset root_type on unchecking is_group on new_node (backport [#48156](https://github.com/frappe/erpnext/issues/48156)) ([#48160](https://github.com/frappe/erpnext/issues/48160)) ([7c2bf02](7c2bf026ef))
* contract autoname ([1223f55](1223f5551f))
* fallback expense account and cost center in subcontracting receipt ([ac22c42](ac22c422c8))
* get already billed amount from current doc instead of database ([#48079](https://github.com/frappe/erpnext/issues/48079)) ([c2c5e45](c2c5e45bc6))
* incoming rate for the stand-alone credit note ([ad40bfe](ad40bfe4ea))
* modify query to fetch valid return qty ([764c71d](764c71d3e1))
* naming series field in bank transaction (backport [#48121](https://github.com/frappe/erpnext/issues/48121)) ([#48149](https://github.com/frappe/erpnext/issues/48149)) ([f0ddf1b](f0ddf1b223))
* **open_opportunity:** remove company=null filter (backport [#48222](https://github.com/frappe/erpnext/issues/48222)) ([#48224](https://github.com/frappe/erpnext/issues/48224)) ([2d7a7d9](2d7a7d9988))
* permission issue during reposting ([6896216](6896216276))
* pos item details fetch uoms on stock settings allow_uom_with_conversion_rate_defined_in_item configuration (backport [#48178](https://github.com/frappe/erpnext/issues/48178)) ([#48179](https://github.com/frappe/erpnext/issues/48179)) ([991ddfe](991ddfe187))
* pos item price in get_item and item search (backport [#47925](https://github.com/frappe/erpnext/issues/47925)) ([#48217](https://github.com/frappe/erpnext/issues/48217)) ([f8cfbda](f8cfbda4e0))
* resolved conflicts ([881dcf8](881dcf817f))
* SABB validation during the LCV ([b3d337a](b3d337a45b))
* setup wizard load chart of accounts and fiscal year on change of country (backport [#48125](https://github.com/frappe/erpnext/issues/48125)) ([#48128](https://github.com/frappe/erpnext/issues/48128)) ([f85b08d](f85b08d2f5))
* stock adjustment entry to make stock balance zero (backport [#48245](https://github.com/frappe/erpnext/issues/48245)) ([#48247](https://github.com/frappe/erpnext/issues/48247)) ([41d22d0](41d22d0255))
* stock reconciliation validation for serial and batch ([89376dd](89376ddf8d))
* target inventory dimension for stock entry ([4e70005](4e70005937))
* Update indexing to populate correct values in trends report chart ([24f892d](24f892d582))
* update journal entry title on amend ([4341ac7](4341ac7e7a))
* Update transaction currency to company currency to show correct currency symbol ([651b952](651b9521b9))
* use currency from opportunity while creating quotation ([#45540](https://github.com/frappe/erpnext/issues/45540)) ([a6c5738](a6c5738f4b))
* use set_query on sales_order link field in work order ([b33bec4](b33bec4dad))

### Features

* add naming series for Contract Doctype ([b3c43e8](b3c43e8527))
* add search field for contract doctype ([27b5d94](27b5d9493a))
2025-06-25 04:48:04 +00:00
ruthra kumar
ecd30c5809 Merge pull request #48229 from frappe/version-15-hotfix
chore: release v15
2025-06-25 10:16:37 +05:30
mergify[bot]
41d22d0255 fix: stock adjustment entry to make stock balance zero (backport #48245) (#48247)
fix: stock adjustment entry to make stock balance zero (#48245)

(cherry picked from commit 66eeda6410)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-06-24 22:16:24 +05:30
ruthra kumar
a913cfea7e Merge pull request #48239 from frappe/mergify/bp/version-15-hotfix/pr-45540
fix: use currency from opportunity while creating quotation (backport #45540)
2025-06-24 19:35:10 +05:30
Sugesh G
a6c5738f4b fix: use currency from opportunity while creating quotation (#45540)
(cherry picked from commit d748b491ee)
2025-06-24 12:10:24 +00:00
ruthra kumar
3a6956ba05 Merge pull request #48230 from frappe/mergify/bp/version-15-hotfix/pr-47627
fix: auto append_taxes_from_item_tax_template in backend (backport #47627)
2025-06-24 17:38:14 +05:30
ruthra kumar
1deadb8daa Merge pull request #48236 from frappe/mergify/bp/version-15-hotfix/pr-48226
Trends reports (backport #48226)
2025-06-24 17:36:44 +05:30
ruthra kumar
463ad0a163 Merge pull request #48235 from frappe/mergify/bp/version-15-hotfix/pr-48079
fix: get already billed amount from current doc instead of database (backport #48079)
2025-06-24 17:35:37 +05:30
ljain112
f6bb86574e chore: fix test case for auto tax appending 2025-06-24 16:45:41 +05:30
Khushi Rawat
889a14b557 Merge pull request #48120 from aerele/fix/asset-invoice-cancel-validation
fix(asset-invoice): handle asset invoice cancellation
2025-06-24 16:24:18 +05:30
ljain112
0b96e1e3ef chore: resolve conflicts 2025-06-24 15:52:24 +05:30
Karuppasamy923
24f892d582 fix: Update indexing to populate correct values in trends report chart
(cherry picked from commit b08d66113c)
2025-06-24 10:18:44 +00:00
Karuppasamy923
651b9521b9 fix: Update transaction currency to company currency to show correct currency symbol
(cherry picked from commit b0e201a332)
2025-06-24 10:18:44 +00:00
Lakshit Jain
c2c5e45bc6 fix: get already billed amount from current doc instead of database (#48079)
* fix: get already billed amount from current doc instead of database

* fix: throw overbilling validation for all items in single call

* refactor: minor fixes

---------

Co-authored-by: Sagar Vora <16315650+sagarvora@users.noreply.github.com>
(cherry picked from commit 47c3c4808e)
2025-06-24 10:11:43 +00:00
ljain112
1ccdb67c55 chore: resolve conflicts 2025-06-24 15:31:34 +05:30
ljain112
2bf8dffb60 fix: auto append_taxes_from_item_tax_template in backend
(cherry picked from commit 4cb1fa2b6b)

# Conflicts:
#	erpnext/controllers/accounts_controller.py
#	erpnext/controllers/tests/test_accounts_controller.py
2025-06-24 09:48:21 +00:00
mergify[bot]
6511eb4c7c refactor: track completed app setup wizards and re-run the setup wizard upon new app installation. (backport #47691) (#48223)
* refactor: track completed app setup wizards and re-run the setup wizard upon new app installation. (#47691)

(cherry picked from commit 75b5ba6e67)

# Conflicts:
#	erpnext/hooks.py
#	erpnext/setup/install.py

* chore: fix conflicts

* chore: fix conflicts

* chore: fix conflicts

* fix: permission issue

* fix: space

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-06-24 14:51:15 +05:30
Mihir Kandoi
5aed023434 Merge pull request #48225 from frappe/mergify/bp/version-15-hotfix/pr-48078
fix: fallback expense account and cost center in subcontracting receipt (backport #48078)
2025-06-24 12:14:28 +05:30
rohitwaghchaure
764c81a146 Merge pull request #48215 from frappe/mergify/bp/version-15-hotfix/pr-48195
fix: incoming rate for the stand-alone credit note (backport #48195)
2025-06-24 12:02:17 +05:30
mergify[bot]
2d7a7d9988 fix(open_opportunity): remove company=null filter (backport #48222) (#48224)
* fix(open_opportunity): remove company=null filter (#48222)

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
(cherry picked from commit c8c1c96298)

# Conflicts:
#	erpnext/crm/number_card/open_opportunity/open_opportunity.json

* chore: resolve conflicts

---------

Co-authored-by: Akhil Narang <me@akhilnarang.dev>
2025-06-24 11:56:08 +05:30
Mihir Kandoi
ac22c422c8 fix: fallback expense account and cost center in subcontracting receipt
(cherry picked from commit cf1d4362e5)
2025-06-24 06:20:50 +00:00
rohitwaghchaure
f560286610 chore: fix conflicts 2025-06-24 11:34:04 +05:30
ruthra kumar
19a6ce3605 Merge pull request #48220 from frappe/mergify/bp/version-15-hotfix/pr-48180
fix: update journal entry title on amend (backport #48180)
2025-06-24 10:11:28 +05:30
ravibharathi656
4341ac7e7a fix: update journal entry title on amend
(cherry picked from commit 4a3ee4df29)
2025-06-24 04:04:04 +00:00
ruthra kumar
866780b383 Merge pull request #48212 from frappe/mergify/bp/version-15-hotfix/pr-48162
fix: add validation for exchange gain/loss entries (backport #48162)
2025-06-24 09:19:14 +05:30
ruthra kumar
ca2f4e801e Merge pull request #48213 from frappe/mergify/bp/version-15-hotfix/pr-48053
fix: add descendants item groups to fetch the barcode items (backport #48053)
2025-06-24 09:18:19 +05:30
mergify[bot]
f8cfbda4e0 fix: pos item price in get_item and item search (backport #47925) (#48217)
fix: pos item price in get_item and item search (#47925)

* fix: pos get item and item search

* refactor: resolved linter issue and renamed variables

* fix: uom on get_item

* fix: incorrect item quantity on pos selector

* refactor: remove unused import

(cherry picked from commit 919684a787)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-06-23 22:42:47 +05:30
Rohit Waghchaure
ad40bfe4ea fix: incoming rate for the stand-alone credit note
(cherry picked from commit b06eca8dcb)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
2025-06-23 15:40:49 +00:00
pugazhendhivelu
5cabdbfe06 fix: add descendants item groups to fetch the barcode items
(cherry picked from commit 4b82fe2611)
2025-06-23 14:01:23 +00:00
i-am-vimal
153ed04161 fix: add validation for exchange gain/loss entries
(cherry picked from commit 5c9eddd31e)
2025-06-23 14:00:09 +00:00
ruthra kumar
78013d3d8f Merge pull request #48209 from frappe/mergify/bp/version-15-hotfix/pr-48200
chore: better label and desciption for pegged currency flag (backport #48200)
2025-06-23 19:29:40 +05:30
ruthra kumar
b6dda08290 chore: better label and desciption for pegged currency flag
(cherry picked from commit c5cd7d91c4)
2025-06-23 12:14:42 +00:00
ruthra kumar
1ea876bc7a Merge pull request #48199 from frappe/mergify/bp/version-15-hotfix/pr-48096
fix: add party and party_name columns to trend reports (backport #48096)
2025-06-23 15:58:34 +05:30
ruthra kumar
b92662a095 Merge pull request #48197 from frappe/mergify/bp/version-15-hotfix/pr-48186
fix: add is_group filter for warehouse (backport #48186)
2025-06-23 15:44:29 +05:30
Karuppasamy923
ceab26d5f1 fix: add party and party_name columns to trend reports
(cherry picked from commit d05204a960)
2025-06-23 10:12:18 +00:00
Karuppasamy923
ad0819feee fix: add is_group filter for warehouse
(cherry picked from commit a29ae9cf90)
2025-06-23 10:07:10 +00:00
rohitwaghchaure
c5bf889391 Merge pull request #48182 from frappe/mergify/bp/version-15-hotfix/pr-48181
fix: SABB validation during the LCV (backport #48181)
2025-06-22 12:17:04 +05:30
Khushi Rawat
7303ee4bea Merge pull request #48175 from frappe/mergify/bp/version-15-hotfix/pr-48151
fix: duplicate naming issue in contract doctype (backport #48151)
2025-06-22 00:47:47 +05:30
Rohit Waghchaure
b3d337a45b fix: SABB validation during the LCV
(cherry picked from commit e958f886d3)
2025-06-20 15:55:02 +00:00
mergify[bot]
991ddfe187 fix: pos item details fetch uoms on stock settings allow_uom_with_conversion_rate_defined_in_item configuration (backport #48178) (#48179)
fix: pos item details fetch uoms on stock settings allow_uom_with_conversion_rate_defined_in_item configuration (#48178)

(cherry picked from commit 4aa4942a17)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-06-20 16:23:42 +05:30
Khushi Rawat
881dcf817f fix: resolved conflicts 2025-06-20 14:23:02 +05:30
khushi8112
c07d5b6dec chore: remove unused import
(cherry picked from commit a1c0727d7b)
2025-06-20 07:29:35 +00:00
khushi8112
4c2f555379 refactor: remove test case
(cherry picked from commit 4a027125bc)
2025-06-20 07:29:35 +00:00
khushi8112
27b5d9493a feat: add search field for contract doctype
(cherry picked from commit 0665691b88)
2025-06-20 07:29:35 +00:00
khushi
b3c43e8527 feat: add naming series for Contract Doctype
(cherry picked from commit bf56c73c6c)

# Conflicts:
#	erpnext/crm/doctype/contract/contract.json
2025-06-20 07:29:35 +00:00
khushi
1005ee64cd refactor: remove autoname
(cherry picked from commit a4bb7c4e95)
2025-06-20 07:29:34 +00:00
khushi
8150638519 chore: linters check
(cherry picked from commit f7e63936a9)
2025-06-20 07:29:34 +00:00
khushi
194e15fe6e chore: test contract autoname
(cherry picked from commit b55d1e61c7)
2025-06-20 07:29:34 +00:00
khushi
1223f5551f fix: contract autoname
(cherry picked from commit e13e2bffe2)
2025-06-20 07:29:33 +00:00
mergify[bot]
f0ddf1b223 fix: naming series field in bank transaction (backport #48121) (#48149)
fix: naming series field in bank transaction (#48121)

* fix: naming series field in bank transaction

* fix: default naming_series

(cherry picked from commit c94764ab52)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-06-20 11:52:53 +05:30
Frappe PR Bot
bd128d3b3a chore(release): Bumped to Version 15.65.4
## [15.65.4](https://github.com/frappe/erpnext/compare/v15.65.3...v15.65.4) (2025-06-19)

### Bug Fixes

* target inventory dimension for stock entry ([0958a3b](0958a3b643))
2025-06-19 16:33:57 +00:00
rohitwaghchaure
42460980b2 Merge pull request #48167 from frappe/mergify/bp/version-15/pr-48166
fix: target inventory dimension for stock entry (backport #48165) (backport #48166)
2025-06-19 22:02:27 +05:30
Rohit Waghchaure
0958a3b643 fix: target inventory dimension for stock entry
(cherry picked from commit d65cb56d66)
(cherry picked from commit 4e70005937)
2025-06-19 15:13:19 +00:00
rohitwaghchaure
f5adfe3f0f Merge pull request #48166 from frappe/mergify/bp/version-15-hotfix/pr-48165
fix: target inventory dimension for stock entry (backport #48165)
2025-06-19 20:41:35 +05:30
Rohit Waghchaure
4e70005937 fix: target inventory dimension for stock entry
(cherry picked from commit d65cb56d66)
2025-06-19 14:24:39 +00:00
rohitwaghchaure
4eff2b58e6 Merge pull request #48159 from frappe/mergify/bp/version-15-hotfix/pr-48131
fix: permission issue during reposting (backport #48131)
2025-06-19 18:08:10 +05:30
mergify[bot]
7c2bf026ef fix: coa reset root_type on unchecking is_group on new_node (backport #48156) (#48160)
fix: coa reset root_type on unchecking is_group on new_node (#48156)

(cherry picked from commit 2f8893439f)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-06-19 17:54:08 +05:30
Rohit Waghchaure
6896216276 fix: permission issue during reposting
(cherry picked from commit dcc9fc2fec)
2025-06-19 12:14:44 +00:00
mergify[bot]
bf61014fe5 test: purchase invoice provisional accounting entry (backport #48112) (#48134)
test: purchase invoice provisional accounting entry (#48112)

* test: fixed purchase invoice provisional accounting entry

* test: added tests for multi currency

(cherry picked from commit 80f992c87f)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-06-19 13:01:51 +05:30
Frappe PR Bot
e0ca060475 chore(release): Bumped to Version 15.65.3
## [15.65.3](https://github.com/frappe/erpnext/compare/v15.65.2...v15.65.3) (2025-06-19)

### Bug Fixes

* stock reconciliation validation for serial and batch ([3057f6c](3057f6ce35))
* use set_query on sales_order link field in work order ([6a6130e](6a6130e06c))
2025-06-19 05:30:19 +00:00
rohitwaghchaure
84d348b3d4 Merge pull request #48145 from frappe/mergify/bp/version-15/pr-48107
fix: use set_query on sales_order link field in work order (backport #48077) (backport #48107)
2025-06-19 10:58:59 +05:30
rohitwaghchaure
a63457e5b0 Merge pull request #48144 from frappe/mergify/bp/version-15/pr-48113
fix: stock reconciliation validation for serial nos (backport #47988) (backport #48113)
2025-06-19 10:58:43 +05:30
Mihir Kandoi
6a6130e06c fix: use set_query on sales_order link field in work order
(cherry picked from commit 6def182e1a)
(cherry picked from commit b33bec4dad)
2025-06-19 04:37:39 +00:00
Rohit Waghchaure
3057f6ce35 fix: stock reconciliation validation for serial and batch
(cherry picked from commit 69d54d2e0f)
(cherry picked from commit 89376ddf8d)
2025-06-19 04:36:35 +00:00
rohitwaghchaure
7fbefef72a Merge pull request #48135 from aerele/handle-return-qty
fix: modify query to fetch valid return qty
2025-06-18 20:24:46 +05:30
Bhavan23
ea3015a450 test(sales-invoice): add test case for asset invoice cancellation 2025-06-18 19:21:14 +05:30
ravibharathi656
9146bd95a4 test: update import for change_settings 2025-06-18 18:41:01 +05:30
ravibharathi656
4576fcd96f test: add test for validating sales invoice qty after return 2025-06-18 18:16:06 +05:30
ravibharathi656
764c71d3e1 fix: modify query to fetch valid return qty 2025-06-18 18:16:06 +05:30
mergify[bot]
f85b08d2f5 fix: setup wizard load chart of accounts and fiscal year on change of country (backport #48125) (#48128)
fix: setup wizard load chart of accounts and fiscal year on change of country (#48125)

(cherry picked from commit 14f0569a39)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-06-18 17:26:55 +05:30
Mihir Kandoi
f0ae90011b Merge pull request #48107 from frappe/mergify/bp/version-15-hotfix/pr-48077 2025-06-18 11:08:43 +05:30
Bhavan23
d3daeaf475 fix(asset-invoice): handle asset invoice cancellation 2025-06-18 10:54:24 +05:30
rohitwaghchaure
79a9d583d9 Merge pull request #48113 from frappe/mergify/bp/version-15-hotfix/pr-47988
fix: stock reconciliation validation for serial nos (backport #47988)
2025-06-17 23:18:24 +05:30
Rohit Waghchaure
89376ddf8d fix: stock reconciliation validation for serial and batch
(cherry picked from commit 69d54d2e0f)
2025-06-17 17:31:05 +00:00
Frappe PR Bot
d2ac603fd7 chore(release): Bumped to Version 15.65.2
## [15.65.2](https://github.com/frappe/erpnext/compare/v15.65.1...v15.65.2) (2025-06-17)

### Bug Fixes

* add validation for calculate ageing with filter for summary and other reports ([23db22a](23db22ac0b))
* add validation for exchange gain/loss entries ([97f1304](97f13049ee))
* add validation for party type ([baa08ce](baa08ce496))
* batch page length ([994454b](994454bfc3))
* budget naming series (backport [#48075](https://github.com/frappe/erpnext/issues/48075)) ([#48080](https://github.com/frappe/erpnext/issues/48080)) ([4d18fd0](4d18fd0e80))
* do not allow capitalization from connection tab for submitted asset ([7b5e2a6](7b5e2a6af0))
* do not reset party account for return doc ([ad5421a](ad5421a413))
* float division by zero ([40504b8](40504b8da2))
* incorrect condition for setting party account on change of company ([f2b9e73](f2b9e73819))
* incorrect warehouse set from SO to MR ([e9365d7](e9365d7272))
* pos invoice consolidation row refer issue (backport [#48057](https://github.com/frappe/erpnext/issues/48057)) ([#48058](https://github.com/frappe/erpnext/issues/48058)) ([db9f0b6](db9f0b6f38))
* prevent saving negative quantity in BOM ([1c9032a](1c9032a4c2))
* unpack non-iterable NoneType object error ([dd39d24](dd39d24da0))
* update asset status after making asset value adjustment record ([ee30357](ee30357835))
2025-06-17 14:51:34 +00:00
ruthra kumar
3340b19c5d Merge pull request #48100 from frappe/version-15-hotfix
chore: release v15
2025-06-17 20:20:01 +05:30
Mihir Kandoi
b33bec4dad fix: use set_query on sales_order link field in work order
(cherry picked from commit 6def182e1a)
2025-06-17 12:09:08 +00:00
Sagar Vora
4d1022182d Merge pull request #48105 from frappe/mergify/bp/version-15-hotfix/pr-48104
fix: incorrect condition for setting party account on change of company (backport #48104)
2025-06-17 11:26:35 +00:00
ljain112
f2b9e73819 fix: incorrect condition for setting party account on change of company
(cherry picked from commit 20565f5f19)
2025-06-17 11:26:13 +00:00
ruthra kumar
31cb78e3f3 Merge pull request #48101 from frappe/mergify/bp/version-15-hotfix/pr-47898
Pegged currency (backport #47898)
2025-06-17 16:00:54 +05:30
ruthra kumar
789cd20d2d Merge pull request #48102 from frappe/mergify/bp/version-15-hotfix/pr-48098
fix: do not reset party account for return doc (backport #48098)
2025-06-17 15:42:32 +05:30
Karuppasamy
cb58d05777 Merge pull request #47898 from aerele/pegged-currency
Pegged currency

(cherry picked from commit cec0ffad06)

# Conflicts:
#	erpnext/accounts/doctype/accounts_settings/accounts_settings.json
#	erpnext/patches.txt
#	erpnext/setup/install.py
2025-06-17 15:32:36 +05:30
ljain112
ad5421a413 fix: do not reset party account for return doc
(cherry picked from commit 7e758a9d5b)
2025-06-17 09:59:44 +00:00
ruthra kumar
84f9a1fb2d Merge pull request #48094 from frappe/mergify/bp/version-15-hotfix/pr-48082
fix:add validation for party type (backport #48082)
2025-06-17 15:14:34 +05:30
ruthra kumar
7d88b8bbb9 Merge pull request #48093 from frappe/mergify/bp/version-15-hotfix/pr-47879
fix: add validation for exchange gain/loss entries (backport #47879)
2025-06-17 13:59:08 +05:30
AlcinSnowlina
baa08ce496 fix: add validation for party type
(cherry picked from commit 7c9d6aaae2)
2025-06-17 08:26:07 +00:00
ruthra kumar
7031a5033c Merge pull request #48092 from frappe/mergify/bp/version-15-hotfix/pr-48076
fix: Prevent saving negative quantity in BOM (backport #48076)
2025-06-17 13:47:20 +05:30
l0gesh29
1f1e88d52e test: add test for debit/credit calculations in exchange gain/loss account filter in GL
(cherry picked from commit 6ea32a8762)

# Conflicts:
#	erpnext/accounts/report/general_ledger/test_general_ledger.py
2025-06-17 13:42:02 +05:30
l0gesh29
97f13049ee fix: add validation for exchange gain/loss entries
(cherry picked from commit d992f67658)
2025-06-17 08:04:57 +00:00
iamkhanraheel
1c9032a4c2 fix: prevent saving negative quantity in BOM
(cherry picked from commit e52d83e756)
2025-06-17 07:50:27 +00:00
Khushi Rawat
323a91ddd7 Merge pull request #48090 from khushi8112/update-asset-status-after-revaluation-v15-backport
fix: update asset status after making asset value adjustment record
2025-06-17 13:06:50 +05:30
Khushi Rawat
ee30357835 fix: update asset status after making asset value adjustment record 2025-06-17 12:35:44 +05:30
mergify[bot]
4d18fd0e80 fix: budget naming series (backport #48075) (#48080)
* fix: budget naming series (#48075)

(cherry picked from commit c4bdf2a721)

# Conflicts:
#	erpnext/accounts/doctype/budget/budget.json

* chore: resolve conflict

---------

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-06-17 11:21:54 +05:30
Abdeali Chharchhoda
fc8d451c55 fix: use flt value of bin qty
(cherry picked from commit 0a8e42a358)
2025-06-16 12:54:44 +00:00
rohitwaghchaure
d054486495 Merge pull request #48065 from frappe/mergify/bp/version-15-hotfix/pr-48061
fix: incorrect warehouse set from SO to MR (backport #48061)
2025-06-16 14:52:44 +05:30
Rohit Waghchaure
e9365d7272 fix: incorrect warehouse set from SO to MR
(cherry picked from commit 0da8d9c869)
2025-06-16 04:42:27 +00:00
ruthra kumar
b3578ecf09 Merge pull request #48063 from frappe/mergify/bp/version-15-hotfix/pr-48036
fix: add validation for calculate ageing with filter for summary and … (backport #48036)
2025-06-16 09:52:37 +05:30
l0gesh29
23db22ac0b fix: add validation for calculate ageing with filter for summary and other reports
(cherry picked from commit c630aa9fe8)
2025-06-16 03:10:11 +00:00
rohitwaghchaure
85099a3a68 Merge pull request #48044 from frappe/mergify/bp/version-15-hotfix/pr-48037
fix: float division by zero (backport #48037)
2025-06-15 18:29:02 +05:30
mergify[bot]
db9f0b6f38 fix: pos invoice consolidation row refer issue (backport #48057) (#48058)
fix: pos invoice consolidation row refer issue (#48057)

(cherry picked from commit 4178d9e2a1)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-06-13 20:08:22 +05:30
mergify[bot]
56311e6e1e build(deps): bump rapidfuzz (backport #47503) (#48051)
build(deps): bump rapidfuzz (#47503)


(cherry picked from commit c275c55d6c)

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
Co-authored-by: Akhil Narang <me@akhilnarang.dev>
2025-06-13 16:01:08 +05:30
Rohit Waghchaure
40504b8da2 fix: float division by zero
(cherry picked from commit 59cbe85817)
2025-06-13 02:50:28 +00:00
rohitwaghchaure
379def5f0f Merge pull request #48022 from frappe/mergify/bp/version-15-hotfix/pr-48018
fix: batch page length (backport #48018)
2025-06-12 15:47:24 +05:30
Khushi Rawat
ab6a534df2 Merge pull request #48032 from frappe/mergify/bp/version-15-hotfix/pr-48031
fix: do not allow capitalization from connection tab for submitted asset (backport #48031)
2025-06-12 15:22:06 +05:30
Khushi Rawat
7b5e2a6af0 fix: do not allow capitalization from connection tab for submitted asset
(cherry picked from commit 27bec4cde5)
2025-06-12 09:48:10 +00:00
Rohit Waghchaure
994454bfc3 fix: batch page length
(cherry picked from commit 338256b799)
2025-06-11 14:33:13 +00:00
Frappe PR Bot
9febca2981 chore(release): Bumped to Version 15.65.1
## [15.65.1](https://github.com/frappe/erpnext/compare/v15.65.0...v15.65.1) (2025-06-11)

### Bug Fixes

* unpack non-iterable NoneType object error ([f92b5b9](f92b5b9a2e))
2025-06-11 12:51:34 +00:00
Sagar Vora
62efd09f2f Merge pull request #48021 from frappe/mergify/bp/version-15/pr-48019
fix: unpack non-iterable NoneType object error in patch (backport #48019)
2025-06-11 12:50:06 +00:00
Sagar Vora
b8f1c8f6b1 Merge pull request #48020 from frappe/mergify/bp/version-15-hotfix/pr-48019
fix: unpack non-iterable NoneType object error in patch (backport #48019)
2025-06-11 12:49:27 +00:00
priyanshshah2442
f92b5b9a2e fix: unpack non-iterable NoneType object error
(cherry picked from commit 7d940faa4f)
2025-06-11 12:49:17 +00:00
priyanshshah2442
dd39d24da0 fix: unpack non-iterable NoneType object error
(cherry picked from commit 7d940faa4f)
2025-06-11 12:49:05 +00:00
Frappe PR Bot
dc8bb792d7 chore(release): Bumped to Version 15.65.0
# [15.65.0](https://github.com/frappe/erpnext/compare/v15.64.1...v15.65.0) (2025-06-10)

### Bug Fixes

* add .length in list validation ([#47974](https://github.com/frappe/erpnext/issues/47974)) ([66f41d4](66f41d44c4))
* add change log for bug fix in Additional Discount functionality ([f27e591](f27e591d88))
* add draft transactions also in calculated mismatch report ([23b5d2d](23b5d2db2c))
* add user permission while fetching ple ([a2cdd91](a2cdd91a0d))
* **asset:** make purchase date mandatory ([a5e5553](a5e5553520))
* AttributeError due to incorrect object ([43d4e26](43d4e26ac5))
* available qty in BOM Stock Report ([84b2f87](84b2f871ba))
* better description of tab name ([#44697](https://github.com/frappe/erpnext/issues/44697)) ([d05b49b](d05b49b0f8))
* changes in report ([78c6386](78c63869e0))
* changes to report and patch ([5237ff8](5237ff8d94))
* conflicts ([aa29c5d](aa29c5dde2))
* consider expired batches in the stock reco (backport [#47909](https://github.com/frappe/erpnext/issues/47909)) ([#47919](https://github.com/frappe/erpnext/issues/47919)) ([2e78e14](2e78e14c7e))
* consider user permission while populating the data ([617b065](617b0658b8))
* do not create repeat work orders ([795108c](795108c1dd))
* do not remove item which has zero qty and zero valuation ([ef77791](ef77791bd6))
* ensure proper float conversion for discount values ([d24c2c4](d24c2c4cca))
* fetch correct item tax template on item rate update ([#47973](https://github.com/frappe/erpnext/issues/47973)) ([f88e682](f88e68230a))
* fieldtype to Currency for discount amounts ([59dd5fe](59dd5fee26))
* incorrect warehouse in MR ([8156d89](8156d89903))
* key-error for COGS By Item Group report (backport [#47914](https://github.com/frappe/erpnext/issues/47914)) ([#47915](https://github.com/frappe/erpnext/issues/47915)) ([996fb75](996fb7552a))
* patch to set discount percentange in case of mismatch ([039c47e](039c47e3f2))
* pos permission error on strict permission (backport [#47896](https://github.com/frappe/erpnext/issues/47896)) ([#47897](https://github.com/frappe/erpnext/issues/47897)) ([0314a39](0314a39fab))
* Project argument is passed correctly for MR creation ([e98ad4c](e98ad4ce27))
* remove currency col ([35035c2](35035c2a31))
* remove use sales invoice check ([#47908](https://github.com/frappe/erpnext/issues/47908)) ([1b15507](1b1550708d))
* **report:** include descendants when filtering by parent item group ([d21bfa2](d21bfa219d))
* **sales order:** error message on creation of work order from sales order ([129cd7a](129cd7ae8a))
* stock adjustment entry during reposting (backport [#47878](https://github.com/frappe/erpnext/issues/47878)) ([#47883](https://github.com/frappe/erpnext/issues/47883)) ([e5d06f8](e5d06f8c86))
* stock reco qty with inventory dimension (backport [#47918](https://github.com/frappe/erpnext/issues/47918)) ([#47922](https://github.com/frappe/erpnext/issues/47922)) ([6d2c14c](6d2c14c75e))
* test case to verify correct setting of discount amount and percentage ([06ea957](06ea957ae5))
* throw permission error ([#47976](https://github.com/frappe/erpnext/issues/47976)) ([9167d2e](9167d2ef64))
* typo ([8b4824f](8b4824fef5))
* update currency based on transaction ([eaeb18c](eaeb18c651))
* zero division error in purchase receipt ([b99f8fd](b99f8fd021))

### Features

* Add hook to update gl dict by apps ([76c2477](76c2477d23))
* add validation for inter company transactions ([9a47c50](9a47c507c0))
* populate Timer dialog project field from Timesheet parent_project (backport [#47971](https://github.com/frappe/erpnext/issues/47971)) ([#48001](https://github.com/frappe/erpnext/issues/48001)) ([66b0426](66b0426155))
* report to verify discount amount mismatch ([b3eb49d](b3eb49d39d))

### Performance Improvements

* Batch GLE/SLE rename commits (backport [#47950](https://github.com/frappe/erpnext/issues/47950)) ([#47951](https://github.com/frappe/erpnext/issues/47951)) ([f490de9](f490de9285))

### Reverts

* Revert "fix: calculate discount percentage if discount amount is specified (#…" ([5a5449c](5a5449c60c))
2025-06-10 14:33:55 +00:00
ruthra kumar
bd11146f02 Merge pull request #47996 from frappe/version-15-hotfix
chore: release v15
2025-06-10 20:02:19 +05:30
rohitwaghchaure
33f1d7a5fe Merge pull request #48004 from frappe/mergify/bp/version-15-hotfix/pr-47998
fix: incorrect warehouse in MR (backport #47998)
2025-06-10 18:41:17 +05:30
rohitwaghchaure
60de0474a1 chore: fix conflicts 2025-06-10 18:19:27 +05:30
Rohit Waghchaure
8156d89903 fix: incorrect warehouse in MR
(cherry picked from commit 2b9ca79291)

# Conflicts:
#	erpnext/manufacturing/doctype/production_plan/production_plan.py
2025-06-10 12:41:26 +00:00
mergify[bot]
66b0426155 feat: populate Timer dialog project field from Timesheet parent_project (backport #47971) (#48001)
feat: populate Timer dialog project field from Timesheet parent_project (#47971)

* feat: default parent project in timer dialog > project

* chore: fix formatting

* fix: remove unnecessary or condition

---------


(cherry picked from commit bc87609264)

Co-authored-by: Rahul Agrawal <12agrawalrahul@gmail.com>
Co-authored-by: Rahul Agrawal <deathstarconsole@Rahuls-MacBook-Air.local>
2025-06-10 18:07:28 +05:30
rohitwaghchaure
60b12b8319 Merge pull request #47992 from frappe/mergify/bp/version-15-hotfix/pr-47969
fix: do not create repeat work orders (backport #47969)
2025-06-10 16:40:54 +05:30
ruthra kumar
112d40db22 Merge pull request #47994 from frappe/mergify/bp/version-15-hotfix/pr-47981
refactor(Work Order): query_sales_order (backport #47981)
2025-06-10 15:01:09 +05:30
ruthra kumar
0d0b05bf6c Merge pull request #47991 from frappe/mergify/bp/version-15-hotfix/pr-47923
fix: update currency based on transaction (backport #47923)
2025-06-10 14:42:05 +05:30
rohitwaghchaure
c2d7e8c471 chore: fix conflicts 2025-06-10 14:38:18 +05:30
rohitwaghchaure
ccb0f7ac42 chore: fix conflicts 2025-06-10 14:36:31 +05:30
rohitwaghchaure
781b66e252 chore: fix conflicts 2025-06-10 14:35:23 +05:30
barredterra
efd3b1c966 refactor(Work Order): query_sales_order
- Use `get_list` instead of `db.sql_list`

    The method is used for setting link options in the frontend and the Link field doesn't ignore permissions, so get_list should be fine here.

- Added type hints to enable argument validation

(cherry picked from commit 2dbdacf905)
2025-06-10 09:03:18 +00:00
Rohit Waghchaure
795108c1dd fix: do not create repeat work orders
(cherry picked from commit 384f4e120a)

# Conflicts:
#	erpnext/manufacturing/doctype/production_plan/production_plan.js
#	erpnext/manufacturing/doctype/production_plan/test_production_plan.py
#	erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json
2025-06-10 09:00:27 +00:00
rohitwaghchaure
7348778220 Merge pull request #47941 from frappe/mergify/bp/version-15-hotfix/pr-47888
fix: do not remove item which has zero qty and zero valuation (backport #47888)
2025-06-10 14:29:54 +05:30
DHINESH00
eaeb18c651 fix: update currency based on transaction
(cherry picked from commit fc4f38eed1)
2025-06-10 08:56:37 +00:00
rohitwaghchaure
78607b5812 Merge pull request #47987 from frappe/mergify/bp/version-15-hotfix/pr-47942
fix: available qty in BOM Stock Report (backport #47942)
2025-06-10 14:02:43 +05:30
Sagar Vora
823cfeaf4f Merge pull request #47978 from frappe/mergify/bp/version-15-hotfix/pr-47976
fix: throw permission error (backport #47976)
2025-06-10 07:37:10 +00:00
Sagar Vora
aa29c5dde2 fix: conflicts 2025-06-10 13:05:37 +05:30
ruthra kumar
713b17c3a5 Merge pull request #47990 from frappe/mergify/bp/version-15-hotfix/pr-47989
fix: Include draft transactions in the `Calculated Discount Mismatch` report (backport #47989)
2025-06-10 12:58:05 +05:30
priyanshshah2442
23b5d2db2c fix: add draft transactions also in calculated mismatch report
(cherry picked from commit 4e1abc1814)
2025-06-10 07:12:03 +00:00
Rohit Waghchaure
84b2f871ba fix: available qty in BOM Stock Report
(cherry picked from commit ea689bbe3f)
2025-06-10 06:50:51 +00:00
Sagar Vora
ac78bfb55b Merge pull request #47985 from frappe/mergify/bp/version-15-hotfix/pr-47946
fix: patch and report for incorrect discount values (backport #47946)
2025-06-10 06:10:23 +00:00
priyanshshah2442
59dd5fee26 fix: fieldtype to Currency for discount amounts
(cherry picked from commit f781a39dbe)
2025-06-10 06:04:09 +00:00
Sagar Vora
35035c2a31 fix: remove currency col
(cherry picked from commit 9bf9b34ac4)
2025-06-10 06:04:08 +00:00
Sagar Vora
78c63869e0 fix: changes in report
(cherry picked from commit 33e793354c)
2025-06-10 06:04:08 +00:00
priyanshshah2442
06ea957ae5 fix: test case to verify correct setting of discount amount and percentage
(cherry picked from commit 3f0c5be5d9)
2025-06-10 06:04:08 +00:00
priyanshshah2442
f27e591d88 fix: add change log for bug fix in Additional Discount functionality
(cherry picked from commit 9120927a65)
2025-06-10 06:04:08 +00:00
priyanshshah2442
d24c2c4cca fix: ensure proper float conversion for discount values
(cherry picked from commit 3dcb801a37)
2025-06-10 06:04:07 +00:00
Sagar Vora
5237ff8d94 fix: changes to report and patch
(cherry picked from commit daad6137f8)
2025-06-10 06:04:07 +00:00
priyanshshah2442
b3eb49d39d feat: report to verify discount amount mismatch
(cherry picked from commit 62dd6df24f)
2025-06-10 06:04:07 +00:00
priyanshshah2442
039c47e3f2 fix: patch to set discount percentange in case of mismatch
(cherry picked from commit f7eda8a156)
2025-06-10 06:04:06 +00:00
ruthra kumar
7ecb4d3d6f Merge pull request #47968 from aerele/validate-intercompany-rate
Add validation for inter company transactions rate
2025-06-10 11:12:26 +05:30
ruthra kumar
76a9e45ff8 Merge pull request #47982 from frappe/mergify/bp/version-15-hotfix/pr-47974
fix: add .length in list validation (backport #47974)
2025-06-10 10:25:21 +05:30
ruthra kumar
c69a0f150d Merge pull request #47934 from thomasantony12/so_bug_on_wo
fix(sales order): error message on creation of work order from sales order
2025-06-10 10:19:33 +05:30
l0gesh29
66f41d44c4 fix: add .length in list validation (#47974)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
(cherry picked from commit c8cec8cedf)
2025-06-09 23:16:36 +00:00
Khushi Rawat
7393a9f470 Merge pull request #47980 from frappe/mergify/bp/version-15-hotfix/pr-47979
fix: AttributeError due to incorrect object (backport #47979)
2025-06-10 00:31:45 +05:30
Khushi Rawat
43d4e26ac5 fix: AttributeError due to incorrect object
(cherry picked from commit 351796bce6)
2025-06-09 18:46:03 +00:00
Aayush Dalal
9167d2ef64 fix: throw permission error (#47976)
Co-authored-by: Sagar Vora <16315650+sagarvora@users.noreply.github.com>
(cherry picked from commit 8b6a8d0c4f)

# Conflicts:
#	erpnext/stock/utils.py
2025-06-09 17:29:58 +00:00
Diptanil Saha
f88e68230a fix: fetch correct item tax template on item rate update (#47973) 2025-06-09 19:23:33 +05:30
ravibharathi656
3aee14176c test: pass sales invoice name instead of doc 2025-06-09 19:12:51 +05:30
ravibharathi656
d6796da464 test: add unit test for inter company transaction rate validation 2025-06-09 19:12:51 +05:30
ravibharathi656
9a47c507c0 feat: add validation for inter company transactions 2025-06-09 19:12:51 +05:30
ruthra kumar
95d1d7047d Merge pull request #47967 from frappe/mergify/bp/version-15-hotfix/pr-47865
fix: consider user permission while populating the data (backport #47865)
2025-06-09 15:41:37 +05:30
l0gesh29
a2cdd91a0d fix: add user permission while fetching ple
(cherry picked from commit 1a4bb30923)
2025-06-09 09:53:13 +00:00
l0gesh29
617b0658b8 fix: consider user permission while populating the data
(cherry picked from commit 074dc6d7dd)
2025-06-09 09:53:13 +00:00
Khushi Rawat
d8e9ed417d Merge pull request #47943 from frappe/mergify/bp/version-15-hotfix/pr-47547
fix(asset): make purchase date mandatory (backport #47547)
2025-06-09 14:48:57 +05:30
ruthra kumar
eb7eadc16f Merge pull request #47590 from FathihMohammed/show_descedants
fix(report): include descendants when filtering by parent item group
2025-06-09 13:31:41 +05:30
FATHIH MOHAMMED
d21bfa219d fix(report): include descendants when filtering by parent item group 2025-06-09 11:54:32 +05:30
ruthra kumar
198089cac1 Merge pull request #47958 from frappe/mergify/bp/version-15-hotfix/pr-44697
fix: better description of tab name (backport #44697)
2025-06-09 10:17:31 +05:30
mahsem
d05b49b0f8 fix: better description of tab name (#44697)
(cherry picked from commit 6119d4384a)
2025-06-08 20:15:11 +00:00
mergify[bot]
f490de9285 perf: Batch GLE/SLE rename commits (backport #47950) (#47951)
perf: Batch GLE/SLE rename commits (#47950)

(cherry picked from commit bb693c0a4f)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2025-06-06 21:00:49 +05:30
RAVIBHARATHI P C
a5e5553520 fix(asset): make purchase date mandatory
(cherry picked from commit e6f47be4b0)
2025-06-06 12:10:43 +00:00
rohitwaghchaure
ea393ef008 chore: fix conflicts 2025-06-06 15:38:10 +05:30
Rohit Waghchaure
ef77791bd6 fix: do not remove item which has zero qty and zero valuation
(cherry picked from commit 86e4a658a5)

# Conflicts:
#	erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
2025-06-06 10:03:14 +00:00
Frappe PR Bot
63d165c48a chore(release): Bumped to Version 15.64.1
## [15.64.1](https://github.com/frappe/erpnext/compare/v15.64.0...v15.64.1) (2025-06-06)

### Reverts

* Revert "fix: calculate discount percentage if discount amount is specified (#…" ([29d7593](29d7593fa7))
2025-06-06 07:07:12 +00:00
thomasantony12
129cd7ae8a fix(sales order): error message on creation of work order from sales order 2025-06-06 12:36:30 +05:30
Sagar Vora
83a57909d3 Merge pull request #47933 from frappe/mergify/bp/version-15/pr-47927
fix: calculate discount percentage if discount amount is specified" (backport #47927)
2025-06-06 07:05:40 +00:00
Sagar Vora
29d7593fa7 Revert "fix: calculate discount percentage if discount amount is specified (#…"
This reverts commit bb474f4f42.

(cherry picked from commit 27dc0f5b70)
2025-06-06 07:05:26 +00:00
Sagar Vora
a8e1c4f6cd Merge pull request #47928 from frappe/mergify/bp/version-15-hotfix/pr-47927
fix: calculate discount percentage if discount amount is specified" (backport #47927)
2025-06-06 06:07:35 +00:00
Sagar Vora
5a5449c60c Revert "fix: calculate discount percentage if discount amount is specified (#…"
This reverts commit bb474f4f42.

(cherry picked from commit 27dc0f5b70)
2025-06-06 06:07:15 +00:00
mergify[bot]
6d2c14c75e fix: stock reco qty with inventory dimension (backport #47918) (#47922)
fix: stock reco qty with inventory dimension (#47918)

(cherry picked from commit 342cebc778)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-06-06 09:51:23 +05:30
mergify[bot]
2e78e14c7e fix: consider expired batches in the stock reco (backport #47909) (#47919)
fix: consider expired batches in the stock reco (#47909)

(cherry picked from commit 8fa3473945)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-06-05 17:35:23 +05:30
mergify[bot]
996fb7552a fix: key-error for COGS By Item Group report (backport #47914) (#47915)
fix: key-error for COGS By Item Group report (#47914)

fix: keyerror for COGS By Item Group report
(cherry picked from commit 997ce4eaa7)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-06-05 17:18:30 +05:30
Deepesh Garg
04349b61bd Merge pull request #47917 from frappe/mergify/bp/version-15-hotfix/pr-47907
feat: Add hook to update gl dict by apps (backport #47907)
2025-06-05 16:51:20 +05:30
Deepesh Garg
d3202068d9 style: Linting issues
(cherry picked from commit c4aecb15ce)
2025-06-05 11:03:52 +00:00
Deepesh Garg
76c2477d23 feat: Add hook to update gl dict by apps
(cherry picked from commit 10ff369ff2)
2025-06-05 11:03:51 +00:00
Diptanil Saha
1b1550708d fix: remove use sales invoice check (#47908) 2025-06-05 14:08:37 +05:30
ruthra kumar
425674e164 Merge pull request #47906 from frappe/mergify/bp/version-15-hotfix/pr-47665
fix: Project argument is not passed correctly for MR creation (backport #47665)
2025-06-05 11:53:22 +05:30
Syed Mujeer Hashmi
e98ad4ce27 fix: Project argument is passed correctly for MR creation
(cherry picked from commit 9eab434ae8)
2025-06-05 06:21:32 +00:00
mergify[bot]
0314a39fab fix: pos permission error on strict permission (backport #47896) (#47897)
fix: pos permission error on strict permission (#47896)

(cherry picked from commit bb903a4bef)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-06-04 16:11:07 +05:30
mergify[bot]
e5d06f8c86 fix: stock adjustment entry during reposting (backport #47878) (#47883)
fix: stock adjustment entry during reposting (#47878)

fix: stock adjustment entry
(cherry picked from commit cbcd580daa)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-06-04 12:51:10 +05:30
ruthra kumar
fb5d60eeb6 Merge pull request #47873 from frappe/mergify/bp/version-15-hotfix/pr-47872
fix: typo (backport #47872)
2025-06-03 19:49:47 +05:30
Mihir Kandoi
8d7be8a536 Merge pull request #47876 from frappe/mergify/bp/version-15-hotfix/pr-47874 2025-06-03 19:09:52 +05:30
Mihir Kandoi
b99f8fd021 fix: zero division error in purchase receipt
(cherry picked from commit 32229fb646)
2025-06-03 13:09:28 +00:00
Ayush Marhatta
8b4824fef5 fix: typo
(cherry picked from commit a243abb5fd)
2025-06-03 12:09:06 +00:00
Frappe PR Bot
916511ef1a chore(release): Bumped to Version 15.64.0
# [15.64.0](https://github.com/frappe/erpnext/compare/v15.63.0...v15.64.0) (2025-06-03)

### Bug Fixes

* Accounts receivable shouldn't fetch DN for employees ([9f5cfdd](9f5cfdd65b))
* add company filter to cost center and project in process statement of accounts ([5ebf1b9](5ebf1b9cc4))
* add internal link field in Sales Order connections for internal transactions ([3c697e9](3c697e90a3))
* calculate discount percentage if discount amount is specified ([#47806](https://github.com/frappe/erpnext/issues/47806)) ([ba8a316](ba8a316b06))
* cash flow report fixes ([4a1966c](4a1966c680))
* check return_against exists before api call ([8623a56](8623a5650b))
* decimal issue ([#47839](https://github.com/frappe/erpnext/issues/47839)) ([34b62d2](34b62d226c))
* ensure backend response is awaited before saving ([5a23d7c](5a23d7cdca))
* GL entries for rejected returned materials ([#47612](https://github.com/frappe/erpnext/issues/47612)) ([5bac652](5bac652b5f))
* Handle duplicate Items qty in Quotation ([4c1b415](4c1b415b9d))
* improved indexing for SLE queries. (backport [#47194](https://github.com/frappe/erpnext/issues/47194)) ([#47822](https://github.com/frappe/erpnext/issues/47822)) ([3879cbd](3879cbd86d))
* incorrect actual qty in product bundle balance report (backport [#47791](https://github.com/frappe/erpnext/issues/47791)) ([#47814](https://github.com/frappe/erpnext/issues/47814)) ([9df3b9b](9df3b9b059))
* **Timesheet:** Only update to_time if it's more than 1 second off ([#47702](https://github.com/frappe/erpnext/issues/47702)) ([470534a](470534af78))
* use `query.walk() `for escaping special chars in receiable/payable report ([2e3ebec](2e3ebec53c))
* use user default for company instead of global default in purchase order analysis report ([7d828dc](7d828dc17e))

### Features

* add column "Item Name" to "BOM Stock Report" (backport [#47116](https://github.com/frappe/erpnext/issues/47116)) ([#47485](https://github.com/frappe/erpnext/issues/47485)) ([9192913](9192913832))
* allow to set valuation rate for Rejected Materials (backport [#47582](https://github.com/frappe/erpnext/issues/47582)) ([#47869](https://github.com/frappe/erpnext/issues/47869)) ([3582b32](3582b32f03))
* show item name for raw materials in BOM creator ([0c612be](0c612be6fe))
* specify expense account and cost center for raw materials in Su… (backport [#47756](https://github.com/frappe/erpnext/issues/47756)) ([#47861](https://github.com/frappe/erpnext/issues/47861)) ([01dd733](01dd7337a2))
2025-06-03 11:54:42 +00:00
ruthra kumar
c614ff419b Merge pull request #47868 from frappe/version-15-hotfix
chore: release v15
2025-06-03 17:23:19 +05:30
ruthra kumar
d5163ed502 Merge pull request #47870 from frappe/mergify/bp/version-15-hotfix/pr-47612
fix: GL entries for rejected returned materials (backport #47612)
2025-06-03 16:45:02 +05:30
rohitwaghchaure
5bac652b5f fix: GL entries for rejected returned materials (#47612)
(cherry picked from commit 3e098da01f)
2025-06-03 10:57:14 +00:00
mergify[bot]
3582b32f03 feat: allow to set valuation rate for Rejected Materials (backport #47582) (#47869)
feat: allow to set valuation rate for Rejected Materials (#47582)

(cherry picked from commit ca0e53dd78)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-06-03 16:25:53 +05:30
ruthra kumar
2815a0d827 Merge pull request #47864 from frappe/mergify/bp/version-15-hotfix/pr-47854
fix: use user default for company instead of global default in purchase order analysis report (backport #47854)
2025-06-03 13:22:23 +05:30
Ayush Marhatta
7d828dc17e fix: use user default for company instead of global default in purchase order analysis report
(cherry picked from commit 49f23513e0)
2025-06-03 07:48:19 +00:00
mergify[bot]
01dd7337a2 feat: specify expense account and cost center for raw materials in Su… (backport #47756) (#47861) 2025-06-03 12:28:12 +05:30
Marc Ramser
470534af78 fix(Timesheet): Only update to_time if it's more than 1 second off (#47702)
* Fix: Only update to_time if it's more than 1 second off

Before, to_time was updated even when it was almost the same as the expected time (like 17:20 vs 17:19:59.998). This causes problems because of small rounding errors and caused valid times like 17:20 to be reset. Now, to_time is only updated if the difference is greater than 1 second.

To reproduce the current error:
* From Time 09:00:00
* To Time 17:20:00
Save 
To Time is 17:19:59

* Update erpnext/projects/doctype/timesheet/timesheet.py

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>

* Update timesheet.py

---------

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-06-03 11:59:13 +05:30
ruthra kumar
a4fe89f65c Merge pull request #47860 from frappe/mergify/bp/version-15-hotfix/pr-47809
fix: cash flow report fixes (backport #47809)
2025-06-03 11:47:50 +05:30
Lakshit Jain
4a1966c680 fix: cash flow report fixes
(cherry picked from commit 20b87512d1)
2025-06-03 05:53:23 +00:00
ruthra kumar
cd7462dd87 Merge pull request #47852 from frappe/mergify/bp/version-15-hotfix/pr-47780
fix: add internal link field in Sales Order connections for internal … (backport #47780)
2025-06-03 09:59:31 +05:30
Karuppasamy923
3c697e90a3 fix: add internal link field in Sales Order connections for internal transactions
(cherry picked from commit e3e6503076)
2025-06-02 11:17:45 +00:00
ruthra kumar
6dde327713 Merge pull request #47849 from frappe/mergify/bp/version-15-hotfix/pr-47502
fix: Handle duplicate Items qty in Quotation (backport #47502)
2025-06-02 15:11:46 +05:30
ruthra kumar
16b10274cf Merge pull request #47840 from frappe/mergify/bp/version-15-hotfix/pr-47839
fix: decimal issue (backport #47839)
2025-06-02 14:51:08 +05:30
Abdeali Chharchhodawala
4c1b415b9d fix: Handle duplicate Items qty in Quotation
fix: Handle duplicate Items qty in Quotation
(cherry picked from commit 39f6d8ffb6)
2025-06-02 09:20:41 +00:00
ruthra kumar
d7124779bf Merge pull request #47842 from frappe/mergify/bp/version-15-hotfix/pr-47821
Accounts receivable show delivery note (backport #47821)
2025-06-02 14:02:05 +05:30
ruthra kumar
053a5b93ca Merge pull request #47844 from frappe/mergify/bp/version-15-hotfix/pr-47781
fix: add company filter to cost center and project in process statement of accounts (backport #47781)
2025-06-02 13:41:21 +05:30
l0gesh29
9f5cfdd65b fix: Accounts receivable shouldn't fetch DN for employees
* fix: reorder function call

* fix: Add condition to fetch return entries for specific party types

(cherry picked from commit c8e052f3c6)
2025-06-02 13:40:20 +05:30
ljain112
5ebf1b9cc4 fix: add company filter to cost center and project in process statement of accounts
(cherry picked from commit 14313b162a)
2025-06-02 08:08:42 +00:00
rohitwaghchaure
34b62d226c fix: decimal issue (#47839)
(cherry picked from commit 0dbd9efc91)
2025-06-02 07:55:28 +00:00
Mihir Kandoi
9bf8904c80 Merge pull request #47832 from frappe/mergify/bp/version-15-hotfix/pr-47806 2025-05-31 21:18:29 +05:30
Mihir Kandoi
ba8a316b06 fix: calculate discount percentage if discount amount is specified (#47806)
(cherry picked from commit bb474f4f42)
2025-05-31 15:23:21 +00:00
mergify[bot]
3879cbd86d fix: improved indexing for SLE queries. (backport #47194) (#47822)
* fix: improved indexing for SLE queries. (#47194)

(cherry picked from commit b49a835b4c)

# Conflicts:
#	erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-30 15:36:51 +05:30
mergify[bot]
9df3b9b059 fix: incorrect actual qty in product bundle balance report (backport #47791) (#47814)
fix: incorrect actual qty in product bundle balance report (#47791)

(cherry picked from commit c544c3e018)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-30 14:01:32 +05:30
ruthra kumar
0131800df2 Merge pull request #47808 from frappe/mergify/bp/version-15-hotfix/pr-47794
fix: use `query.walk() `for escaping special chars in receiable/payable report (backport #47794)
2025-05-29 14:07:34 +05:30
ljain112
2e3ebec53c fix: use query.walk() for escaping special chars in receiable/payable report
(cherry picked from commit a0a51b5074)
2025-05-29 08:21:18 +00:00
mergify[bot]
ef9ccd7a57 chore: removed orphaned function (backport #47796) (#47804)
chore: removed orphaned function (#47796)

(cherry picked from commit cb9e6f6655)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-29 12:25:08 +05:30
Mihir Kandoi
903d9b50fe Merge pull request #47798 from frappe/mergify/bp/version-15-hotfix/pr-47792
feat: show item name for raw materials in BOM creator (backport #47792)
2025-05-28 20:28:51 +05:30
Mihir Kandoi
0c612be6fe feat: show item name for raw materials in BOM creator
(cherry picked from commit 90ba4ad1e1)
2025-05-28 14:23:24 +00:00
ruthra kumar
893a86e173 Merge pull request #47777 from frappe/mergify/bp/version-15-hotfix/pr-47041
fix: Check `return_against` and Await API Call (backport #47041)
2025-05-28 10:57:56 +05:30
Sanket322
5a23d7cdca fix: ensure backend response is awaited before saving
(cherry picked from commit c48db0b7c0)
2025-05-28 03:56:00 +00:00
Sanket322
8623a5650b fix: check return_against exists before api call
(cherry picked from commit 00b6b97197)
2025-05-28 03:56:00 +00:00
mergify[bot]
73bc57f53e Revert "fix: translate_pos_buttons" (backport #47773) (#47774)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix: translate_pos_buttons" (#47773)
2025-05-27 21:11:49 +02:00
mergify[bot]
9192913832 feat: add column "Item Name" to "BOM Stock Report" (backport #47116) (#47485)
Co-authored-by: Patrick Eißler <77415730+PatrickDEissler@users.noreply.github.com>
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-05-27 19:21:41 +02:00
Frappe PR Bot
f59093c6b7 chore(release): Bumped to Version 15.63.0
# [15.63.0](https://github.com/frappe/erpnext/compare/v15.62.0...v15.63.0) (2025-05-27)

### Bug Fixes

* absence of rounding causing discrepancy in the valuation rate calculation (backport [#47700](https://github.com/frappe/erpnext/issues/47700)) ([#47711](https://github.com/frappe/erpnext/issues/47711)) ([f41bcc6](f41bcc6fec))
* add no_copy for lost reasons ([db97dbd](db97dbd394))
* create Quality Inspection button not showing (backport [#47746](https://github.com/frappe/erpnext/issues/47746)) ([#47750](https://github.com/frappe/erpnext/issues/47750)) ([60dfe36](60dfe36195))
* display stock value in currency format in chart warehouse wise stock value ([ba009f4](ba009f4626))
* do not update same field twice ([63ba27e](63ba27e359))
* exchange rate not being fetched when creating supplier quotation from MR ([2c22615](2c22615b6b))
* filter of item for manufacture type material request (backport [#47712](https://github.com/frappe/erpnext/issues/47712)) ([#47717](https://github.com/frappe/erpnext/issues/47717)) ([2961e59](2961e595c2))
* handle multiselect filters for tree doctypes in Customer Ledger Summary Report ([f783bf6](f783bf60a4))
* Headline rendered twice on first save ([f94a14c](f94a14c06a))
* include rejected amount in PI/PR overbilling validation logic ([#47572](https://github.com/frappe/erpnext/issues/47572)) ([cd1c10a](cd1c10a43f))
* incorrect inventory dimension for material transfer (backport [#47592](https://github.com/frappe/erpnext/issues/47592)) ([#47644](https://github.com/frappe/erpnext/issues/47644)) ([9a78283](9a78283ecb))
* incorrect valuation rate due to positive qty (backport [#47686](https://github.com/frappe/erpnext/issues/47686)) ([#47688](https://github.com/frappe/erpnext/issues/47688)) ([62aa1cd](62aa1cdb33))
* linter ([c44493f](c44493fd7e))
* Linter (due to conflicts resolved on gh) ([37f4cf5](37f4cf5367))
* Linters ([91e167f](91e167fe72))
* made changes specifically for value adjustment entry ([74e29f1](74e29f1218))
* Merge conflicts ([3deb11e](3deb11e5b2))
* only include advances within the tcs period ([a2f5975](a2f5975133))
* party account based on party type's account type ([d3d22f6](d3d22f699e))
* patch to rename group_by filter in custom reports (backport [#47709](https://github.com/frappe/erpnext/issues/47709)) ([#47730](https://github.com/frappe/erpnext/issues/47730)) ([a137944](a137944955))
* patch to set status cancelled for already cancelled pos invoices (backport [#47725](https://github.com/frappe/erpnext/issues/47725)) ([#47759](https://github.com/frappe/erpnext/issues/47759)) ([4fd1af2](4fd1af2118))
* **portal:** User cannot create 0 qty SQ from RFQ ([f95a3f5](f95a3f5b8b))
* pos invoice status not updating on cancel (backport [#47556](https://github.com/frappe/erpnext/issues/47556)) ([#47657](https://github.com/frappe/erpnext/issues/47657)) ([db318a4](db318a4e9b))
* prettier ([0f22646](0f2264658f))
* prettier ([2c8db09](2c8db092a0))
* Relabel unit price settings for more clarity ([8891f46](8891f46a22))
* setting paid amount to 0 when is_paid is unchecked in purchase invoice ([895231a](895231a8a7))
* show general ledger in doc currency in Process Statement Of Accounts ([b3cbbf2](b3cbbf2ce3))
* skip drop ship items (backport [#47670](https://github.com/frappe/erpnext/issues/47670)) ([#47718](https://github.com/frappe/erpnext/issues/47718)) ([e058885](e05888502f))
* skip last purchase rate for free item (backport [#47693](https://github.com/frappe/erpnext/issues/47693)) ([#47696](https://github.com/frappe/erpnext/issues/47696)) ([f17b7b5](f17b7b5ee9))
* space ([fe78bb6](fe78bb60c4))
* space ([194e41a](194e41a2d9))
* translate_pos_buttons ([01b0d10](01b0d1057e))
* Treat rows as Unit Price rows only until the qty is 0 ([d963601](d9636018f5))
* typo in TREE_DOCTYPES list "Terrirtory" should be "Territory" ([3d2d1ba](3d2d1ba072))
* updated value after depreciation after value adjustment ([8ed6e98](8ed6e98565))
* use pypika object `LiteralValue` for adding match conditions ([fb2df77](fb2df77da2))

### Features

* add validation for Item Tax Template on rate change ([92d5e91](92d5e91e1f))
* Unit Price Contract ([33366fc](33366fce6c))
* Unit Price Items in Buying (RFQ, SQ, PO) ([f8fa775](f8fa775af3))
2025-05-27 14:56:33 +00:00
ruthra kumar
7ede5392bd Merge pull request #47758 from frappe/version-15-hotfix
chore: release v15
2025-05-27 20:24:59 +05:30
ruthra kumar
0f5c7d95a0 Merge pull request #47772 from frappe/mergify/bp/version-15-hotfix/pr-47766
fix: handle multiselect filters for tree doctypes in Customer Ledger Summary Report (backport #47766)
2025-05-27 20:09:05 +05:30
ljain112
f783bf60a4 fix: handle multiselect filters for tree doctypes in Customer Ledger Summary Report
(cherry picked from commit 536f7d5ff8)
2025-05-27 14:24:08 +00:00
ruthra kumar
4c49ab19d6 Merge pull request #47769 from frappe/mergify/bp/version-15-hotfix/pr-47765
fix: use pypika object `LiteralValue` for adding match conditions (backport #47765)
2025-05-27 19:52:20 +05:30
ruthra kumar
de1afee75a Merge pull request #47770 from frappe/mergify/bp/version-15-hotfix/pr-47767
fix: add no_copy for lost reasons (backport #47767)
2025-05-27 19:52:04 +05:30
l0gesh29
db97dbd394 fix: add no_copy for lost reasons
(cherry picked from commit 98e889a516)
2025-05-27 12:33:50 +00:00
ljain112
fb2df77da2 fix: use pypika object LiteralValue for adding match conditions
(cherry picked from commit 9093e5e363)
2025-05-27 12:31:16 +00:00
ruthra kumar
260073f14a Merge pull request #47764 from frappe/mergify/bp/version-15-hotfix/pr-47763
feat: add validation for Item Tax Template on rate change (backport #47763)
2025-05-27 17:14:54 +05:30
Karuppasamy923
92d5e91e1f feat: add validation for Item Tax Template on rate change
(cherry picked from commit a9a957edc7)
2025-05-27 11:30:15 +00:00
mergify[bot]
4fd1af2118 fix: patch to set status cancelled for already cancelled pos invoices (backport #47725) (#47759)
* fix: patch to set status cancelled for already cancelled pos invoices (#47725)

(cherry picked from commit 4d1d66e579)

# Conflicts:
#	erpnext/patches.txt

* chore: resolve conflict

---------

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-05-27 15:55:40 +05:30
Khushi Rawat
5997e37454 Merge pull request #47754 from khushi8112/asset-value-adjustment-of-zero-cost
fix: updated value after depreciation after value adjustment
2025-05-27 15:28:11 +05:30
Khushi Rawat
63ba27e359 fix: do not update same field twice 2025-05-27 15:10:51 +05:30
ruthra kumar
fd19f284c4 Merge pull request #47755 from frappe/mergify/bp/version-15-hotfix/pr-47679
fix: setting paid amount to 0 when is_paid is unchecked in purchase invoice (backport #47679)
2025-05-27 14:37:21 +05:30
Khushi Rawat
74e29f1218 fix: made changes specifically for value adjustment entry 2025-05-27 14:14:30 +05:30
ruthra kumar
5dee1d40ac Merge pull request #47753 from frappe/mergify/bp/version-15-hotfix/pr-47736
fix: only include advances within the tcs period (backport #47736)
2025-05-27 14:11:01 +05:30
ljain112
895231a8a7 fix: setting paid amount to 0 when is_paid is unchecked in purchase invoice
(cherry picked from commit e358a9e53f)
2025-05-27 08:32:33 +00:00
Khushi Rawat
8ed6e98565 fix: updated value after depreciation after value adjustment 2025-05-27 13:34:03 +05:30
ruthra kumar
70f9c13f3c Merge pull request #47751 from frappe/mergify/bp/version-15-hotfix/pr-47737
fix: party account based on party type's account type (backport #47737)
2025-05-27 13:31:39 +05:30
ljain112
a2f5975133 fix: only include advances within the tcs period
(cherry picked from commit 477ec9fdcc)
2025-05-27 07:49:19 +00:00
ljain112
d3d22f699e fix: party account based on party type's account type
(cherry picked from commit 19b1650522)
2025-05-27 07:44:13 +00:00
mergify[bot]
60dfe36195 fix: create Quality Inspection button not showing (backport #47746) (#47750)
fix: create Quality Inspection button not showing (#47746)

(cherry picked from commit d8cb073eaf)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-27 13:06:32 +05:30
ruthra kumar
b9698366c3 Merge pull request #47747 from frappe/mergify/bp/version-15-hotfix/pr-47654
fix: show general ledger in doc currency in Process Statement Of Accounts (backport #47654)
2025-05-27 12:01:48 +05:30
ruthra kumar
1fb4ac44fe Merge pull request #47748 from frappe/mergify/bp/version-15-hotfix/pr-47659
fix: translate_pos_buttons (backport #47659)
2025-05-27 11:52:27 +05:30
mahsem
0f2264658f fix: prettier
(cherry picked from commit 2839fc9460)
2025-05-27 06:12:19 +00:00
mahsem
fe78bb60c4 fix: space
(cherry picked from commit 50a5b51909)
2025-05-27 06:12:19 +00:00
mahsem
194e41a2d9 fix: space
(cherry picked from commit a442ec4e80)
2025-05-27 06:12:19 +00:00
mahsem
2c8db092a0 fix: prettier
(cherry picked from commit 1953c8489c)
2025-05-27 06:12:19 +00:00
mahsem
c44493fd7e fix: linter
(cherry picked from commit 4a6b5b9993)
2025-05-27 06:12:18 +00:00
mahsem
01b0d1057e fix: translate_pos_buttons
(cherry picked from commit ce45d1664d)
2025-05-27 06:12:18 +00:00
ljain112
9d2f396d75 chore: update test case because currency is auto set to system currency
(cherry picked from commit 22a94d6817)
2025-05-27 06:11:09 +00:00
ljain112
b3cbbf2ce3 fix: show general ledger in doc currency in Process Statement Of Accounts
(cherry picked from commit 998f6a29a4)
2025-05-27 06:11:09 +00:00
ruthra kumar
0cbb7223be Merge pull request #47742 from frappe/mergify/bp/version-15-hotfix/pr-47697
refactor: Fetch party name for contract (backport #47697)
2025-05-26 19:56:31 +05:30
ruthra kumar
c09b258d57 chore: resolve conflicts 2025-05-26 17:48:11 +05:30
ruthra kumar
d5d1a51b92 refactor: patch old contract with full party name
(cherry picked from commit 8e2221178b)

# Conflicts:
#	erpnext/patches.txt
2025-05-26 12:11:31 +00:00
ruthra kumar
9abac4c6df refactor: fetch party name on selection
(cherry picked from commit 752024e222)
2025-05-26 12:11:31 +00:00
ruthra kumar
48f786e493 refactor: full name field in contract
(cherry picked from commit 016924361a)

# Conflicts:
#	erpnext/crm/doctype/contract/contract.json
2025-05-26 12:11:30 +00:00
mergify[bot]
a137944955 fix: patch to rename group_by filter in custom reports (backport #47709) (#47730)
* fix: patch to rename group_by filter in custom reports

(cherry picked from commit 0d19c18c06)

# Conflicts:
#	erpnext/patches.txt

* fix: using python instead of sql query

(cherry picked from commit 48eccb1f73)

* chore: resolve conflict

---------

Co-authored-by: diptanilsaha <diptanil@frappe.io>
2025-05-26 13:29:41 +05:30
ruthra kumar
bb54bebe94 Merge pull request #47726 from frappe/mergify/bp/version-15-hotfix/pr-47253
fix: display stock value in currency format in chart warehouse wise stock value (backport #47253)
2025-05-26 11:35:46 +05:30
Prateek Karamchandani
ba009f4626 fix: display stock value in currency format in chart warehouse wise stock value
(cherry picked from commit 7a5cbc759c)
2025-05-26 05:49:56 +00:00
mergify[bot]
e05888502f fix: skip drop ship items (backport #47670) (#47718)
fix: skip drop ship items (#47670)

(cherry picked from commit 67c86ec028)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-26 07:53:55 +05:30
mergify[bot]
2961e595c2 fix: filter of item for manufacture type material request (backport #47712) (#47717)
fix: filter of item for manufacture type material request (#47712)

(cherry picked from commit 874750f9ce)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-25 20:51:14 +05:30
mergify[bot]
f41bcc6fec fix: absence of rounding causing discrepancy in the valuation rate calculation (backport #47700) (#47711)
fix: absence of rounding causing discrepancy in the valuation rate calculation (#47700)

(cherry picked from commit 1e8ed22421)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-24 17:27:20 +05:30
Marica
a6b1bdc78b Merge pull request #47410 from frappe/mergify/bp/version-15-hotfix/pr-46214
feat: Unit Price Items (backport #46214)
2025-05-23 17:42:33 +02:00
mergify[bot]
f17b7b5ee9 fix: skip last purchase rate for free item (backport #47693) (#47696)
fix: skip last purchase rate for free item (#47693)

(cherry picked from commit c3b17024bd)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-23 09:49:51 +05:30
ruthra kumar
5529a17831 Merge pull request #47685 from frappe/mergify/bp/version-15-hotfix/pr-47675
fix: typo in TREE_DOCTYPES list "Terrirtory" should be "Territory" (backport #47675)
2025-05-22 16:25:15 +05:30
mergify[bot]
62aa1cdb33 fix: incorrect valuation rate due to positive qty (backport #47686) (#47688)
fix: incorrect valuation rate due to positive qty (#47686)

(cherry picked from commit 6ed97b5fda)

Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-05-22 16:17:18 +05:30
ljain112
3d2d1ba072 fix: typo in TREE_DOCTYPES list "Terrirtory" should be "Territory"
(cherry picked from commit 51162cb1a3)
2025-05-22 10:27:05 +00:00
Mihir Kandoi
f3bc80c89d Merge pull request #47678 from frappe/mergify/bp/version-15-hotfix/pr-47658
fix: exchange rate not being fetched when creating supplier quotation… (backport #47658)
2025-05-22 14:36:37 +05:30
Mihir Kandoi
6892994ef6 Merge pull request #47677 from frappe/mergify/bp/version-15-hotfix/pr-47572
fix: include rejected amount in PI/PR overbilling validation logic (backport #47572)
2025-05-22 14:36:19 +05:30
Mihir Kandoi
2c22615b6b fix: exchange rate not being fetched when creating supplier quotation from MR
(cherry picked from commit 9d12ae071a)
2025-05-22 07:26:50 +00:00
Mihir Kandoi
cd1c10a43f fix: include rejected amount in PI/PR overbilling validation logic (#47572)
* fix: include rejected amount in PI/PR overbilling validation logic

* fix: add check if amount is 0

* fix: unneccessary condition

(cherry picked from commit 8d9888b1b6)
2025-05-22 07:23:46 +00:00
mergify[bot]
db318a4e9b fix: pos invoice status not updating on cancel (backport #47556) (#47657)
fix: pos invoice status not updating on cancel (#47556)

(cherry picked from commit 8c86def018)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-05-21 15:09:48 +05:30
mergify[bot]
9a78283ecb fix: incorrect inventory dimension for material transfer (backport #47592) (#47644)
fix: incorrect inventory dimension for material transfer (#47592)

(cherry picked from commit 738cb6a0c1)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-20 20:46:57 +05:30
Frappe PR Bot
52a5cd9702 chore(release): Bumped to Version 15.62.0
# [15.62.0](https://github.com/frappe/erpnext/compare/v15.61.1...v15.62.0) (2025-05-20)

### Bug Fixes

* alias name and parent to prevent child row mapping issues ([612fa7c](612fa7c672))
* allow FG as RM by default (backport [#47543](https://github.com/frappe/erpnext/issues/47543)) ([#47550](https://github.com/frappe/erpnext/issues/47550)) ([9355782](9355782397))
* asset cancellation issue (backport [#47639](https://github.com/frappe/erpnext/issues/47639)) ([#47641](https://github.com/frappe/erpnext/issues/47641)) ([ce9da48](ce9da48a5e))
* asset image field updation issue (backport [#47615](https://github.com/frappe/erpnext/issues/47615)) ([#47617](https://github.com/frappe/erpnext/issues/47617)) ([35c7af1](35c7af1b9d))
* better validation message with solution for BOM recursion (backport [#47472](https://github.com/frappe/erpnext/issues/47472)) ([#47477](https://github.com/frappe/erpnext/issues/47477)) ([a450f4c](a450f4ce64))
* Broken test + use `super()` appropriately ([5b50d5a](5b50d5abf2))
* Conflicts ([9cede83](9cede83de1))
* correct expense amount in party ledger summary. ([09a46fc](09a46fcf0e))
* date formatting in process_statement_of_accounts accounts_receivable print format ([cf354c0](cf354c0da3))
* include only invoices with update_stock = 0  for billed amt in delivery note. ([70e190d](70e190dbbb))
* incorrect qty during reset (backport [#47593](https://github.com/frappe/erpnext/issues/47593)) ([#47595](https://github.com/frappe/erpnext/issues/47595)) ([72ae80e](72ae80e2e3))
* mapping of dispatch address when creating PO from SO (backport [#47552](https://github.com/frappe/erpnext/issues/47552)) ([#47553](https://github.com/frappe/erpnext/issues/47553)) ([30ec69c](30ec69c977))
* POS Invoice can't use Loyalty Points when Global Rounded Total is Disabled (backport [#47491](https://github.com/frappe/erpnext/issues/47491)) ([#47564](https://github.com/frappe/erpnext/issues/47564)) ([926c0c5](926c0c5cf4))
* pos item group filter fetching wrong items (backport [#47545](https://github.com/frappe/erpnext/issues/47545)) ([#47546](https://github.com/frappe/erpnext/issues/47546)) ([5a3eff0](5a3eff05a1))
* **quotation:** use `Text Editor` field in alternative items dialog for item description ([32eeeda](32eeedac24))
* remove hardcoded doctype in `make_return_doc` ([1a69d81](1a69d8137f))
* removed invalid child param to prevent callback failure ([073d06c](073d06c44f))
* **SalesAnalytics:** Ignore opening entries ([be280a4](be280a408e))
* set no_copy to party_balance field in Payment Entry ([da4ed5c](da4ed5cc18))
* set no_copy to party_balance field in Payment Entry ([52cab02](52cab02a5c))
* validate inter-company transaction address links ([86aa072](86aa072235))
* validation message format (backport [#47542](https://github.com/frappe/erpnext/issues/47542)) ([#47549](https://github.com/frappe/erpnext/issues/47549)) ([f225e19](f225e1986e))

### Features

* add checbox for validating time logs in job card ([80c7661](80c76618ae))
* add option to calculate ageing based on report date or today date ([69337cf](69337cf18b))
2025-05-20 13:54:53 +00:00
ruthra kumar
f3052a446f Merge pull request #47636 from frappe/version-15-hotfix
chore: release v15
2025-05-20 19:23:12 +05:30
mergify[bot]
ce9da48a5e fix: asset cancellation issue (backport #47639) (#47641)
fix: asset cancellation issue (#47639)

(cherry picked from commit 33ab64dec2)

Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-05-20 17:21:48 +05:30
mergify[bot]
a450f4ce64 fix: better validation message with solution for BOM recursion (backport #47472) (#47477)
fix: better validation message with solution for BOM recursion

(cherry picked from commit 7103cdd84a)

Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2025-05-20 16:15:23 +05:30
ruthra kumar
a029f2e8a3 Merge pull request #47633 from frappe/mergify/bp/version-15-hotfix/pr-47632
fix(quotation): use `Text Editor` field in alternative items dialog (backport #47632)
2025-05-20 14:25:10 +05:30
Akhil Narang
32eeedac24 fix(quotation): use Text Editor field in alternative items dialog for item description
`Data` causes text to overflow - the field is originally a `Text Editor` field

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
(cherry picked from commit c7ea91073e)
2025-05-20 08:52:05 +00:00
ruthra kumar
ecb2bab70f Merge pull request #47631 from frappe/mergify/bp/version-15-hotfix/pr-47629
fix: date formatting in process_statement_of_accounts accounts_receivable print format (backport #47629)
2025-05-20 14:06:20 +05:30
ljain112
cf354c0da3 fix: date formatting in process_statement_of_accounts accounts_receivable print format
(cherry picked from commit 67c32ce3c9)

# Conflicts:
#	erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html
2025-05-20 13:57:47 +05:30
ruthra kumar
73fc8c374f Merge pull request #47628 from frappe/mergify/bp/version-15-hotfix/pr-47580
feat: add option to calculate ageing based on report date or today's date (backport #47580)
2025-05-20 13:53:04 +05:30
ruthra kumar
8c4ce03f44 Merge pull request #47623 from frappe/mergify/bp/version-15-hotfix/pr-47486
fix(SalesAnalytics): Ignore opening entries (backport #47486)
2025-05-20 13:21:36 +05:30
l0gesh29
69337cf18b feat: add option to calculate ageing based on report date or today date
(cherry picked from commit c67ba2d49b)
2025-05-20 07:48:39 +00:00
ruthra kumar
b773b494a0 Merge pull request #47625 from frappe/mergify/bp/version-15-hotfix/pr-47559
fix: include only invoices with update_stock = 0  for billed amt in delivery note. (backport #47559)
2025-05-20 11:25:06 +05:30
ljain112
70e190dbbb fix: include only invoices with update_stock = 0 for billed amt in delivery note.
(cherry picked from commit 6dc459db58)
2025-05-20 05:31:56 +00:00
l0gesh29
be280a408e fix(SalesAnalytics): Ignore opening entries
(cherry picked from commit 6d269b4409)
2025-05-20 05:20:43 +00:00
ruthra kumar
9584c80857 Merge pull request #47622 from frappe/mergify/bp/version-15-hotfix/pr-47614
fix: remove hardcoded doctype in `make_return_doc` (backport #47614)
2025-05-20 10:14:57 +05:30
barredterra
1a69d8137f fix: remove hardcoded doctype in make_return_doc
(cherry picked from commit 45a5c19dd4)
2025-05-20 04:30:11 +00:00
mergify[bot]
35c7af1b9d fix: asset image field updation issue (backport #47615) (#47617)
fix: asset image field updation issue (#47615)

(cherry picked from commit ff2ccf9bce)

Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-05-20 01:28:45 +05:30
ruthra kumar
da4ed5cc18 fix: set no_copy to party_balance field in Payment Entry 2025-05-19 16:15:16 +05:30
ruthra kumar
927d0f686f Merge pull request #47600 from frappe/mergify/bp/version-15-hotfix/pr-47505
fix: validate inter company transaction address links (backport #47505)
2025-05-19 13:25:08 +05:30
Bhavan23
8ee9a46d96 test: add test case to validate inter-company transaction address links
(cherry picked from commit 0caa757dd6)
2025-05-19 07:39:50 +00:00
Bhavan23
86aa072235 fix: validate inter-company transaction address links
(cherry picked from commit aed46ad5b9)
2025-05-19 07:39:50 +00:00
mergify[bot]
72ae80e2e3 fix: incorrect qty during reset (backport #47593) (#47595)
fix: incorrect qty during reset (#47593)

(cherry picked from commit a058fe7319)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-19 12:02:29 +05:30
Mihir Kandoi
829550cd99 Merge pull request #47577 from frappe/mergify/bp/version-15-hotfix/pr-47570
feat: add checkbox for validating time logs in job card (backport #47570)
2025-05-17 00:34:56 +05:30
Mihir Kandoi
249d18962c chore: resolve conflicts 2025-05-17 00:08:39 +05:30
Khushi Rawat
b9f12ed4c7 Merge pull request #47576 from frappe/mergify/bp/version-15-hotfix/pr-47573
fix: alias 'name' and 'parent' to prevent child row mapping issues (backport #47573)
2025-05-16 15:52:37 +05:30
Mihir Kandoi
80c76618ae feat: add checbox for validating time logs in job card
(cherry picked from commit 2d9a6a4de8)

# Conflicts:
#	erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json
2025-05-16 10:05:52 +00:00
Khushi Rawat
073d06c44f fix: removed invalid child param to prevent callback failure
(cherry picked from commit 1ca51e4f14)
2025-05-16 10:05:51 +00:00
Khushi Rawat
612fa7c672 fix: alias name and parent to prevent child row mapping issues
(cherry picked from commit a418e377f4)
2025-05-16 10:05:51 +00:00
marination
e7dc31191c Merge branch 'version-15-hotfix' into mergify/bp/version-15-hotfix/pr-46214 2025-05-15 18:50:58 +02:00
mergify[bot]
926c0c5cf4 fix: POS Invoice can't use Loyalty Points when Global Rounded Total is Disabled (backport #47491) (#47564)
fix: POS Invoice can't use Loyalty Points when Global Rounded Total is Disabled (#47491)

(cherry picked from commit b541b536c3)

Co-authored-by: Kitti U. @ Ecosoft <kittiu@gmail.com>
2025-05-15 19:35:03 +05:30
ljain112
52cab02a5c fix: set no_copy to party_balance field in Payment Entry 2025-05-15 18:03:25 +05:30
Frappe PR Bot
31fa1c9a58 chore(release): Bumped to Version 15.61.1
## [15.61.1](https://github.com/frappe/erpnext/compare/v15.61.0...v15.61.1) (2025-05-15)

### Bug Fixes

* correct expense amount in party ledger summary. ([67741f1](67741f1a21))
2025-05-15 06:05:18 +00:00
ruthra kumar
631a9bfa7c Merge pull request #47557 from frappe/mergify/bp/version-15/pr-47541
fix: correct expense amount in party ledger summary. (backport #47541)
2025-05-15 11:33:53 +05:30
ljain112
67741f1a21 fix: correct expense amount in party ledger summary.
(cherry picked from commit 09a46fcf0e)
2025-05-15 05:47:32 +00:00
mergify[bot]
f225e1986e fix: validation message format (backport #47542) (#47549)
fix: validation message format (#47542)

(cherry picked from commit a18e1cffa7)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-15 10:31:28 +05:30
mergify[bot]
9355782397 fix: allow FG as RM by default (backport #47543) (#47550)
fix: allow FG as RM by default (#47543)

(cherry picked from commit 4241bfd4bc)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-15 10:31:12 +05:30
mergify[bot]
30ec69c977 fix: mapping of dispatch address when creating PO from SO (backport #47552) (#47553)
fix: mapping of dispatch address when creating PO from SO (#47552)

* fix: mapping of dispatch address when creating PO from SO

* fix: add to default supplier function as well

(cherry picked from commit 82161e9cb5)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-05-14 20:52:04 +05:30
ruthra kumar
b22831bd94 Merge pull request #47541 from ljain112/fix-cls
fix: correct expense amount in party ledger summary.
2025-05-14 17:56:22 +05:30
mergify[bot]
5a3eff05a1 fix: pos item group filter fetching wrong items (backport #47545) (#47546)
fix: pos item group filter fetching wrong items (#47545)

(cherry picked from commit 5c28e01590)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-05-14 17:41:36 +05:30
ljain112
09a46fcf0e fix: correct expense amount in party ledger summary. 2025-05-14 12:38:38 +05:30
marination
37f4cf5367 fix: Linter (due to conflicts resolved on gh) 2025-05-13 17:18:40 +02:00
marination
f95a3f5b8b fix(portal): User cannot create 0 qty SQ from RFQ
- The portal uses `create_supplier_quotation` for SQ creation which excludes 0 qty items
2025-05-13 17:13:41 +02:00
marination
0286788e97 chore: Relabel according to review changes 2025-05-13 17:13:41 +02:00
marination
8891f46a22 fix: Relabel unit price settings for more clarity 2025-05-13 17:13:41 +02:00
Marica
890ce4a676 Merge branch 'version-15-hotfix' into mergify/bp/version-15-hotfix/pr-46214 2025-05-13 17:07:43 +02:00
Marica
2960d0dce1 Merge pull request #47537 from frappe/mergify/bp/version-15-hotfix/pr-38530
refactor: Consolidate duplicate zero-quantity Items checks for transactions. (backport #38530)
2025-05-13 16:55:54 +02:00
Frappe PR Bot
6e699178ae chore(release): Bumped to Version 15.61.0
# [15.61.0](https://github.com/frappe/erpnext/compare/v15.60.2...v15.61.0) (2025-05-13)

### Bug Fixes

* accumulate values for all the fiscal years in Profit And Loss Statement ([6dbdc36](6dbdc36af9))
* added PR/PI overbilling validation (backport [#47385](https://github.com/frappe/erpnext/issues/47385)) ([#47497](https://github.com/frappe/erpnext/issues/47497)) ([309ea7b](309ea7b9cf))
* broken test suite due to incorrect OR filter ([4a37f2a](4a37f2a925))
* condition for advance_account assignment ([b6e5e33](b6e5e3347d))
* do not mandate depreciation accounts for non depreciable asset category ([a75931c](a75931c90f))
* dont auto-fetch latest exchange rate ([0adb715](0adb7156cd))
* error while making SABB for backdated stock reco ([7ba7d1a](7ba7d1a2a4))
* ignore "Account Closing Balance" doctype on Period Closing Voucher cancellation ([39c0291](39c029133f))
* only depreciable category assets are allowed for depreciation ([242a119](242a119f95))
* **payment-reconciliation:** use reconciliation_takes_effect_on from company ([25fabda](25fabda40a))
* POS non-stock item mistakenly hidden as unavailable (backport [#47493](https://github.com/frappe/erpnext/issues/47493)) ([#47506](https://github.com/frappe/erpnext/issues/47506)) ([b18692c](b18692c120))
* resolved conflicts ([dcfae61](dcfae61a7a))
* timesheet portal showing total billing hours ([64ae4e1](64ae4e1fec))
* typo ([d61a85e](d61a85e316))
* typo in event.js ([67d24e9](67d24e9635))
* warning message for COGS account in the stock entry ([7abe199](7abe199e2a))

### Features

* add non depreciable category checkbox in asset category ([96d3bfd](96d3bfd2d9))
* add routing/sequencing to work order operations (backport [#46975](https://github.com/frappe/erpnext/issues/46975)) ([#47534](https://github.com/frappe/erpnext/issues/47534)) ([56d0357](56d0357f6f))

### Performance Improvements

* Skip link checking on repost's remove_attached_file (backport [#45061](https://github.com/frappe/erpnext/issues/45061)) ([#47450](https://github.com/frappe/erpnext/issues/47450)) ([09e7bfb](09e7bfbacb))
2025-05-13 14:04:07 +00:00
ruthra kumar
0f350ef24d Merge pull request #47528 from frappe/version-15-hotfix
chore: release v15
2025-05-13 19:32:35 +05:30
mergify[bot]
56d0357f6f feat: add routing/sequencing to work order operations (backport #46975) (#47534)
* feat: add routing/sequencing to work order operations (#46975)

* feat: add routing/sequencing to work order operations

* fix: add validation and remove reorderin for non sequence id operations

* chore: readability

* fix: logical error

* fix: logical error

* chore: added row number in error message

(cherry picked from commit f1159b6ea6)

# Conflicts:
#	erpnext/manufacturing/doctype/work_order_operation/work_order_operation.json

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-05-13 19:02:01 +05:30
marination
5b50d5abf2 fix: Broken test + use super() appropriately
- test: Remove `test_bom_qty`. It had invalid code. Its been removed from develop. There wasn't a strong case being tested.
2025-05-13 14:42:57 +02:00
marination
9cede83de1 fix: Conflicts 2025-05-13 14:26:54 +02:00
Bernd Oliver Sünderhauf
a8b982dd0a chore: Adapt translations to reworded message.
(cherry picked from commit 3688d9412e)

# Conflicts:
#	erpnext/translations/tr.csv
2025-05-13 12:13:56 +00:00
Bernd Oliver Sünderhauf
cf45ffdabe refactor: Consolidate duplicate zero-quantity transaction Items checks.
(cherry picked from commit 4918aeb4c6)

# Conflicts:
#	erpnext/stock/doctype/stock_entry/stock_entry.py
2025-05-13 12:13:47 +00:00
Bernd Oliver Sünderhauf
e91a0acbb3 test: Add, expand and refine test-cases for zero-quantity transactions.
(cherry picked from commit b2d8a44199)

# Conflicts:
#	erpnext/selling/doctype/sales_order/test_sales_order.py
#	erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
#	erpnext/stock/doctype/stock_entry/stock_entry.py
2025-05-13 12:13:46 +00:00
Khushi Rawat
fbbae80f92 Merge pull request #47533 from frappe/mergify/bp/version-15-hotfix/pr-47530
feat: non depreciable asset category (backport #47530)
2025-05-13 17:23:09 +05:30
Khushi Rawat
dcfae61a7a fix: resolved conflicts 2025-05-13 17:07:14 +05:30
marination
3deb11e5b2 fix: Merge conflicts 2025-05-13 13:35:19 +02:00
Khushi Rawat
242a119f95 fix: only depreciable category assets are allowed for depreciation
(cherry picked from commit d715db1226)
2025-05-13 11:34:35 +00:00
Khushi Rawat
a75931c90f fix: do not mandate depreciation accounts for non depreciable asset category
(cherry picked from commit 32cb7d6388)
2025-05-13 11:34:35 +00:00
Khushi Rawat
96d3bfd2d9 feat: add non depreciable category checkbox in asset category
(cherry picked from commit fbbfd6531b)

# Conflicts:
#	erpnext/assets/doctype/asset_category/asset_category.json
2025-05-13 11:34:35 +00:00
ruthra kumar
165a4fcef6 Merge pull request #47527 from frappe/mergify/bp/version-15-hotfix/pr-47520
fix: ignore "Account Closing Balance" doctype on Period Closing Voucher cancellation (backport #47520)
2025-05-13 15:10:13 +05:30
ruthra kumar
29b35d6eb0 Merge pull request #47522 from frappe/mergify/bp/version-15-hotfix/pr-47468
fix(payment-reconciliation): use reconciliation_takes_effect_on from company (backport #47468)
2025-05-13 15:03:59 +05:30
ljain112
39c029133f fix: ignore "Account Closing Balance" doctype on Period Closing Voucher cancellation
(cherry picked from commit d6602d63fc)
2025-05-13 09:21:31 +00:00
ruthra kumar
7f55d59a7b chore: drop redundant patch 2025-05-13 14:45:51 +05:30
ruthra kumar
95f21e5ecd Merge pull request #47523 from frappe/mergify/bp/version-15-hotfix/pr-47521
fix: condition for advance_account assignment (backport #47521)
2025-05-13 14:31:29 +05:30
Bhavan23
bafd9ed15e chore: simplify repeated condition checks
(cherry picked from commit 7bc62cedc6)
2025-05-13 14:14:13 +05:30
Bhavan23
25fabda40a fix(payment-reconciliation): use reconciliation_takes_effect_on from company
(cherry picked from commit 19f1ffbdc2)
2025-05-13 14:14:10 +05:30
ljain112
b6e5e3347d fix: condition for advance_account assignment
(cherry picked from commit ded46ce3d8)
2025-05-13 08:43:18 +00:00
ruthra kumar
2868446292 Merge pull request #47517 from frappe/mergify/bp/version-15-hotfix/pr-47367
fix: Use `Currency` instead of `Float` in GL report to show details (backport #47367)
2025-05-13 13:08:32 +05:30
Abdeali Chharchhodawala
811fe4fee6 Merge pull request #47367 from Abdeali099/gl-report-field-float-to-currency
fix: Use `Currency` instead of `Float` in GL report to show details
(cherry picked from commit e4e0bb68ec)
2025-05-13 05:57:49 +00:00
mergify[bot]
b6bf13ff02 refactor: available serial no report (backport #47333) (#47500)
* refactor: available serial no report

(cherry picked from commit 74eb611563)

* chore: further optimizations

(cherry picked from commit 653e0a2e3a)

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-05-12 23:29:51 +05:30
ruthra kumar
b82e2585d5 Merge pull request #47508 from frappe/mergify/bp/version-15-hotfix/pr-47243
fix: accumulate values for all the fiscal years in Profit And Loss Statement (backport #47243)
2025-05-12 17:09:57 +05:30
ruthra kumar
9ca96a63c3 refactor(test): don't default to accumulate
(cherry picked from commit 54e4e7918e)
2025-05-12 16:54:14 +05:30
ruthra kumar
98cb9c6b96 test: accumulate filter on P&L report
(cherry picked from commit afff6b84ce)
2025-05-12 16:54:09 +05:30
ruthra kumar
d61a85e316 fix: typo
(cherry picked from commit 61d13ce232)
2025-05-12 11:17:32 +00:00
ljain112
6dbdc36af9 fix: accumulate values for all the fiscal years in Profit And Loss Statement
(cherry picked from commit 6851322361)
2025-05-12 11:17:32 +00:00
mergify[bot]
b18692c120 fix: POS non-stock item mistakenly hidden as unavailable (backport #47493) (#47506)
fix: POS non-stock item mistakenly hidden as unavailable (#47493)

(cherry picked from commit 57f3489dfa)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-05-12 15:10:11 +05:30
mergify[bot]
309ea7b9cf fix: added PR/PI overbilling validation (backport #47385) (#47497)
* fix: added PR/PI overbilling validation

(cherry picked from commit f4ffc57b51)

* test: added test

(cherry picked from commit b406ec724b)

* fix: linter error

(cherry picked from commit 27e842ba02)

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-05-11 14:31:46 +05:30
Mihir Kandoi
775b2432ab Merge pull request #47494 from frappe/mergify/bp/version-15-hotfix/pr-47481
fix: timesheet portal showing total billing hours (backport #47481)
2025-05-10 12:04:04 +05:30
Mihir Kandoi
64ae4e1fec fix: timesheet portal showing total billing hours
(cherry picked from commit b04a07fda0)
2025-05-10 06:09:25 +00:00
ruthra kumar
005014ef6a Merge pull request #47482 from frappe/mergify/bp/version-15-hotfix/pr-47380
fix: broken CI - uae vat 201 tests failing (backport #47380)
2025-05-09 15:00:55 +05:30
ruthra kumar
4a37f2a925 fix: broken test suite due to incorrect OR filter
(cherry picked from commit 37d74e387d)
2025-05-09 09:13:26 +00:00
ruthra kumar
870be7a79b Merge pull request #47467 from frappe/mergify/bp/version-15-hotfix/pr-47462
Update event.js (backport #47462)
2025-05-08 14:13:19 +05:30
Yaiphalemba Mangshatabam
67d24e9635 fix: typo in event.js
"Sales Partners" -> "Sales Partner"

(cherry picked from commit edee75c757)
2025-05-08 08:40:56 +00:00
rohitwaghchaure
3ba7bb3ab7 Merge pull request #47454 from frappe/mergify/bp/version-15-hotfix/pr-47452
fix: warning message for COGS account in the stock entry (backport #47452)
2025-05-08 13:58:08 +05:30
rohitwaghchaure
72ec3f3d18 Merge pull request #47458 from frappe/mergify/bp/version-15-hotfix/pr-47457
fix: error while making SABB for backdated stock reco (backport #47457)
2025-05-08 13:57:43 +05:30
Rohit Waghchaure
7ba7d1a2a4 fix: error while making SABB for backdated stock reco
(cherry picked from commit ad25636afb)
2025-05-07 15:49:10 +00:00
Rohit Waghchaure
7abe199e2a fix: warning message for COGS account in the stock entry
(cherry picked from commit bba6b0ff45)
2025-05-07 10:50:21 +00:00
mergify[bot]
09e7bfbacb perf: Skip link checking on repost's remove_attached_file (backport #45061) (#47450)
perf: Skip link checking on repost's remove_attached_file (#45061)

This is internal detail, doesn't need to do horrible link checks in
framework.

(cherry picked from commit 4f690affc9)

Co-authored-by: Ankush Menat <ankush@frappe.io>
2025-05-07 14:04:12 +05:30
ruthra kumar
ef7b09fc11 Merge pull request #47448 from frappe/mergify/bp/version-15-hotfix/pr-47447
fix: dont auto-fetch latest exchange rate (backport #47447)
2025-05-07 11:22:50 +05:30
ruthra kumar
0adb7156cd fix: dont auto-fetch latest exchange rate
- also use correct currency field for comparison

(cherry picked from commit 4ccd0a7407)
2025-05-07 05:47:33 +00:00
Frappe PR Bot
7fb557197a chore(release): Bumped to Version 15.60.2
## [15.60.2](https://github.com/frappe/erpnext/compare/v15.60.1...v15.60.2) (2025-05-06)

### Bug Fixes

* 'time to resolve: failed' on issue (backport [#47406](https://github.com/frappe/erpnext/issues/47406)) ([#47407](https://github.com/frappe/erpnext/issues/47407)) ([21612fc](21612fc230))
* backward compatibility for renamed group_by filter on reports (backport [#47362](https://github.com/frappe/erpnext/issues/47362)) ([#47403](https://github.com/frappe/erpnext/issues/47403)) ([0e5c709](0e5c709f7b))
* change shipping address fetching condition ([0aabe4f](0aabe4fd1e))
* completed transactions showing in the list (backport [#47374](https://github.com/frappe/erpnext/issues/47374)) ([#47379](https://github.com/frappe/erpnext/issues/47379)) ([1ef7da8](1ef7da837f))
* do not allocate amount when ref's doctype or name are not set ([c2e36da](c2e36daa32))
* do not mandate depreciation account for assets without depreciation (backport [#47427](https://github.com/frappe/erpnext/issues/47427)) ([#47428](https://github.com/frappe/erpnext/issues/47428)) ([01e975b](01e975b481))
* not able to submit the stock entry ([#47383](https://github.com/frappe/erpnext/issues/47383)) ([035394a](035394ae6a))
* party name in Ledger Summary ([4fc14b3](4fc14b3097))
* precision issue ([b6908a7](b6908a79bd))
* rename unchanged group_by filter related to general ledger report (backport [#47366](https://github.com/frappe/erpnext/issues/47366)) ([#47405](https://github.com/frappe/erpnext/issues/47405)) ([8d1e855](8d1e855dc8))
* renaming group by fieldname and value in reports (backport [#47352](https://github.com/frappe/erpnext/issues/47352)) ([#47360](https://github.com/frappe/erpnext/issues/47360)) ([85a8adf](85a8adf804))
* show party type in due date exceeding message ([f73e99e](f73e99e9d2))
* stock reco recalculate qty not works for opening stock reco ([2bd30e3](2bd30e3c46))
* update accounts on change of mode of payment in sales invoice payment (backport [#47381](https://github.com/frappe/erpnext/issues/47381)) ([#47400](https://github.com/frappe/erpnext/issues/47400)) ([afb44a6](afb44a677c))
* validation for difference account ([f4a43d0](f4a43d07b0))
* warning message before changing the valuation method (backport [#47340](https://github.com/frappe/erpnext/issues/47340)) ([#47342](https://github.com/frappe/erpnext/issues/47342)) ([4ef2b77](4ef2b77973))
2025-05-06 14:11:12 +00:00
ruthra kumar
7733e417a4 Merge pull request #47429 from frappe/version-15-hotfix
chore: release v15
2025-05-06 19:39:35 +05:30
rohitwaghchaure
d8fb11009f Merge pull request #47440 from frappe/mergify/bp/version-15-hotfix/pr-47435
fix: stock reco recalculate qty not works for opening stock reco (backport #47435)
2025-05-06 18:45:43 +05:30
Rohit Waghchaure
2bd30e3c46 fix: stock reco recalculate qty not works for opening stock reco
(cherry picked from commit 97095c7d24)
2025-05-06 12:57:56 +00:00
rohitwaghchaure
fb56db1166 Merge pull request #47437 from frappe/mergify/bp/version-15-hotfix/pr-47397
fix: precision issue (backport #47397)
2025-05-06 17:50:26 +05:30
Rohit Waghchaure
b6908a79bd fix: precision issue
(cherry picked from commit 69bee93bfd)
2025-05-06 11:59:50 +00:00
mergify[bot]
f4551bb918 feat!: configure which rate is used to auto-update price list (backport #47417)
Co-authored-by: Sagar Vora <16315650+sagarvora@users.noreply.github.com>
2025-05-06 17:00:03 +05:30
mergify[bot]
01e975b481 fix: do not mandate depreciation account for assets without depreciation (backport #47427) (#47428)
fix: do not mandate depreciation account for assets without depreciation (#47427)

(cherry picked from commit 51ea33e743)

Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-05-06 15:21:14 +05:30
ruthra kumar
91cbf2ec4f Merge pull request #47426 from frappe/mergify/bp/version-15-hotfix/pr-47337
fix: do not allocate amount when ref's doctype or name are not set (backport #47337)
2025-05-06 15:00:46 +05:30
Abdeali Chharchhoda
c2e36daa32 fix: do not allocate amount when ref's doctype or name are not set
(cherry picked from commit b9a02b466b)
2025-05-06 09:04:52 +00:00
ruthra kumar
74caf8134c Merge pull request #47416 from frappe/mergify/bp/version-15-hotfix/pr-47408
fix: show party type in due date exceeding message (backport #47408)
2025-05-06 14:32:52 +05:30
ruthra kumar
40faa7f7b9 chore: resolve conflicts and pass all parameters 2025-05-06 14:14:41 +05:30
Abdeali Chharchhoda
f73e99e9d2 fix: show party type in due date exceeding message
(cherry picked from commit b6d9134014)

# Conflicts:
#	erpnext/accounts/party.py
2025-05-06 06:28:48 +00:00
ruthra kumar
2d77e056bc Merge pull request #47414 from frappe/mergify/bp/version-15-hotfix/pr-47358
fix: change shipping address fetching condition (backport #47358)
2025-05-06 11:28:56 +05:30
Vimal
0aabe4fd1e fix: change shipping address fetching condition
(cherry picked from commit 0b4add2f2b)
2025-05-06 05:29:00 +00:00
marination
f94a14c06a fix: Headline rendered twice on first save
- `refresh` gets triggered twice and that renders the note twice
- Remove any existing note before rendering

(cherry picked from commit bf62f9ad57)
2025-05-05 16:59:18 +00:00
marination
d9636018f5 fix: Treat rows as Unit Price rows only until the qty is 0
- The unit price check should depend on the row qty being 0
- Once the row ceases to be 0, it is treated as an ordinary row
- test: PO, SO and Quotation

(cherry picked from commit 0447c7be0a)

# Conflicts:
#	erpnext/selling/doctype/quotation/test_quotation.py
#	erpnext/selling/doctype/sales_order/test_sales_order.py
2025-05-05 16:59:17 +00:00
marination
2d96a62530 test: Sales Order + fix: Mapping of Items from Quotation & SO
(cherry picked from commit 55981c8358)

# Conflicts:
#	erpnext/selling/doctype/sales_order/test_sales_order.py
2025-05-05 16:59:17 +00:00
marination
eba73df88e test: Purchase Order with Unit Price Items
- chore: Fix error message in accounts controller

(cherry picked from commit eea758f5b2)

# Conflicts:
#	erpnext/buying/doctype/purchase_order/test_purchase_order.py
#	erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py
2025-05-05 16:59:16 +00:00
marination
c19065e675 test: Zero Qty in RFQ and Supplier Quotation
(cherry picked from commit 8f96c0b546)

# Conflicts:
#	erpnext/buying/doctype/request_for_quotation/test_request_for_quotation.py
#	erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py
2025-05-05 16:59:16 +00:00
marination
f8fa775af3 feat: Unit Price Items in Buying (RFQ, SQ, PO)
- chore: Extract `set_unit_price_items_note` into a util

(cherry picked from commit e403d3f153)

# Conflicts:
#	erpnext/buying/doctype/buying_settings/buying_settings.json
#	erpnext/buying/doctype/purchase_order/purchase_order.json
#	erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
#	erpnext/selling/doctype/quotation/quotation.json
#	erpnext/selling/doctype/selling_settings/selling_settings.json
2025-05-05 16:59:16 +00:00
marination
91e167fe72 fix: Linters
(cherry picked from commit 71f65bab5e)

# Conflicts:
#	erpnext/selling/doctype/sales_order/sales_order.py
2025-05-05 16:59:15 +00:00
marination
33366fce6c feat: Unit Price Contract
(cherry picked from commit c1e4e7af28)

# Conflicts:
#	erpnext/controllers/accounts_controller.py
#	erpnext/selling/doctype/quotation/quotation.json
#	erpnext/selling/doctype/sales_order/sales_order.py
#	erpnext/selling/doctype/selling_settings/selling_settings.json
2025-05-05 16:59:15 +00:00
mergify[bot]
8d1e855dc8 fix: rename unchanged group_by filter related to general ledger report (backport #47366) (#47405)
fix: rename unchanged group_by filter related to general ledger report (#47366)

(cherry picked from commit 3de249dcba)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-05-05 18:01:51 +05:30
mergify[bot]
0e5c709f7b fix: backward compatibility for renamed group_by filter on reports (backport #47362) (#47403)
fix: backward compatibility for renamed group_by filter on reports (#47362)

* fix: backward compatibility for renamed group_by filter in general ledger report

* fix: backward compatibility for renamed group_by filter in supplier quotation comparison report

(cherry picked from commit d4ffa54136)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-05-05 18:01:29 +05:30
mergify[bot]
21612fc230 fix: 'time to resolve: failed' on issue (backport #47406) (#47407)
fix: 'time to resolve: failed' on issue (#47406)

* fix: 'time to resolve: failed' on issue

* fix: sla_resolution_date

(cherry picked from commit 45393d51a2)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-05-05 17:50:36 +05:30
mergify[bot]
afb44a677c fix: update accounts on change of mode of payment in sales invoice payment (backport #47381) (#47400)
* fix: update accounts on change of mode of payment in sales invoice payment (#47381)

* fix: update accounts on change of mode of payment in sales invoice payment

* test: fixed tests

(cherry picked from commit 8067799692)

# Conflicts:
#	erpnext/accounts/doctype/mode_of_payment/test_mode_of_payment.py
#	erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
#	erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py

* chore: resolve conflict

* chore: remove unused library

* chore: resolve conflict

* chore: resolve conflict

* chore: resolve linter issue

---------

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-05-05 16:35:31 +05:30
ruthra kumar
4f6aee3f22 Merge pull request #47399 from frappe/mergify/bp/version-15-hotfix/pr-47145
refactor: make AR / AP report more memory efficient (backport #47145)
2025-05-05 16:03:36 +05:30
ruthra kumar
fc1b1ca5e2 chore: resolve conflict 2025-05-05 15:47:39 +05:30
ruthra kumar
f69b8d7e2d refactor: set default for fetch methods
(cherry picked from commit ca1e81e1b5)
2025-05-05 10:14:49 +00:00
ruthra kumar
2147441e64 refactor: use fetch method based on configuration
(cherry picked from commit b5bb6f3508)
2025-05-05 10:14:49 +00:00
ruthra kumar
5e5cf68b32 refactor: configurable fetch method for AR / AP report
(cherry picked from commit 66fd639b52)

# Conflicts:
#	erpnext/accounts/doctype/accounts_settings/accounts_settings.json
2025-05-05 10:14:49 +00:00
ruthra kumar
7c8245d299 refactor: use unbuffered cursor for fetching
(cherry picked from commit 08903459c2)
2025-05-05 10:14:48 +00:00
rohitwaghchaure
a4c9707fdf Merge pull request #47390 from frappe/mergify/bp/version-15-hotfix/pr-47376
fix: validation for difference account (backport #47376)
2025-05-05 14:11:07 +05:30
Rohit Waghchaure
f4a43d07b0 fix: validation for difference account
(cherry picked from commit fb819c558e)
2025-05-03 07:52:58 +00:00
Frappe PR Bot
c1ed750bcb chore(release): Bumped to Version 15.60.1
## [15.60.1](https://github.com/frappe/erpnext/compare/v15.60.0...v15.60.1) (2025-05-02)

### Bug Fixes

* not able to submit the stock entry ([#47383](https://github.com/frappe/erpnext/issues/47383)) ([73a418a](73a418a2bd))
2025-05-02 13:44:13 +00:00
rohitwaghchaure
1d139eb94a Merge pull request #47384 from frappe/mergify/bp/version-15/pr-47383
fix: not able to submit the stock entry (backport #47383)
2025-05-02 19:12:43 +05:30
rohitwaghchaure
73a418a2bd fix: not able to submit the stock entry (#47383)
(cherry picked from commit 035394ae6a)
2025-05-02 13:06:32 +00:00
rohitwaghchaure
035394ae6a fix: not able to submit the stock entry (#47383) 2025-05-02 18:34:47 +05:30
mergify[bot]
1ef7da837f fix: completed transactions showing in the list (backport #47374) (#47379)
fix: completed transactions showing in the list (#47374)

(cherry picked from commit 97db9da10e)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-05-02 15:28:45 +05:30
mergify[bot]
85a8adf804 fix: renaming group by fieldname and value in reports (backport #47352) (#47360)
* fix: renaming group by fieldname and value in reports (#47352)

* fix: renaming in general ledger report

* fix: renaming in supplier quotation comparison report

* fix: renaming group by to categorize by in process statement of accounts

* fix: added patch

* fix: patch update to all documents

* chore: added patches to patch.txt

* chore: removing patch from v14

(cherry picked from commit 13a84e7f82)

# Conflicts:
#	erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json

* chore: resolve conflict

---------

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-04-30 17:19:43 +05:30
Mihir Kandoi
d3445b3079 Merge pull request #47357 from frappe/mergify/bp/version-15-hotfix/pr-47336
refactor: portal query in timesheet.py (backport #47336)
2025-04-30 16:35:11 +05:30
Mihir Kandoi
ada7821a49 refactor: portal query in timesheet.py (#47336)
* refactor: portal query in timesheet.py

* fix: use criterion.any to fix query

(cherry picked from commit 4fc7a8b71d)
2025-04-30 10:45:02 +00:00
Nihantra C. Patel
3f7dcedf3d Merge pull request #47354 from frappe/mergify/bp/version-15-hotfix/pr-47351
fix: party name in Ledger Summary (backport #47351)
2025-04-30 14:05:47 +05:30
Nihantra Patel
4fc14b3097 fix: party name in Ledger Summary
(cherry picked from commit 70bc86a4c6)
2025-04-30 08:13:52 +00:00
mergify[bot]
4ef2b77973 fix: warning message before changing the valuation method (backport #47340) (#47342)
fix: warning message before changing the valuation method (#47340)

(cherry picked from commit ffdc4347e8)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-04-30 08:45:39 +05:30
Frappe PR Bot
96996bd8a9 chore(release): Bumped to Version 15.60.0
# [15.60.0](https://github.com/frappe/erpnext/compare/v15.59.0...v15.60.0) (2025-04-29)

### Bug Fixes

* add transaction_date in field_no_map when creating PO from SQ (backport [#47257](https://github.com/frappe/erpnext/issues/47257)) ([#47313](https://github.com/frappe/erpnext/issues/47313)) ([afb67f1](afb67f1f0c))
* allow selling asset at zero rate (backport [#47326](https://github.com/frappe/erpnext/issues/47326)) ([#47332](https://github.com/frappe/erpnext/issues/47332)) ([171b687](171b687611))
* allow to change valuation method from FIFO to Moving Average ([b2294ed](b2294ed6e3))
* allow to make quality inspection after Purchase / Delivery ([e0cea49](e0cea49236))
* cancel pos closing entry failure for return pos invoices (backport [#47248](https://github.com/frappe/erpnext/issues/47248)) ([#47249](https://github.com/frappe/erpnext/issues/47249)) ([10d843e](10d843e490))
* commas in rfq portal js ([954fec1](954fec16f4))
* compare total debit/credit with precision for Inter Company Journal Entry ([0927155](0927155171))
* consolidating pos invoices on the basis of accounting dimensions (backport [#46961](https://github.com/frappe/erpnext/issues/46961)) ([#47265](https://github.com/frappe/erpnext/issues/47265)) ([f8da159](f8da1599bb))
* correct query for dispatch_address; remove unnecessary code; increase reusability; ([ac3b2ba](ac3b2ba003))
* do not check for permission if values are not changed in employee doctype ([#47238](https://github.com/frappe/erpnext/issues/47238)) ([0caba9f](0caba9f70d))
* enable use serial / batch fields on batch selection ([925cc40](925cc40efa))
* enhance dispatch address query logic and add supplier address query ([290f0b9](290f0b94e5))
* fix sub assembly qty calculation in production plan when bom level >= 1 (backport [#47296](https://github.com/frappe/erpnext/issues/47296)) ([#47315](https://github.com/frappe/erpnext/issues/47315)) ([d15b7ca](d15b7ca9af))
* make asset quantity and amount editable (backport [#47226](https://github.com/frappe/erpnext/issues/47226)) ([#47227](https://github.com/frappe/erpnext/issues/47227)) ([c140fd0](c140fd0f12))
* map dispatch address correctly for inter company transactions ([d8c0e71](d8c0e7156e))
* missing else statement ([8a30a31](8a30a31302))
* **payment request:** get advance amount based on transaction currency ([c2235e2](c2235e2d17))
* **PE:** Set account types in get_payment_entry (backport [#47246](https://github.com/frappe/erpnext/issues/47246)) ([#47266](https://github.com/frappe/erpnext/issues/47266)) ([3e733f6](3e733f6ba1))
* prevent cancellation of last asset movement (backport [#47291](https://github.com/frappe/erpnext/issues/47291)) ([#47312](https://github.com/frappe/erpnext/issues/47312)) ([2edd12b](2edd12b26d))
* price currency in supplier quotation comparison ([6b1b30a](6b1b30a4a6))
* prohibit consolidated sales invoice return (backport [#47251](https://github.com/frappe/erpnext/issues/47251)) ([#47252](https://github.com/frappe/erpnext/issues/47252)) ([4bcea55](4bcea55563))
* QI reference not set if 'Action If Quality Inspection Is Not Sub… (backport [#47294](https://github.com/frappe/erpnext/issues/47294)) ([#47295](https://github.com/frappe/erpnext/issues/47295)) ([b0399fe](b0399fe948))
* Re-insert missing "Serial No Warranty Expiry" Report ([727c32d](727c32d789))
* remove invalid email account creation (backport [#47318](https://github.com/frappe/erpnext/issues/47318)) ([#47323](https://github.com/frappe/erpnext/issues/47323)) ([fc8a8b5](fc8a8b5433))
* remove use of cur_frm ([5c300b8](5c300b893b))
* **Rename Tool:** allow more than 500 rows (backport [#47117](https://github.com/frappe/erpnext/issues/47117)) ([#47225](https://github.com/frappe/erpnext/issues/47225)) ([c0ae133](c0ae1336f4))
* require email OR phone in shipment doctype not both (backport [#47300](https://github.com/frappe/erpnext/issues/47300)) ([#47330](https://github.com/frappe/erpnext/issues/47330)) ([0056fb1](0056fb1d0f))
* set billing hours to hours ([0763a8d](0763a8d42d))
* set billing hours to hours in timesheet (backport [#47289](https://github.com/frappe/erpnext/issues/47289)) ([#47290](https://github.com/frappe/erpnext/issues/47290)) ([74bdc82](74bdc82bfa))
* update additional cost and total asset cost after asset repair (backport [#47233](https://github.com/frappe/erpnext/issues/47233)) ([#47235](https://github.com/frappe/erpnext/issues/47235)) ([4a29a54](4a29a54804))
* update billing hours when hours is changed ([a9df1f5](a9df1f5f6b))
* update quantity validation using asset quantity field instead of… (backport [#46731](https://github.com/frappe/erpnext/issues/46731)) ([#47284](https://github.com/frappe/erpnext/issues/47284)) ([2e6112f](2e6112f21b))
* validate if from and to time are present on submission of job card ([#47325](https://github.com/frappe/erpnext/issues/47325)) ([d640c79](d640c79c1c))
* validation if no stock ledger entries against stock reco (backport [#47292](https://github.com/frappe/erpnext/issues/47292)) ([#47293](https://github.com/frappe/erpnext/issues/47293)) ([91bcefe](91bcefef8c))

### Features

* add dispatch address fields to purchase doctypes ([5f101e7](5f101e7635))
* add dispatch address support in party details and controllers ([1fe1563](1fe1563dab))
* add display dispatch address when dispatch address is selected ([93ea2f9](93ea2f93b6))
* change sabb qty automatically incase of internal transfer PR if sabb only has 1 batch ([#47256](https://github.com/frappe/erpnext/issues/47256)) ([9495a2a](9495a2ac9d))
2025-04-29 13:12:18 +00:00
ruthra kumar
a9e40bc0d8 Merge pull request #47328 from frappe/version-15-hotfix
chore: release v15
2025-04-29 18:40:46 +05:30
mergify[bot]
d15b7ca9af fix: fix sub assembly qty calculation in production plan when bom level >= 1 (backport #47296) (#47315)
* fix: fix sub assembly qty calculation in production plan when bom level >= 1

(cherry picked from commit bfc4ce1d5d)

* fix: logical error

(cherry picked from commit ee10afc074)

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-04-29 18:12:36 +05:30
mergify[bot]
171b687611 fix: allow selling asset at zero rate (backport #47326) (#47332)
fix: allow selling asset at zero rate (#47326)

(cherry picked from commit 05afad78fc)

Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-04-29 17:12:51 +05:30
ruthra kumar
cc8418b7e4 Merge pull request #47329 from frappe/mergify/bp/version-15-hotfix/pr-47325
fix: validate if from and to time are present on submission of job card (backport #47325)
2025-04-29 16:46:34 +05:30
mergify[bot]
0056fb1d0f fix: require email OR phone in shipment doctype not both (backport #47300) (#47330)
fix: require email OR phone in shipment doctype not both (#47300)

(cherry picked from commit fc02a6510e)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-04-29 16:27:56 +05:30
Mihir Kandoi
d640c79c1c fix: validate if from and to time are present on submission of job card (#47325)
(cherry picked from commit 7499c25a3c)
2025-04-29 10:52:56 +00:00
mergify[bot]
2edd12b26d fix: prevent cancellation of last asset movement (backport #47291) (#47312)
fix: prevent cancellation of last asset movement (#47291)

* fix: prevent cancellation of last asset movement

* test: movement cancellation

* fix: allow cancellation of asset movement when cancelling asset

(cherry picked from commit 9dee4ac891)

Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-04-29 12:51:18 +05:30
ruthra kumar
71482261c7 Merge pull request #47324 from frappe/mergify/bp/version-15-hotfix/pr-47241
fix: compare total debit/credit with precision for Inter Company Journal Entry (backport #47241)
2025-04-29 12:43:42 +05:30
Mihir Kandoi
9df5727ea4 Merge pull request #47317 from frappe/mergify/bp/version-15-hotfix/pr-47256
feat: change sabb qty automatically incase of internal transfer PR if… (backport #47256)
2025-04-29 12:40:53 +05:30
mergify[bot]
fc8a8b5433 fix: remove invalid email account creation (backport #47318) (#47323)
fix: remove invalid email account creation (#47318)

(cherry picked from commit 7423e4187f)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-04-29 12:40:45 +05:30
Mihir Kandoi
409831183b Merge pull request #47314 from frappe/mergify/bp/version-15-hotfix/pr-47234
fix: price currency in supplier quotation comparison (backport #47234)
2025-04-29 12:40:31 +05:30
mergify[bot]
afb67f1f0c fix: add transaction_date in field_no_map when creating PO from SQ (backport #47257) (#47313)
* fix: add transaction_date in field_no_map when creating PO from SQ

(cherry picked from commit 3790c6c551)

* fix: test case

(cherry picked from commit acd1529780)

# Conflicts:
#	erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py

* fix: remove unused import

(cherry picked from commit 9e640341fd)

# Conflicts:
#	erpnext/buying/doctype/supplier_quotation/test_supplier_quotation.py

* chore: fix conflicts

* chore: remove unused imports

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-04-29 12:40:10 +05:30
ruthra kumar
7bc39349b0 Merge pull request #47321 from frappe/mergify/bp/version-15-hotfix/pr-47231
fix(payment request): get advance amount based on transaction currency (backport #47231)
2025-04-29 12:25:54 +05:30
ljain112
0927155171 fix: compare total debit/credit with precision for Inter Company Journal Entry
(cherry picked from commit 5fe247557e)
2025-04-29 06:48:08 +00:00
venkat102
c2235e2d17 fix(payment request): get advance amount based on transaction currency
(cherry picked from commit b570d97b4d)
2025-04-29 06:37:54 +00:00
Mihir Kandoi
9495a2ac9d feat: change sabb qty automatically incase of internal transfer PR if sabb only has 1 batch (#47256)
* feat: change sabb qty automatically incase of internal transfer PR if sabb only has 1 batch

* fix: prevent creation of SABB on every save

* perf: optimize code

* fix: remove unnecessary conditon

* refactor: change if to elif

* fix: remove dn_item_qty and set to item.qty

* test: added test

(cherry picked from commit 47927b38a9)
2025-04-29 06:17:04 +00:00
Mihir Kandoi
cb61e0bd18 Merge pull request #47316 from frappe/mergify/bp/version-15-hotfix/pr-47302
fix: commas in rfq portal js (backport #47302)
2025-04-29 11:46:31 +05:30
Mihir Kandoi
954fec16f4 fix: commas in rfq portal js
(cherry picked from commit bd727e069b)
2025-04-29 06:07:50 +00:00
Mihir Kandoi
6b1b30a4a6 fix: price currency in supplier quotation comparison
(cherry picked from commit 88926eb2a7)
2025-04-29 06:06:38 +00:00
mergify[bot]
b0399fe948 fix: QI reference not set if 'Action If Quality Inspection Is Not Sub… (backport #47294) (#47295)
fix: QI reference not set if 'Action If Quality Inspection Is Not Sub… (#47294)

fix: qi reference not set if 'Action If Quality Inspection Is Not Submitted' is blank
(cherry picked from commit 0701a8cf5a)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-04-28 22:01:57 +05:30
mergify[bot]
91bcefef8c fix: validation if no stock ledger entries against stock reco (backport #47292) (#47293)
fix: validation if no stock ledger entries against stock reco (#47292)

(cherry picked from commit 3d36d0b1df)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-04-28 19:38:27 +05:30
mergify[bot]
74bdc82bfa fix: set billing hours to hours in timesheet (backport #47289) (#47290)
* fix: set billing hours to hours

(cherry picked from commit 0763a8d42d)

* fix: update billing hours when hours is changed

(cherry picked from commit a9df1f5f6b)

* fix: missing else statement

(cherry picked from commit 8a30a31302)

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-04-28 16:33:40 +05:30
rohitwaghchaure
5b32bb7468 Merge pull request #47289 from frappe/st37102-2
fix: set billing hours to hours in timesheet
2025-04-28 16:27:33 +05:30
Mihir Kandoi
8a30a31302 fix: missing else statement 2025-04-28 16:08:40 +05:30
Mihir Kandoi
a9df1f5f6b fix: update billing hours when hours is changed 2025-04-28 16:07:54 +05:30
Mihir Kandoi
0763a8d42d fix: set billing hours to hours 2025-04-28 15:43:13 +05:30
rohitwaghchaure
c02a4a4591 Merge pull request #47286 from frappe/mergify/bp/version-15-hotfix/pr-47285
fix: allow to make quality inspection after Purchase / Delivery (backport #47285)
2025-04-28 15:29:16 +05:30
ruthra kumar
1cbcf7532c Merge pull request #47281 from frappe/mergify/bp/version-15-hotfix/pr-46993
feat: add dispatch address fields to purchase doctypes (backport #46993)
2025-04-28 14:47:02 +05:30
Rohit Waghchaure
e0cea49236 fix: allow to make quality inspection after Purchase / Delivery
(cherry picked from commit fad1a32e63)
2025-04-28 09:00:14 +00:00
mergify[bot]
2e6112f21b fix: update quantity validation using asset quantity field instead of… (backport #46731) (#47284)
* fix: update quantity validation using asset quantity field instead of… (#46731)

* fix: update quantity validation using asset quantity field instead of total records

* fix: update throw message

(cherry picked from commit eae08bc619)

# Conflicts:
#	erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py

* chore: resolved conflicts

---------

Co-authored-by: l0gesh29 <logeshperiyasamy24@gmail.com>
Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-04-28 14:18:51 +05:30
ruthra kumar
feb4038c06 chore: resolve conflicts 2025-04-28 11:36:24 +05:30
Smit Vora
d8c0e7156e fix: map dispatch address correctly for inter company transactions
(cherry picked from commit ceaba4220b)
2025-04-28 05:28:20 +00:00
Smit Vora
7baa8f50fb refactor: set address details for transactions
(cherry picked from commit fb3b7d8c34)
2025-04-28 05:28:20 +00:00
Smit Vora
62261a276f refactor: address field position
(cherry picked from commit 8ccd7a3e61)

# Conflicts:
#	erpnext/public/scss/erpnext.scss
2025-04-28 05:28:20 +00:00
Karm Soni
ac3b2ba003 fix: correct query for dispatch_address; remove unnecessary code; increase reusability;
(cherry picked from commit 999ffe86a7)
2025-04-28 05:28:19 +00:00
Karm Soni
93ea2f93b6 feat: add display dispatch address when dispatch address is selected
(cherry picked from commit d12998e524)
2025-04-28 05:28:19 +00:00
Karm Soni
5c300b893b fix: remove use of cur_frm
(cherry picked from commit c4bd3123fb)
2025-04-28 05:28:19 +00:00
Karm Soni
290f0b94e5 fix: enhance dispatch address query logic and add supplier address query
(cherry picked from commit 9a859e54b6)
2025-04-28 05:28:18 +00:00
Karm Soni
1fe1563dab feat: add dispatch address support in party details and controllers
(cherry picked from commit 53d0b7be23)
2025-04-28 05:28:18 +00:00
Karm Soni
5f101e7635 feat: add dispatch address fields to purchase doctypes
(cherry picked from commit 54b5205221)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
#	erpnext/buying/doctype/purchase_order/purchase_order.json
2025-04-28 05:28:18 +00:00
mergify[bot]
3e733f6ba1 fix(PE): Set account types in get_payment_entry (backport #47246) (#47266)
Co-authored-by: Corentin Forler <10946971+cogk@users.noreply.github.com>
fix(PE): Set account types in get_payment_entry (#47246)
2025-04-27 15:24:59 +02:00
rohitwaghchaure
5c4dc7a16e Merge pull request #47277 from frappe/mergify/bp/version-15-hotfix/pr-47259
fix: enable use serial / batch fields on batch selection (backport #47259)
2025-04-27 18:41:32 +05:30
Rohit Waghchaure
925cc40efa fix: enable use serial / batch fields on batch selection
(cherry picked from commit a4471865a9)
2025-04-27 13:06:21 +00:00
rohitwaghchaure
d947beec88 Merge pull request #47276 from frappe/mergify/bp/version-15-hotfix/pr-47268
fix: allow to change valuation method from FIFO to Moving Average (backport #47268)
2025-04-27 18:23:16 +05:30
Rohit Waghchaure
b2294ed6e3 fix: allow to change valuation method from FIFO to Moving Average
(cherry picked from commit b454ed4b8f)
2025-04-27 12:16:36 +00:00
mergify[bot]
f8da1599bb fix: consolidating pos invoices on the basis of accounting dimensions (backport #46961) (#47265)
fix: consolidating pos invoices on the basis of accounting dimensions (#46961)

* fix: consolidating pos invoices on the basis of accounting dimensions

* fix: project field

(cherry picked from commit c85edc3346)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-04-25 17:59:15 +05:30
Marica
636e9e0998 Merge pull request #47261 from frappe/mergify/bp/version-15-hotfix/pr-47232
fix: Re-insert missing "Serial No Warranty Expiry" Report (backport #47232)
2025-04-25 15:13:55 +05:30
marination
727c32d789 fix: Re-insert missing "Serial No Warranty Expiry" Report
(cherry picked from commit deefac0abf)
2025-04-25 09:28:36 +00:00
mergify[bot]
4bcea55563 fix: prohibit consolidated sales invoice return (backport #47251) (#47252)
fix: prohibit consolidated sales invoice return (#47251)

(cherry picked from commit 483c4a3271)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-04-25 11:33:04 +05:30
mergify[bot]
10d843e490 fix: cancel pos closing entry failure for return pos invoices (backport #47248) (#47249)
fix: cancel pos closing entry failure for return pos invoices (#47248)

(cherry picked from commit c8ee5d9a4e)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-04-24 23:23:08 +05:30
Lakshit Jain
0caba9f70d fix: do not check for permission if values are not changed in employee doctype (#47238) 2025-04-24 17:03:30 +02:00
mergify[bot]
4a29a54804 fix: update additional cost and total asset cost after asset repair (backport #47233) (#47235)
fix: update additional cost and total asset cost after asset repair (#47233)

* fix: add consumed stock's cost to the asset value after repair

* fix: do not copy additional cost and total asset cost

(cherry picked from commit ed8a8532e1)

Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-04-24 16:36:53 +05:30
mergify[bot]
c140fd0f12 fix: make asset quantity and amount editable (backport #47226) (#47227)
fix: make asset quantity and amount editable (#47226)

(cherry picked from commit 0d53e6ed7c)

Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-04-24 11:36:18 +05:30
mergify[bot]
c0ae1336f4 fix(Rename Tool): allow more than 500 rows (backport #47117) (#47225)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix(Rename Tool): allow more than 500 rows (#47117)
2025-04-23 20:26:03 +02:00
Frappe PR Bot
4c3044cd70 chore(release): Bumped to Version 15.59.0
# [15.59.0](https://github.com/frappe/erpnext/compare/v15.58.2...v15.59.0) (2025-04-22)

### Bug Fixes

* `TypeError` in group field filter in supplier ledger summary ([3b349f4](3b349f44b1))
* add group by after user permission condition ([f07c3d9](f07c3d9124))
* backslash in url ([f6edd5a](f6edd5aa7d))
* change get_url_to_form to get_link_to_form ([982a68b](982a68b71a))
* cherry pick ([20aba54](20aba541c4))
* consider per_ordered instead of per_billed when creating PO from MR ([be154a4](be154a469f))
* correct error message in validate_internal_transfer_qty ([b8a7f6d](b8a7f6dac1))
* create default warehouse (backport [#47125](https://github.com/frappe/erpnext/issues/47125)) ([#47131](https://github.com/frappe/erpnext/issues/47131)) ([ad177e0](ad177e08b8))
* disbaled UOM showing in the list ([3d4f3e1](3d4f3e1be7))
* distributed discounts on si ([ad05e6d](ad05e6dec2))
* **Employee:** remove User Permissions if create_user_permission is unchecked ([7ab81b7](7ab81b7e54))
* expense account in stock entry ([2f1f229](2f1f229144))
* get total without rounding off tax amounts for distributing discount (backport [#47155](https://github.com/frappe/erpnext/issues/47155)) ([8050e65](8050e653ab))
* group sub assemblies in production plan ([73683b2](73683b2754))
* import error ([924e9b9](924e9b94b6))
* keep per_billed 100 for billed delivery note after return ([680c221](680c221f05))
* linter ([c58800a](c58800a929))
* logic and added test case ([b3e852a](b3e852adfc))
* Modify .json from desk to change `modified` ([1dc9812](1dc98124dc))
* only update User Permissions if a relevant field has changed ([b0f3d62](b0f3d62dd0))
* pos disable customer selection at payment (backport [#47169](https://github.com/frappe/erpnext/issues/47169)) ([#47170](https://github.com/frappe/erpnext/issues/47170)) ([7adba1f](7adba1f0f3))
* provision to recalculate the qty in the Bin ([5535eb4](5535eb4817))
* rate based on posting date in Tax Withholding Report ([9184c40](9184c40371))
* remove invalid parameter ([2431141](2431141062))
* remove unused import ([4fba4d4](4fba4d49d2))
* respect field "ignore_user_permissions" property in employee query ([a450ce2](a450ce25b9))
* respect mapped accounting dimensions ([846b24b](846b24ba52))
* revert unintended changes ([a09ab90](a09ab902e5))
* set correct paid/receive amount if doc currency is different from party account currency ([5dc63f9](5dc63f97a1))
* set default company address in Sales Doctype on change of company ([05d4c1e](05d4c1e6ca))
* show button only when RFQ is submitted ([9655bfa](9655bfa199))
* test cases ([dedb19e](dedb19e3e9))
* test cases error ([13d3b27](13d3b27a1f))
* update country wise fiscal year (backport [#47141](https://github.com/frappe/erpnext/issues/47141)) ([#47176](https://github.com/frappe/erpnext/issues/47176)) ([390780d](390780d871))
* use get_url_to_form instead ([ad35021](ad35021666))

### Features

* add button to show request for comparison report directly from RFQ ([cb2b956](cb2b9563e0))
* add unit tests for distributed_discount_amount ([6f6574c](6f6574c5ac))

### Reverts

* disable customer if creating from opportunity ([99735e0](99735e0af4))
2025-04-22 13:47:39 +00:00
ruthra kumar
f7efd006c2 Merge pull request #47204 from frappe/version-15-hotfix
chore: release v15
2025-04-22 19:16:15 +05:30
mergify[bot]
8050e653ab fix: get total without rounding off tax amounts for distributing discount (backport #47155)
Co-authored-by: Sagar Vora <16315650+sagarvora@users.noreply.github.com>
2025-04-22 17:53:10 +05:30
ruthra kumar
2ba6c78e5e Merge pull request #47210 from frappe/mergify/bp/version-15-hotfix/pr-47178
fix: keep per_billed 100 for billed delivery note after return (backport #47178)
2025-04-22 17:30:33 +05:30
Sugesh393
04a1578b53 refactor: update base_outstanding calculation
(cherry picked from commit 02356029a8)
2025-04-22 11:42:13 +00:00
Sugesh393
2b05ccfa6f test: add new unit test to keep per_billed 100 for billed delivery note
(cherry picked from commit fe5898a151)
2025-04-22 11:42:12 +00:00
Sugesh393
680c221f05 fix: keep per_billed 100 for billed delivery note after return
(cherry picked from commit 8290a83591)
2025-04-22 11:42:12 +00:00
ruthra kumar
bbbbb4da55 Merge pull request #47209 from frappe/mergify/bp/version-15-hotfix/pr-47183
fix: backslash in url (backport #47183)
2025-04-22 17:07:23 +05:30
ruthra kumar
e2f8ca5f87 chore: resolve conflict 2025-04-22 16:46:57 +05:30
ruthra kumar
6671f4df41 Merge pull request #47208 from frappe/mergify/bp/version-15-hotfix/pr-46717
fix: respect field "ignore_user_permissions" property in employee query (backport #46717)
2025-04-22 16:40:28 +05:30
Mihir Kandoi
4fba4d49d2 fix: remove unused import
(cherry picked from commit c3d172fac3)
2025-04-22 10:46:37 +00:00
Mihir Kandoi
982a68b71a fix: change get_url_to_form to get_link_to_form
(cherry picked from commit 5d07beee61)
2025-04-22 10:46:37 +00:00
Mihir Kandoi
a09ab902e5 fix: revert unintended changes
(cherry picked from commit eaaf34cda6)

# Conflicts:
#	erpnext/stock/doctype/material_request/material_request.json
2025-04-22 10:46:37 +00:00
Mihir Kandoi
ad35021666 fix: use get_url_to_form instead
(cherry picked from commit 7a82b37f76)
2025-04-22 10:46:36 +00:00
Mihir Kandoi
f6edd5aa7d fix: backslash in url
(cherry picked from commit ecf15130ba)

# Conflicts:
#	erpnext/stock/doctype/material_request/material_request.json
2025-04-22 10:46:36 +00:00
ljain112
e752f3f914 chore: added test case for employee query with user permissions
(cherry picked from commit 4be975f87c)

# Conflicts:
#	erpnext/controllers/tests/test_queries.py
2025-04-22 16:00:00 +05:30
ruthra kumar
31af933c1c Merge pull request #47207 from frappe/mergify/bp/version-15-hotfix/pr-47171
fix: set correct paid/receive amount if doc currency is different from party account currency (backport #47171)
2025-04-22 15:58:28 +05:30
ljain112
a450ce25b9 fix: respect field "ignore_user_permissions" property in employee query
(cherry picked from commit 91d7bc55be)
2025-04-22 10:12:30 +00:00
Soham Kulkarni
e152c72a7b Merge pull request #47201 from frappe/mergify/bp/version-15-hotfix/pr-47175
fix: add grand_total to show correct status in quick list widget (backport #47175)
2025-04-22 15:41:49 +05:30
ljain112
5dc63f97a1 fix: set correct paid/receive amount if doc currency is different from party account currency
(cherry picked from commit 9612521894)
2025-04-22 10:07:17 +00:00
rohitwaghchaure
8bc00ffbb4 Merge pull request #47206 from frappe/mergify/bp/version-15-hotfix/pr-47184
feat: add button to view Supplier Quotation Comparison directly from RFQ (backport #47184)
2025-04-22 15:16:01 +05:30
Mihir Kandoi
9655bfa199 fix: show button only when RFQ is submitted
(cherry picked from commit ef57d2b328)
2025-04-22 09:43:41 +00:00
Mihir Kandoi
cb2b9563e0 feat: add button to show request for comparison report directly from RFQ
(cherry picked from commit b4aa88b59b)
2025-04-22 09:43:41 +00:00
ruthra kumar
bb71b91d4a Merge pull request #47203 from frappe/mergify/bp/version-15-hotfix/pr-47180
fix: set default company address in selling Doctype on change of company (backport #47180)
2025-04-22 15:12:20 +05:30
ljain112
05d4c1e6ca fix: set default company address in Sales Doctype on change of company
(cherry picked from commit a31075692c)
2025-04-22 08:59:04 +00:00
Soham Kulkarni
d7556069e4 Merge pull request #47175 from sokumon/purchase-receipt-quick-list
fix: add grand_total to show correct status in quick list widget
(cherry picked from commit 68ca4a77c9)
2025-04-22 08:52:51 +00:00
ruthra kumar
a3821cf182 Merge pull request #47199 from frappe/mergify/bp/version-15-hotfix/pr-47138
fix: rate based on posting date in Tax Withholding Report (backport #47138)
2025-04-22 14:07:08 +05:30
ruthra kumar
18e3171cc9 Merge pull request #47197 from frappe/mergify/bp/version-15-hotfix/pr-47191
fix: expense account in stock entry (backport #47191)
2025-04-22 13:34:01 +05:30
ljain112
1f8fce253d chore: added test case for date period in multiple tax withholding rules
(cherry picked from commit 515fe340a8)

# Conflicts:
#	erpnext/accounts/report/tax_withholding_details/test_tax_withholding_details.py
2025-04-22 13:31:28 +05:30
ljain112
9184c40371 fix: rate based on posting date in Tax Withholding Report
(cherry picked from commit a32a79e90a)
2025-04-22 07:59:58 +00:00
Rohit Waghchaure
2f1f229144 fix: expense account in stock entry
(cherry picked from commit 75874b4986)
2025-04-22 07:46:37 +00:00
ruthra kumar
393e4462f8 Merge pull request #47195 from frappe/mergify/bp/version-15-hotfix/pr-47124
fix: `TypeError` in group field filter in supplier ledger summary (backport #47124)
2025-04-22 12:44:05 +05:30
ljain112
3b349f44b1 fix: TypeError in group field filter in supplier ledger summary
(cherry picked from commit 872e94a316)
2025-04-22 06:51:57 +00:00
rohitwaghchaure
c430ce96b3 Merge pull request #47185 from frappe/mergify/bp/version-15-hotfix/pr-47144
fix: provision to recalculate the qty in the Bin (backport #47144)
2025-04-22 12:20:46 +05:30
rohitwaghchaure
7b5297bb7f Merge pull request #47188 from frappe/mergify/bp/version-15-hotfix/pr-47186
fix: disabled UOM showing in the list (backport #47186)
2025-04-22 12:20:34 +05:30
Rohit Waghchaure
3d4f3e1be7 fix: disbaled UOM showing in the list
(cherry picked from commit 3745825052)
2025-04-21 16:43:17 +00:00
Rohit Waghchaure
5535eb4817 fix: provision to recalculate the qty in the Bin
(cherry picked from commit 36081413d8)
2025-04-21 15:49:11 +00:00
ruthra kumar
af35e43555 Merge pull request #47095 from frappe/mergify/bp/version-15-hotfix/pr-47007
chore: Fix typo "Item Wise Tax Detail " (backport #47007)
2025-04-21 16:50:22 +05:30
ruthra kumar
f53a45cfef chore: resolve conflict 2025-04-21 16:30:20 +05:30
ruthra kumar
19045bcace Merge pull request #47177 from frappe/mergify/bp/version-15-hotfix/pr-47067
fix: correct error message in validate_internal_transfer_qty (backport #47067)
2025-04-21 16:24:11 +05:30
ljain112
b8a7f6dac1 fix: correct error message in validate_internal_transfer_qty
(cherry picked from commit 5063f1174e)
2025-04-21 10:28:27 +00:00
ruthra kumar
f2c3150687 Merge pull request #47013 from frappe/mergify/bp/version-15-hotfix/pr-45924
fix(Employee): remove User Permissions if create_user_permission is unchecked (backport #45924)
2025-04-21 15:55:03 +05:30
mergify[bot]
390780d871 fix: update country wise fiscal year (backport #47141) (#47176)
fix: update country wise fiscal year (#47141)

(cherry picked from commit cb2ad4acdb)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-04-21 14:26:47 +05:30
mergify[bot]
7adba1f0f3 fix: pos disable customer selection at payment (backport #47169) (#47170)
fix: pos disable customer selection at payment (#47169)

(cherry picked from commit f52cbf6165)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-04-21 11:56:54 +05:30
Sagar Vora
d6d042868d Merge pull request #43067 from frappe/mergify/bp/version-15-hotfix/pr-41721
fix: distributed discounts on si (backport #41721)
2025-04-19 16:35:12 +05:30
Sagar Vora
f764b9713b Merge branch 'version-15-hotfix' into mergify/bp/version-15-hotfix/pr-41721 2025-04-19 16:18:37 +05:30
Sagar Vora
16877fade8 Merge pull request #47157 from frappe/mergify/bp/version-15-hotfix/pr-47154
fix: respect mapped accounting dimensions (backport #47154)
2025-04-19 13:04:01 +05:30
Sagar Vora
846b24ba52 fix: respect mapped accounting dimensions
(cherry picked from commit 7dbe27da19)
2025-04-19 07:22:45 +00:00
mergify[bot]
451b1a19a8 chore: migrate pre-commit config (backport #47132) (#47134)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-04-17 14:18:00 +02:00
mergify[bot]
ad177e08b8 fix: create default warehouse (backport #47125) (#47131)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix: create default warehouse (#47125)
2025-04-17 13:40:05 +02:00
Frappe PR Bot
00a8503dd7 chore(release): Bumped to Version 15.58.2
## [15.58.2](https://github.com/frappe/erpnext/compare/v15.58.1...v15.58.2) (2025-04-17)

### Bug Fixes

* add group by after user permission condition ([0287f34](0287f34928))
2025-04-17 10:54:22 +00:00
ruthra kumar
76a2eb69a0 Merge pull request #47127 from frappe/mergify/bp/version-15/pr-47118
fix: add group by after user permission condition (backport #47118)
2025-04-17 16:22:18 +05:30
ruthra kumar
673694ae48 Merge pull request #47128 from frappe/mergify/bp/version-15-hotfix/pr-47118
fix: add group by after user permission condition (backport #47118)
2025-04-17 16:22:07 +05:30
venkat102
0287f34928 fix: add group by after user permission condition
(cherry picked from commit 756d496235)
2025-04-17 10:36:57 +00:00
venkat102
f07c3d9124 fix: add group by after user permission condition
(cherry picked from commit 756d496235)
2025-04-17 10:36:57 +00:00
rohitwaghchaure
d18266d839 Merge pull request #47048 from frappe/mergify/bp/version-15-hotfix/pr-46938
fix: group sub assemblies in production plan (backport #46938)
2025-04-17 15:31:08 +05:30
rohitwaghchaure
0c714e2bd9 Merge pull request #47114 from frappe/mergify/bp/version-15-hotfix/pr-47050
fix: consider per_ordered instead of per_billed when creating PO from MR (backport #47050)
2025-04-16 22:49:24 +05:30
Mihir Kandoi
20aba541c4 fix: cherry pick 2025-04-16 20:32:05 +05:30
Mihir Kandoi
be154a469f fix: consider per_ordered instead of per_billed when creating PO from MR
(cherry picked from commit 5a524854de)

# Conflicts:
#	erpnext/stock/doctype/material_request/material_request.js
2025-04-16 10:58:52 +00:00
Frappe PR Bot
741f29e57a chore(release): Bumped to Version 15.58.1
## [15.58.1](https://github.com/frappe/erpnext/compare/v15.58.0...v15.58.1) (2025-04-16)

### Bug Fixes

* revert [#46903](https://github.com/frappe/erpnext/issues/46903) - disable changing customer on opportunity ([5c04d18](5c04d183bf))
2025-04-16 05:15:20 +00:00
ruthra kumar
5090108718 Merge pull request #47110 from frappe/mergify/bp/version-15/pr-47108
revert: disable customer if creating from opportunity (backport #47108)
2025-04-16 10:44:01 +05:30
Shariq Ansari
5c04d183bf fix: revert #46903 - disable changing customer on opportunity
(cherry picked from commit fc16199a49)
2025-04-16 10:38:17 +05:30
Shariq Ansari
bb6d6c3edf Merge pull request #47109 from frappe/mergify/bp/version-15-hotfix/pr-47108 2025-04-16 10:22:33 +05:30
Shariq Ansari
99735e0af4 revert: disable customer if creating from opportunity
(cherry picked from commit fc16199a49)
2025-04-16 04:51:33 +00:00
Frappe PR Bot
929d177b7d chore(release): Bumped to Version 15.58.0
# [15.58.0](https://github.com/frappe/erpnext/compare/v15.57.5...v15.58.0) (2025-04-16)

### Bug Fixes

* added missing project field on pos profile ([8e9ddb7](8e9ddb7a69))
* allow to use batchwise valuation for moving average items ([e479975](e479975f54))
* backport translations from develop ([#47104](https://github.com/frappe/erpnext/issues/47104)) ([188c4f8](188c4f896a))
* batchwise valuation for MA item ([debfcdc](debfcdc61f))
* bypass validation during reposting ([01aad96](01aad96b10))
* child values for tree doctypes and query refactor ([537a8ef](537a8efe7a))
* clarify confirmation message ([35daf66](35daf669fe))
* condition for use_batchwise_valuation ([0ff7465](0ff7465e27))
* configuration to accept partial payment in pos invoice ([#47052](https://github.com/frappe/erpnext/issues/47052)) ([a944853](a944853b56))
* consider negative stock qty in stock reco ([603f737](603f737c99))
* correct doctype in item_wise_purchase register ([b2fb4fb](b2fb4fba51))
* correct function name ([393d245](393d2459b9))
* correct outstanding amount for invoice in dunning ([b7c3fa2](b7c3fa23d2))
* current batch qty showing zero in the stock reconciliation ([24c8a06](24c8a06520))
* enabled allow on submit for asset name field (backport [#47093](https://github.com/frappe/erpnext/issues/47093)) ([#47094](https://github.com/frappe/erpnext/issues/47094)) ([3f652bd](3f652bd4e1))
* fetch exchange rate while creating inter-company order and invoice ([aa0b93d](aa0b93d0b2))
* go for lower case "on" because we already have translations for that ([7cf83ff](7cf83ffce7))
* Group GLs by account for TB generation ([416d9bc](416d9bce2c))
* item code not showing in the error message ([663e2b7](663e2b7e6c))
* make report's "printed on" translatable ([18e9a98](18e9a9881c))
* map tax table while creating purchase order from sales order ([127c7b9](127c7b93ac))
* **Payment Entry:** set account type if missing (backport [#47069](https://github.com/frappe/erpnext/issues/47069)) ([#47070](https://github.com/frappe/erpnext/issues/47070)) ([8e02a9b](8e02a9bc28))
* precision issue on qty_to_be_reserved ([c8691b6](c8691b6516))
* recognize trigger from child table ([cf00d42](cf00d42799))
* Recreate Stock Ledgers issue ([b819e0a](b819e0a61b))
* remove get_items query.run outside of if condition ([e7b5303](e7b5303782))
* remove redundant letter head ([7896f8a](7896f8a855))
* removed display depends on ([00b2553](00b25537f4))
* resolved conflicts ([bde55d2](bde55d2a07))
* revert [#46900](https://github.com/frappe/erpnext/issues/46900) - against_voucher filter in general ledger ([da65f44](da65f44a47))
* test file for v15 ([cc7756d](cc7756dd49))
* translatability ([79ed02b](79ed02bb2c))
* update the modified date in for SLEs and GLs after rename ([21f0dcb](21f0dcbcc3))
* use source_fieldname to validate inventory dimension ([250b670](250b67076d))
* use the actual field label ([0c260ba](0c260baacd))
* wording ([db647a4](db647a4e42))

### Features

* Allow to Make Quality Inspection after Purchase / Delivery ([2e6ba91](2e6ba91589))
* available serial no report ([c472af8](c472af87b2))
* clear payment terms and schedule ([830290c](830290c859))
* fetch source_fieldname for inventory dimension ([2ed6c21](2ed6c211f9))
* **regional:** Address Template for Germany & Add Switzerland Template ([#46737](https://github.com/frappe/erpnext/issues/46737)) ([42479d9](42479d9a7f))
* update due date in payment schedule ([0b0a6b8](0b0a6b8cfa))

### Performance Improvements

* refactored customer ledger summary for performance ([50b2196](50b2196020))
* take query out of loop ([9af5052](9af50528f1))
2025-04-16 04:05:56 +00:00
ruthra kumar
7555d27d82 Merge pull request #47091 from frappe/version-15-hotfix
chore: release v15
2025-04-16 09:34:34 +05:30
ruthra kumar
4a7b91352b Merge pull request #47099 from frappe/mergify/bp/version-15-hotfix/pr-46770
fix: correct outstanding amount for invoice in dunning (backport #46770)
2025-04-16 07:44:32 +05:30
Raffael Meyer
188c4f896a fix: backport translations from develop (#47104) 2025-04-15 19:30:17 +02:00
rohitwaghchaure
9bdeacbbfa Merge pull request #47097 from frappe/mergify/bp/version-15-hotfix/pr-46973
fix: precision issue on qty_to_be_reserved (backport #46973)
2025-04-15 22:01:34 +05:30
ljain112
c42f76b15a chore: added test for Fetch Overdue Payments in dunning
(cherry picked from commit 3b613c44a6)

# Conflicts:
#	erpnext/accounts/doctype/dunning/test_dunning.py
2025-04-15 20:35:09 +05:30
Diptanil Saha
a944853b56 fix: configuration to accept partial payment in pos invoice (#47052) 2025-04-15 19:03:55 +05:30
ljain112
b7c3fa23d2 fix: correct outstanding amount for invoice in dunning
(cherry picked from commit c2bdd30e6d)
2025-04-15 12:21:58 +00:00
ruthra kumar
073a7a6ca6 Merge pull request #47096 from frappe/mergify/bp/version-15-hotfix/pr-47001
fix: fetch exchange rate while creating inter-company order and invoice (backport #47001)
2025-04-15 17:46:38 +05:30
Dany Robert
c8691b6516 fix: precision issue on qty_to_be_reserved
(cherry picked from commit 860699ee7b)

# Conflicts:
#	erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
2025-04-15 17:42:30 +05:30
venkat102
aa0b93d0b2 fix: fetch exchange rate while creating inter-company order and invoice
(cherry picked from commit 145a6c5e2a)
2025-04-15 12:07:54 +00:00
mergify[bot]
3f652bd4e1 fix: enabled allow on submit for asset name field (backport #47093) (#47094)
fix: enabled allow on submit for asset name field (#47093)

(cherry picked from commit e41720f1a3)

Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-04-15 17:33:58 +05:30
marination
1dc98124dc fix: Modify .json from desk to change modified
(cherry picked from commit be556167b1)

# Conflicts:
#	erpnext/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.json
2025-04-15 11:32:47 +00:00
Himanshu Shivhare
5cb8e5dfbd chore: Fix typo "Item Wise Tax Detail "
(cherry picked from commit 9624d56abd)
2025-04-15 11:32:46 +00:00
ruthra kumar
f816934a28 Merge pull request #47086 from frappe/mergify/bp/version-15-hotfix/pr-46640
perf: refactored customer ledger summary for performance (backport #46640)
2025-04-15 13:46:55 +05:30
ruthra kumar
1e340ccd9c chore: use correct Test class 2025-04-15 13:29:22 +05:30
ruthra kumar
21e94148db chore: resolve conflict 2025-04-15 13:20:56 +05:30
ruthra kumar
233a2c08a1 test: basic supplier ledger summary
(cherry picked from commit 71f0f7a0b5)
2025-04-15 13:20:56 +05:30
ruthra kumar
11566e20b5 test: basic output of customer ledger summary report
(cherry picked from commit 9a3a80dfd3)
2025-04-15 13:20:56 +05:30
ljain112
393d2459b9 fix: correct function name
(cherry picked from commit 038355f87b)
2025-04-15 13:20:56 +05:30
ljain112
537a8efe7a fix: child values for tree doctypes and query refactor
(cherry picked from commit fca46e0b2d)

# Conflicts:
#	erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py
2025-04-15 13:20:56 +05:30
ljain112
50b2196020 perf: refactored customer ledger summary for performance
(cherry picked from commit e84e49345a)

# Conflicts:
#	erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py
2025-04-15 13:20:56 +05:30
ruthra kumar
0ad8935f2c Merge pull request #47081 from frappe/mergify/bp/version-15-hotfix/pr-46789
fix: map tax table while creating purchase order from sales order (backport #46789)
2025-04-15 12:10:21 +05:30
ruthra kumar
148287d8a1 Merge pull request #46935 from frappe/mergify/bp/version-15-hotfix/pr-46171
Fix validation mismatch in inventory dimension fields (backport #46171)
2025-04-15 11:54:24 +05:30
ruthra kumar
f4854a9a02 Merge pull request #46816 from frappe/mergify/bp/version-15-hotfix/pr-46737
feat(regional): Address Template for Germany & Add Switzerland Template (backport #46737)
2025-04-15 11:51:17 +05:30
ruthra kumar
b7cbc66a28 chore: resolve conflict 2025-04-15 11:45:17 +05:30
Sugesh393
5a20b9e94f test: add unit test to validate tax values in Purchase Order from Sales Order
(cherry picked from commit a393195866)

# Conflicts:
#	erpnext/selling/doctype/sales_order/test_sales_order.py
2025-04-15 06:13:11 +00:00
Sugesh393
127c7b93ac fix: map tax table while creating purchase order from sales order
(cherry picked from commit 1e18569be7)
2025-04-15 06:13:11 +00:00
mergify[bot]
c77f7f4ff0 test(Payment Entry): account type is set (backport #47071) (#47073)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-04-14 19:26:11 +02:00
mergify[bot]
8e02a9bc28 fix(Payment Entry): set account type if missing (backport #47069) (#47070)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix(Payment Entry): set account type if missing (#47069)
2025-04-14 18:54:12 +02:00
rohitwaghchaure
640012429e Merge pull request #47063 from frappe/mergify/bp/version-15-hotfix/pr-47058
fix: consider negative stock qty in stock reconciliation (backport #47058)
2025-04-14 20:30:25 +05:30
Rohit Waghchaure
603f737c99 fix: consider negative stock qty in stock reco
(cherry picked from commit 15272d0e56)
2025-04-14 12:39:35 +00:00
ruthra kumar
4fd99ed763 Merge pull request #46773 from frappe/mergify/bp/version-15-hotfix/pr-46683
fix: Set complete contact details for `Employee` in PE (backport #46683)
2025-04-14 17:30:51 +05:30
Frappe PR Bot
2eb7a688cb chore(release): Bumped to Version 15.57.5
## [15.57.5](https://github.com/frappe/erpnext/compare/v15.57.4...v15.57.5) (2025-04-14)

### Bug Fixes

* revert [#46900](https://github.com/frappe/erpnext/issues/46900) - against_voucher filter in general ledger ([969c354](969c3549d5))
2025-04-14 08:24:20 +00:00
ruthra kumar
19a5b923b9 Merge pull request #47053 from frappe/mergify/bp/version-15/pr-47049
Revert "fix: remove against_voucher and against_voucher_type column from General Ledger Report" (backport #47049)
2025-04-14 13:52:55 +05:30
ruthra kumar
77bbaef5a6 Merge pull request #47055 from frappe/mergify/bp/version-15-hotfix/pr-47049
Revert "fix: remove against_voucher and against_voucher_type column from General Ledger Report" (backport #47049)
2025-04-14 13:52:05 +05:30
Mihir Kandoi
c58800a929 fix: linter 2025-04-14 13:33:48 +05:30
Mihir Kandoi
924e9b94b6 fix: import error 2025-04-14 13:28:06 +05:30
ruthra kumar
6bfb3c6905 chore: resolve conflict 2025-04-14 13:26:32 +05:30
ruthra kumar
a0908522c1 chore: resolve conflict 2025-04-14 13:21:33 +05:30
ruthra kumar
da65f44a47 fix: revert #46900 - against_voucher filter in general ledger
(cherry picked from commit adb331ef71)

# Conflicts:
#	erpnext/accounts/report/general_ledger/general_ledger.py
2025-04-14 07:50:28 +00:00
ruthra kumar
969c3549d5 fix: revert #46900 - against_voucher filter in general ledger
(cherry picked from commit adb331ef71)

# Conflicts:
#	erpnext/accounts/report/general_ledger/general_ledger.py
2025-04-14 07:49:32 +00:00
Mihir Kandoi
13d3b27a1f fix: test cases error
(cherry picked from commit 8df18762a9)
2025-04-14 06:41:28 +00:00
Mihir Kandoi
dedb19e3e9 fix: test cases
(cherry picked from commit a7394329ca)
2025-04-14 06:41:27 +00:00
Mihir Kandoi
b3e852adfc fix: logic and added test case
(cherry picked from commit f071255340)
2025-04-14 06:41:27 +00:00
Mihir Kandoi
73683b2754 fix: group sub assemblies in production plan
(cherry picked from commit f58abed935)
2025-04-14 06:41:27 +00:00
Frappe PR Bot
1da2577035 chore(release): Bumped to Version 15.57.4
## [15.57.4](https://github.com/frappe/erpnext/compare/v15.57.3...v15.57.4) (2025-04-13)

### Bug Fixes

* Group GLs by account for TB generation ([70fa366](70fa366216))
2025-04-13 14:13:43 +00:00
Deepesh Garg
e5d0ab6bab Merge pull request #47045 from frappe/mergify/bp/version-15/pr-47044
fix: Group GLs by account for TB generation
2025-04-13 19:42:19 +05:30
Deepesh Garg
70fa366216 fix: Group GLs by account for TB generation
(cherry picked from commit f894c6d275)
(cherry picked from commit 416d9bce2c)
2025-04-13 14:02:23 +00:00
Deepesh Garg
f1254e51e5 Merge pull request #47044 from frappe/mergify/bp/version-15-hotfix/pr-47043
fix: Group GLs by account for TB generation (backport #47043)
2025-04-13 19:31:29 +05:30
Deepesh Garg
416d9bce2c fix: Group GLs by account for TB generation
(cherry picked from commit f894c6d275)
2025-04-13 13:57:23 +00:00
ruthra kumar
f5fd255e82 Merge pull request #47033 from frappe/mergify/bp/version-15-hotfix/pr-47012
fix: correct doctype in item_wise_purchase register (backport #47012)
2025-04-12 07:29:14 +05:30
ljain112
b2fb4fba51 fix: correct doctype in item_wise_purchase register
(cherry picked from commit b8b8dce733)
2025-04-12 01:42:25 +00:00
rohitwaghchaure
1b8a317de9 Merge pull request #47027 from frappe/mergify/bp/version-15-hotfix/pr-47026
fix: batchwise valuation for MA item (backport #47026)
2025-04-11 22:56:25 +05:30
Rohit Waghchaure
debfcdc61f fix: batchwise valuation for MA item
(cherry picked from commit 504b8c0a68)
2025-04-11 16:27:52 +00:00
rohitwaghchaure
706092061b Merge pull request #47021 from frappe/mergify/bp/version-15-hotfix/pr-47020
fix: removed display depends on (backport #47020)
2025-04-11 19:53:43 +05:30
rohitwaghchaure
c6c8aa02eb Merge pull request #47023 from frappe/mergify/bp/version-15-hotfix/pr-47022
fix: condition for use_batchwise_valuation (backport #47022)
2025-04-11 19:53:22 +05:30
Rohit Waghchaure
0ff7465e27 fix: condition for use_batchwise_valuation
(cherry picked from commit cc171d9706)
2025-04-11 14:06:08 +00:00
Rohit Waghchaure
00b25537f4 fix: removed display depends on
(cherry picked from commit e0bf45e03b)
2025-04-11 13:46:39 +00:00
rohitwaghchaure
6dee592ba7 Merge pull request #47004 from frappe/mergify/bp/version-15-hotfix/pr-47002
feat: Allow to Make Quality Inspection after Purchase / Delivery (backport #47002)
2025-04-11 17:26:53 +05:30
rohitwaghchaure
8233aadd50 Merge pull request #47017 from frappe/mergify/bp/version-15-hotfix/pr-47015
fix: allow to use batch-wise valuation for moving average items (backport #47015)
2025-04-11 17:25:29 +05:30
Rohit Waghchaure
e479975f54 fix: allow to use batchwise valuation for moving average items
(cherry picked from commit 65ba79bb85)
2025-04-11 11:38:32 +00:00
barredterra
2431141062 fix: remove invalid parameter 2025-04-11 13:07:44 +02:00
Patrick Eissler
b0e8f85a27 refactor: make linter happy 2025-04-11 12:25:58 +02:00
Patrick Eissler
b0f3d62dd0 fix: only update User Permissions if a relevant field has changed 2025-04-11 12:25:26 +02:00
Patrick Eissler
e47d07d98c chore: use existing utility function 2025-04-11 12:24:25 +02:00
Patrick Eissler
7ab81b7e54 fix(Employee): remove User Permissions if create_user_permission is unchecked 2025-04-11 12:24:04 +02:00
rohitwaghchaure
5e1d3f77bb chore: fix conflicts 2025-04-11 15:35:36 +05:30
rohitwaghchaure
00ac8597b0 chore: fix conflicts 2025-04-11 15:34:45 +05:30
rohitwaghchaure
4163b18ec3 Merge pull request #47005 from frappe/mergify/bp/version-15-hotfix/pr-46997
fix: update the modified date in for SLEs and GLs after rename (backport #46997)
2025-04-11 14:43:02 +05:30
Rohit Waghchaure
21f0dcbcc3 fix: update the modified date in for SLEs and GLs after rename
(cherry picked from commit dc5a5ef258)
2025-04-10 12:10:48 +00:00
Rohit Waghchaure
2e6ba91589 feat: Allow to Make Quality Inspection after Purchase / Delivery
(cherry picked from commit 8eaa2afeb7)

# Conflicts:
#	erpnext/stock/doctype/stock_settings/stock_settings.json
2025-04-10 12:10:47 +00:00
rohitwaghchaure
14a502c956 Merge pull request #46998 from frappe/mergify/bp/version-15-hotfix/pr-46831
fix: current batch qty showing zero in the stock reconciliation (backport #46831)
2025-04-10 15:39:34 +05:30
Rohit Waghchaure
24c8a06520 fix: current batch qty showing zero in the stock reconciliation
(cherry picked from commit a5c62f8623)
2025-04-10 08:30:28 +00:00
rohitwaghchaure
13f73b59df Merge pull request #46988 from frappe/mergify/bp/version-15-hotfix/pr-46978
fix: bypass validation during reposting (backport #46978)
2025-04-10 12:21:36 +05:30
rohitwaghchaure
b4efba80a7 Merge pull request #46989 from frappe/mergify/bp/version-15-hotfix/pr-46965
fix: Recreate Stock Ledgers issue (backport #46965)
2025-04-10 12:21:00 +05:30
Rohit Waghchaure
b819e0a61b fix: Recreate Stock Ledgers issue
(cherry picked from commit 229a4cef45)
2025-04-10 06:13:44 +00:00
Rohit Waghchaure
01aad96b10 fix: bypass validation during reposting
(cherry picked from commit 3697b9fd9b)
2025-04-10 06:13:26 +00:00
rohitwaghchaure
860aba47ef Merge pull request #46985 from frappe/mergify/bp/version-15-hotfix/pr-46933
fix: item code not showing in the error message (backport #46933)
2025-04-10 11:31:59 +05:30
rohitwaghchaure
1b6c4b6b4b Merge pull request #46947 from frappe/mergify/bp/version-15-hotfix/pr-46383
feat: available serial no report (backport #46383)
2025-04-10 11:29:02 +05:30
Rohit Waghchaure
663e2b7e6c fix: item code not showing in the error message
(cherry picked from commit 86dee69c2f)
2025-04-10 05:35:55 +00:00
Mihir Kandoi
cc7756dd49 fix: test file for v15 2025-04-09 20:47:10 +05:30
Diptanil Saha
d79de4a434 Merge pull request #46969 from frappe/mergify/bp/version-15-hotfix/pr-46964
fix: added missing project field on pos profile (backport #46964)
2025-04-09 15:57:57 +05:30
Diptanil Saha
b8ef83e1ea chore: resolve conflict 2025-04-09 15:39:15 +05:30
diptanilsaha
8e9ddb7a69 fix: added missing project field on pos profile
(cherry picked from commit 821d64241a)

# Conflicts:
#	erpnext/accounts/doctype/pos_profile/pos_profile.json
2025-04-09 10:05:23 +00:00
Raffael Meyer
d43ce7f8e0 Merge pull request #46960 from frappe/mergify/bp/version-15-hotfix/pr-46959
fix: interaction with due date / payment terms / payment schedule (backport #46959)
2025-04-08 21:34:53 +02:00
barredterra
b5353e4ad1 chore: add german translation 2025-04-08 21:19:34 +02:00
barredterra
14efeb4acd chore: add context
(cherry picked from commit c00f62d54a)
2025-04-08 19:01:35 +00:00
barredterra
35daf669fe fix: clarify confirmation message
(cherry picked from commit 57be8a85d6)
2025-04-08 19:01:34 +00:00
barredterra
0c260baacd fix: use the actual field label
(cherry picked from commit 8a4db69581)
2025-04-08 19:01:34 +00:00
barredterra
cf00d42799 fix: recognize trigger from child table
(cherry picked from commit c55c77f4e9)
2025-04-08 19:01:34 +00:00
barredterra
b06a86541b refactor: use doc parameter instead of this.frm.doc
(cherry picked from commit 87c21a89fe)
2025-04-08 19:01:34 +00:00
Raffael Meyer
f762f7ec3e Merge pull request #46957 from barredterra/update-due-date
feat: update due date in payment schedule
2025-04-08 20:47:13 +02:00
Raffael Meyer
12bd9af3aa Merge pull request #46826 from frappe/mergify/bp/version-15-hotfix/pr-40050
fix: handle due date change (backport #40050)
2025-04-08 20:33:22 +02:00
barredterra
0b0a6b8cfa feat: update due date in payment schedule
Partial backport of b629356b7c
2025-04-08 20:12:25 +02:00
barredterra
830290c859 feat: clear payment terms and schedule 2025-04-08 20:10:31 +02:00
barredterra
98b75aaa38 Merge remote-tracking branch 'upstream/version-15-hotfix' into mergify/bp/version-15-hotfix/pr-40050 2025-04-08 19:59:34 +02:00
Raffael Meyer
d319d89988 Merge pull request #46949 from frappe/mergify/bp/version-15-hotfix/pr-46913
fix: improve translatability of query report print formats (backport #46913)
2025-04-08 16:11:18 +02:00
barredterra
d94ebd0c78 chore: add missing german translation 2025-04-08 15:56:48 +02:00
barredterra
7896f8a855 fix: remove redundant letter head 2025-04-08 15:33:12 +02:00
barredterra
7cf83ffce7 fix: go for lower case "on" because we already have translations for that 2025-04-08 15:31:25 +02:00
barredterra
18e9a9881c fix: make report's "printed on" translatable 2025-04-08 15:30:54 +02:00
Mihir Kandoi
6fedb7b9db refactor: split and clean execute function to be more readable
(cherry picked from commit 036af54d54)
2025-04-08 12:17:05 +00:00
Mihir Kandoi
9af50528f1 perf: take query out of loop
(cherry picked from commit 26de902496)
2025-04-08 12:17:05 +00:00
Mihir Kandoi
e7b5303782 fix: remove get_items query.run outside of if condition
(cherry picked from commit 80c17cc005)
2025-04-08 12:17:05 +00:00
Mihir Kandoi
0ec026ec7e refactor: import functions in new report instead of redundant code
(cherry picked from commit 501f07803e)
2025-04-08 12:17:04 +00:00
Mihir Kandoi
c472af87b2 feat: available serial no report
(cherry picked from commit 5592d8e87f)
2025-04-08 12:17:04 +00:00
JK1117
250b67076d fix: use source_fieldname to validate inventory dimension
(cherry picked from commit daa5bebdd0)
2025-04-08 08:57:59 +00:00
JK1117
2ed6c211f9 feat: fetch source_fieldname for inventory dimension
(cherry picked from commit 4e63ee1a70)
2025-04-08 08:57:59 +00:00
ljain112
bde55d2a07 fix: resolved conflicts 2025-04-01 18:51:10 +05:30
barredterra
db647a4e42 fix: wording 2025-03-31 21:38:34 +02:00
barredterra
79ed02bb2c fix: translatability
(cherry picked from commit 6d43d46fbc)
2025-03-31 19:23:41 +00:00
Marc Ramser
42479d9a7f feat(regional): Address Template for Germany & Add Switzerland Template (#46737)
* Add Address template for Switzerland

* Fix address template for germany

If an ERPNext instance is set to German and used by a business outside Germany (e.g., in Switzerland or Austria), customer addresses in Germany are displayed in their national format. However, for postal services, the international format (including the country) is required.".

This is just a workaround. IMHO the correct fix would be to check where the company is located and based on that use the national or the international template.

(cherry picked from commit 21b8ad6aa5)
2025-03-31 10:34:00 +00:00
Abdeali Chharchhodawala
6f94ba599b Merge pull request #46683 from Abdeali099/set-employee-contact-details
fix: Set complete contact details for `Employee` in PE
(cherry picked from commit 8c9d630ee4)

# Conflicts:
#	erpnext/accounts/doctype/payment_entry/payment_entry.json
#	erpnext/accounts/doctype/payment_entry/payment_entry.py
2025-03-28 12:49:20 +00:00
David (aider)
6f6574c5ac feat: add unit tests for distributed_discount_amount
(cherry picked from commit a464bd861b)
2024-09-05 10:08:39 +00:00
David
ad05e6dec2 fix: distributed discounts on si
(cherry picked from commit 0bab6f34c1)

# Conflicts:
#	erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
#	erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json
#	erpnext/selling/doctype/quotation_item/quotation_item.json
#	erpnext/selling/doctype/sales_order_item/sales_order_item.json
#	erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
2024-09-05 10:08:39 +00:00
612 changed files with 27250 additions and 8473 deletions

View File

@@ -6,7 +6,7 @@ Feature requests are also a great way to take the product forward. New ideas can
When you are raising an Issue, you should keep a few things in mind. Remember that the developer does not have access to your machine so you must give all the information you can while raising an Issue. If you are suggesting a feature, you should be very clear about what you want.
The Issue list is not the right place to ask a question or start a general discussion. If you want to do that , then the right place is the forum [https://discuss.erpnext.com](https://discuss.erpnext.com).
The Issue list is not the right place to ask a question or start a general discussion. If you want to do that , then the right place is the forum [https://discuss.frappe.io](https://discuss.frappe.io/c/erpnext/6).
### Reply and Closing Policy

View File

@@ -9,7 +9,7 @@ body:
Welcome to ERPNext issue tracker! Before creating an issue, please heed the following:
1. This tracker should only be used to report bugs and request features / enhancements to ERPNext
- For questions and general support, checkout the [user manual](https://docs.erpnext.com/) or use [forum](https://discuss.erpnext.com)
- For questions and general support, checkout the [user manual](https://docs.erpnext.com/) or use [forum](https://discuss.frappe.io/c/erpnext/6)
- For documentation issues, propose edit on [documentation site](https://docs.erpnext.com/) directly.
2. When making a bug report, make sure you provide all required information. The easier it is for
maintainers to reproduce, the faster it'll be fixed.

View File

@@ -1,5 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Community Forum
url: https://discuss.erpnext.com/
url: https://discuss.frappe.io/c/erpnext/6
about: For general QnA, discussions and community help.

View File

@@ -11,7 +11,7 @@ assignees: ''
Welcome to ERPNext issue tracker! Before creating an issue, please heed the following:
1. This tracker should only be used to report bugs and request features / enhancements to ERPNext
- For questions and general support, checkout the manual https://erpnext.com/docs/user/manual/en or use https://discuss.erpnext.com
- For questions and general support, checkout the manual https://docs.erpnext.com or use https://discuss.frappe.io/c/erpnext/6
2. Use the search function before creating a new issue. Duplicates will be closed and directed to
the original discussion.
3. When making a feature request, make sure to be as verbose as possible. The better you convey your message, the greater the drive to make it happen.
@@ -21,7 +21,7 @@ Please keep in mind that we get many many requests and we can't possibly work on
If you're in urgent need to a feature, please try the following channels to get paid developments done quickly:
1. Certified ERPNext partners: https://erpnext.com/partners
2. Developer community on ERPNext forums: https://discuss.erpnext.com/c/developers/5
2. Developer community on ERPNext forums: https://discuss.frappe.io/c/framework/5
3. Telegram group for ERPNext/Frappe development work: https://t.me/erpnext_opps
-->

25
.github/workflows/patch_faux.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
# Tests are skipped for these files but github doesn't allow "passing" hence this is required.
name: Skipped Patch Test
on:
pull_request:
paths:
- "**.js"
- "**.css"
- "**.md"
- "**.html"
- "**.csv"
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
name: Patch Test
steps:
- name: Pass skipped tests unconditionally
run: "echo Skipped"

View File

@@ -0,0 +1,27 @@
# Tests are skipped for these files but github doesn't allow "passing" hence this is required.
name: Skipped Tests
on:
pull_request:
paths:
- "**.js"
- "**.css"
- "**.md"
- "**.html"
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
container: [1, 2, 3, 4]
name: Python Unit Tests
steps:
- name: Pass skipped tests unconditionally
run: "echo Skipped"

View File

@@ -1,5 +1,5 @@
exclude: 'node_modules|.git'
default_stages: [commit]
default_stages: [pre-commit]
fail_fast: false

View File

@@ -3,22 +3,21 @@
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
erpnext/accounts/ @deepeshgarg007 @ruthra-kumar
erpnext/assets/ @khushi8112 @deepeshgarg007
erpnext/regional @deepeshgarg007 @ruthra-kumar
erpnext/selling @deepeshgarg007 @ruthra-kumar
erpnext/support/ @deepeshgarg007
pos*
erpnext/accounts/ @ruthra-kumar
erpnext/assets/ @khushi8112
erpnext/regional @ruthra-kumar
erpnext/selling @ruthra-kumar
erpnext/support/ @ruthra-kumar
erpnext/buying/ @rohitwaghchaure
erpnext/buying/ @rohitwaghchaure @mihir-kandoi
erpnext/maintenance/ @rohitwaghchaure
erpnext/manufacturing/ @rohitwaghchaure
erpnext/manufacturing/ @rohitwaghchaure @mihir-kandoi
erpnext/quality_management/ @rohitwaghchaure
erpnext/stock/ @rohitwaghchaure
erpnext/subcontracting @rohitwaghchaure
erpnext/stock/ @rohitwaghchaure @mihir-kandoi
erpnext/subcontracting @mihir-kandoi
erpnext/controllers/ @deepeshgarg007 @rohitwaghchaure
erpnext/patches/ @deepeshgarg007
erpnext/controllers/ @ruthra-kumar @rohitwaghchaure @mihir-kandoi
erpnext/patches/ @ruthra-kumar
.github/ @deepeshgarg007
.github/ @ruthra-kumar
pyproject.toml @akhilnarang

View File

@@ -64,7 +64,7 @@ New passwords will be created for the ERPNext "Administrator" user, the MariaDB
1. [Frappe School](https://school.frappe.io) - Learn Frappe Framework and ERPNext from the various courses by the maintainers or from the community.
2. [Official documentation](https://docs.erpnext.com/) - Extensive documentation for ERPNext.
3. [Discussion Forum](https://discuss.erpnext.com/) - Engage with community of ERPNext users and service providers.
3. [Discussion Forum](https://discuss.frappe.io/c/erpnext/6) - Engage with community of ERPNext users and service providers.
4. [Telegram Group](https://erpnext_public.t.me) - Get instant help from huge community of users.

View File

@@ -4,7 +4,7 @@ import inspect
import frappe
from frappe.utils.user import is_website_user
__version__ = "15.57.3"
__version__ = "15.83.2"
def get_default_company(user=None):

View File

@@ -46,7 +46,8 @@ def validate_service_stop_date(doc):
if (
old_stop_dates
and old_stop_dates.get(item.name)
and item.service_stop_date != old_stop_dates.get(item.name)
and item.service_stop_date
and getdate(item.service_stop_date) != getdate(old_stop_dates.get(item.name))
):
frappe.throw(_("Cannot change Service Stop Date for item in row {0}").format(item.idx))

View File

@@ -169,7 +169,7 @@ class Account(NestedSet):
if par.root_type:
self.root_type = par.root_type
if self.is_group:
if cint(self.is_group):
db_value = self.get_doc_before_save()
if db_value:
if self.report_type != db_value.report_type:
@@ -212,7 +212,7 @@ class Account(NestedSet):
if doc_before_save and not doc_before_save.parent_account:
throw(_("Root cannot be edited."), RootNotEditable)
if not self.parent_account and not self.is_group:
if not self.parent_account and not cint(self.is_group):
throw(_("The root account {0} must be a group").format(frappe.bold(self.name)))
def validate_root_company_and_sync_account_to_children(self):
@@ -261,7 +261,7 @@ class Account(NestedSet):
if self.check_gle_exists():
throw(_("Account with existing transaction cannot be converted to ledger"))
elif self.is_group:
elif cint(self.is_group):
if self.account_type and not self.flags.exclude_account_type_check:
throw(_("Cannot covert to Group because Account Type is selected."))
elif self.check_if_child_exists():
@@ -304,7 +304,9 @@ class Account(NestedSet):
self.account_currency = frappe.get_cached_value("Company", self.company, "default_currency")
self.currency_explicitly_specified = False
gl_currency = frappe.db.get_value("GL Entry", {"account": self.name}, "account_currency")
gl_currency = frappe.db.get_value(
"GL Entry", {"account": self.name, "is_cancelled": 0}, "account_currency"
)
if gl_currency and self.account_currency != gl_currency:
if frappe.db.get_value("GL Entry", {"account": self.name}):

View File

@@ -138,6 +138,11 @@ frappe.treeview_settings["Account"] = {
description: __(
"Further accounts can be made under Groups, but entries can be made against non-Groups"
),
onchange: function () {
if (!this.value) {
this.layout.set_value("root_type", "");
}
},
},
{
fieldtype: "Select",
@@ -281,12 +286,14 @@ frappe.treeview_settings["Account"] = {
label: __("View Ledger"),
click: function (node, btn) {
frappe.route_options = {
account: node.label,
from_date: erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[1],
to_date: erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2],
company:
frappe.treeview_settings["Account"].treeview.page.fields_dict.company.get_value(),
};
if (node.parent_label) {
frappe.route_options["account"] = node.label;
}
frappe.set_route("query-report", "General Ledger");
},
btnClass: "hidden-xs",

View File

@@ -0,0 +1,817 @@
{
"country_code": "au",
"name": "Australia - Chart of Accounts with Account Numbers",
"tree": {
"Assets": {
"Current Assets": {
"Cash On Hand": {
"Cash On Hand": {
"account_number": "11010",
"account_type": "Cash"
},
"account_number": "110",
"is_group": 1
},
"Cash at Bank": {
"Every Day Bank Account": {
"account_number": "11510",
"account_type": "Bank"
},
"Business Savings Account": {
"account_number": "11520"
},
"Business Term Deposit": {
"account_number": "11530"
},
"account_number": "115",
"is_group": 1
},
"Trade Receivables": {
"Trade Debtors": {
"account_number": "12010",
"account_type": "Receivable"
},
"Provision for Doubtful Debts": {
"account_number": "12020"
},
"Sundry Debtors": {
"account_number": "12030"
},
"Debtor Refund": {
"account_number": "12040"
},
"account_number": "120",
"is_group": 1
},
"Inventory": {
"Stock On Hand": {
"account_number": "13010",
"account_type": "Stock"
},
"WIP - Work In Progress - Manufacturing": {
"account_number": "13020"
},
"account_number": "130",
"is_group": 1
},
"Prepayments": {
"Prepayments": {
"account_number": "14010"
},
"Provisional Tax Paid": {
"account_number": "14020"
},
"account_number": "140",
"is_group": 1
},
"account_number": "11",
"is_group": 1
},
"Non Current Assets": {
"Plant & Equipment": {
"Plant & Equipment": {
"account_number": "16010",
"account_type": "Fixed Asset"
},
"Accumulated Depreciation Plant & Equipment": {
"account_number": "16020",
"account_type": "Accumulated Depreciation"
},
"account_number": "160",
"is_group": 1
},
"Motor Vehicle": {
"Motor Vehicle": {
"account_number": "16110",
"account_type": "Fixed Asset"
},
"Accumulated Depreciation Motor Vehicle": {
"account_number": "16120",
"account_type": "Accumulated Depreciation"
},
"account_number": "161",
"is_group": 1
},
"Office Equipment": {
"Office Furniture & Equipment": {
"account_number": "16210",
"account_type": "Fixed Asset"
},
"Accumulated Depreciation Office Furniture & Equipment": {
"account_number": "16220",
"account_type": "Accumulated Depreciation"
},
"account_number": "162",
"is_group": 1
},
"Computer Equipment": {
"Computer Equipment": {
"account_number": "16310",
"account_type": "Fixed Asset"
},
"Accumulated Depreciation Computer Equipment": {
"account_number": "16320",
"account_type": "Accumulated Depreciation"
},
"account_number": "163",
"is_group": 1
},
"Building": {
"Buildings": {
"account_number": "16410",
"account_type": "Fixed Asset"
},
"Accumulated Depreciation Buildings": {
"account_number": "16420",
"account_type": "Accumulated Depreciation"
},
"CWIP - Construction Work In Progress": {
"account_number": "16430",
"account_type": "Capital Work in Progress"
},
"Accumulated Depreciation - Others": {
"account_number": "16440",
"account_type": "Accumulated Depreciation"
},
"account_number": "164",
"is_group": 1
},
"Related Party": {
"Loan to Party 1": {
"account_number": "17010"
},
"account_number": "170",
"is_group": 1
},
"Investments & Unlisted Entities": {
"Investment - Entity 1": {
"account_number": "17510"
},
"account_number": "175",
"is_group": 1
},
"Intagible Assets": {
"Goodwill": {
"account_number": "18010"
},
"Opening Balance Temporary ": {
"account_number": "18090",
"account_type": "Temporary"
},
"account_number": "180",
"is_group": 1
},
"account_number": "16",
"is_group": 1
},
"account_number": "1",
"root_type": "Asset"
},
"Liabilities": {
"Current Liabilities": {
"Trade Payables - Current": {
"Trade Creditors": {
"account_number": "21010",
"account_type": "Payable"
},
"Goods Received Not Invoiced": {
"account_number": "21050",
"account_type": "Stock Received But Not Billed"
},
"Service Received Not Invoiced": {
"account_number": "21060"
},
"Asset Received Not Invoiced": {
"account_number": "21070",
"account_type": "Asset Received But Not Billed"
},
"account_number": "210",
"is_group": 1
},
"Other Payables - Current": {
"Accrued Expenses": {
"account_number": "21510"
},
"Payroll - Wages Clearing": {
"account_number": "21550"
},
"Payroll - Superannuation Deductions": {
"account_number": "21555"
},
"Payroll - Misc Deductions": {
"account_number": "21560"
},
"Payroll - Withholding Tax Payable": {
"account_number": "21565"
},
"account_number": "215",
"is_group": 1
},
"GST": {
"GST Payments to ATO": {
"account_number": "22030"
},
"Provision for PAYG Tax": {
"account_number": "22040"
},
"account_number": "220",
"account_type": "Tax",
"is_group": 1
},
"Interest & Non Bearing Liabilities - Current": {
"Credit Card - VISA": {
"account_number": "22510"
},
"account_number": "225",
"is_group": 1
},
"Bank Overdraft": {
"Bank Overdraft Cash at Bank": {
"account_number": "23010"
},
"account_number": "230",
"is_group": 1
},
"Trade Finance": {
"Trade Finance": {
"account_number": "23510"
},
"account_number": "235",
"is_group": 1
},
"Lease Liabilities": {
"Finance Lease - Current": {
"account_number": "24010"
},
"account_number": "240",
"is_group": 1
},
"Provisions": {
"Provision for Long Service Leave": {
"account_number": "24510"
},
"Provision for Holiday Pay": {
"account_number": "24520"
},
"account_number": "245",
"is_group": 1
},
"account_number": "21",
"is_group": 1
},
"Non Current Liabilities": {
"Trade & Other Payables - Non Current": {
"Loan Account - Party 1": {
"account_number": "25010"
},
"account_number": "250",
"is_group": 1
},
"Interest & Non Bearing Liabilities - Non Current": {
"Non Current Liability - Director Loan": {
"account_number": "25510"
},
"account_number": "255",
"is_group": 1
},
"Bank Loans - Non Current": {
"Bank Loan 1 - Non Current": {
"account_number": "26010"
},
"account_number": "260",
"is_group": 1
},
"Lease Liabilities - Non Current": {
"Finance Lease - Non Current": {
"account_number": "27010"
},
"account_number": "270",
"is_group": 1
},
"Provisions - Non Current": {
"Provision for Long Service Leave": {
"account_number": "27510"
},
"Provision for Holiday Pay": {
"account_number": "27520"
},
"account_number": "275",
"is_group": 1
},
"account_number": "25",
"is_group": 1
},
"account_number": "2",
"root_type": "Liability"
},
"Equity": {
"Equity": {
"Owner's/Shareholder's Equity": {
"Owner's/Shareholders Capital": {
"account_number": "31010",
"account_type": "Equity"
},
"Owner's/Shareholders Drawings": {
"account_number": "31020",
"account_type": "Equity"
},
"account_number": "310",
"is_group": 1
},
"Earnings": {
"Current Year Earnings": {
"account_number": "35010",
"account_type": "Equity"
},
"Retained Earnings": {
"account_number": "35020",
"account_type": "Equity"
},
"account_number": "350",
"is_group": 1
},
"account_number": "31",
"is_group": 1
},
"account_number": "3",
"root_type": "Equity"
},
"Revenue": {
"Revenue": {
"Sales Revenue": {
"Sales Income": {
"account_number": "41010",
"account_type": "Income Account"
},
"Freight Income": {
"account_number": "41020",
"account_type": "Income Account"
},
"Other Income": {
"account_number": "41030",
"account_type": "Income Account"
},
"Service Income": {
"account_number": "41040",
"account_type": "Income Account"
},
"account_number": "410",
"is_group": 1
},
"Other Revenue": {
"Commission Received": {
"account_number": "42010"
},
"Discounts Received": {
"account_number": "42020"
},
"Interest received": {
"account_number": "42030"
},
"Profit/Loss on Sales of Assets": {
"account_number": "42040"
},
"Rent Received": {
"account_number": "42050"
},
"Sundry Income": {
"account_number": "42060"
},
"account_number": "420",
"is_group": 1
},
"account_number": "41",
"is_group": 1
},
"account_number": "4",
"root_type": "Income"
},
"Cost of Goods": {
"Cost of Goods": {
"Cost of Goods Sold": {
"Cost of Goods Sold": {
"account_number": "51010",
"account_type": "Cost of Goods Sold"
},
"Freight Expenses (sales related)": {
"account_number": "51020"
},
"Discounts Given": {
"account_number": "51030"
},
"Subcontracting Charges": {
"account_number": "51040"
},
"account_number": "510",
"is_group": 1
},
"Other COGS": {
"Purchases - Miscellaneous": {
"account_number": "52010"
},
"Duty & Customs Fees": {
"account_number": "52020",
"account_type": "Tax"
},
"Freight Inwards": {
"account_number": "52030",
"account_type": "Chargeable"
},
"Stock Adjustment": {
"account_number": "52040",
"account_type": "Stock Adjustment"
},
"Stock Wirte Off": {
"account_number": "52050",
"account_type": "Stock Adjustment"
},
"Stock Valuation Expenses": {
"account_number": "52060",
"account_type": "Expenses Included In Valuation"
},
"Asset Valuation Expenses": {
"account_number": "52070",
"account_type": "Expenses Included In Asset Valuation"
},
"account_number": "520",
"is_group": 1
},
"account_number": "51",
"is_group": 1
},
"account_number": "5",
"root_type": "Expense"
},
"Expenses": {
"Fixed Expenses": {
"Payroll & Related Expenses": {
"Salaries & Wages": {
"account_number": "61010"
},
"Superannuation": {
"account_number": "61015"
},
"Staff Amenities - GST Paid": {
"account_number": "61020"
},
"Staff Amenities - GST Free": {
"account_number": "61025"
},
"Staff Recruitment": {
"account_number": "61030"
},
"Staff Training": {
"account_number": "61035"
},
"Fringe Benefits Tax": {
"account_number": "61040"
},
"Payroll Tax": {
"account_number": "61045"
},
"Workers Compensation": {
"account_number": "61050"
},
"Long Service Leave": {
"account_number": "61060"
},
"Mileage Reimbursement": {
"account_number": "61070"
},
"Overtime": {
"account_number": "61080"
},
"Worksafe Insurance": {
"account_number": "61090"
},
"account_number": "610",
"is_group": 1
},
"Depreciation Expenses": {
"Depreciation - Plant & Equipment": {
"account_number": "62010",
"account_type": "Depreciation"
},
"Depreciation - Motor Vehicle": {
"account_number": "62020",
"account_type": "Depreciation"
},
"Depreciation - Office Equipment": {
"account_number": "62030",
"account_type": "Depreciation"
},
"Depreciation - Computer Equipment": {
"account_number": "62040",
"account_type": "Depreciation"
},
"Depreciation - Building": {
"account_number": "62050",
"account_type": "Depreciation"
},
"Depreciation - Others": {
"account_number": "62510",
"account_type": "Depreciation"
},
"account_number": "620",
"is_group": 1
},
"account_number": "61",
"is_group": 1
},
"Accrued Expenses": {
"Accrued Expenses": {
"Accrued Expenses - Salaries & Wages": {
"account_number": "63010"
},
"Accrued Expenses - Interest": {
"account_number": "63020"
},
"account_number": "630",
"is_group": 1
},
"account_number": "63",
"is_group": 1
},
"Operating Expenses": {
"General and Administrative Expenses": {
"Low Value Assets less than $300": {
"account_number": "64010"
},
"Office Supplies": {
"account_number": "64020"
},
"Postage & Courier": {
"account_number": "64025"
},
"Printing & Stationery": {
"account_number": "64030"
},
"Registration Fees / Filing Fees": {
"account_number": "64040"
},
"Travel & Accommodation - Local": {
"account_number": "64050"
},
"Travel & Accommodation - Overseas": {
"account_number": "64060"
},
"Relocation Costs": {
"account_number": "64070"
},
"Hire Charges": {
"account_number": "64080"
},
"Repairs & Maintenance": {
"account_number": "64210"
},
"Cleaning Expenses": {
"account_number": "64215"
},
"Uniforms": {
"account_number": "64220"
},
"Security": {
"account_number": "64225"
},
"Subscriptions & Licences": {
"account_number": "64510"
},
"Software Expenses": {
"account_number": "64515"
},
"Marketing Expenses": {
"account_number": "64520"
},
"Advertising Expenses": {
"account_number": "64525"
},
"Website Hosting & Domain Expenses": {
"account_number": "64530"
},
"Computer Repairs / Supplies": {
"account_number": "64540"
},
"Conferences": {
"account_number": "64550"
},
"Consultancy /Contract Services": {
"account_number": "64560"
},
"Training Services": {
"account_number": "64570"
},
"Workshop Supplies": {
"account_number": "64580"
},
"Consumables": {
"account_number": "64585"
},
"Entertainment Expenses - Deductible": {
"account_number": "64810"
},
"Entertainment Expenses - Non Deductible": {
"account_number": "64820"
},
"Amortisation Of Goodwill": {
"account_number": "64910"
},
"General / Miscellaneous Expenses": {
"account_number": "64915",
"account_type": "Chargeable"
},
"Donations": {
"account_number": "64920"
},
"Client Gifts": {
"account_number": "64930"
},
"Employee Gifts": {
"account_number": "64935"
},
"account_number": "640",
"is_group": 1
},
"Occupancy Expenses": {
"Rental Expenses": {
"account_number": "65010"
},
"Property Insurance": {
"account_number": "65020"
},
"Electricity Expenses": {
"account_number": "65030"
},
"Water Rates": {
"account_number": "65040"
},
"Gas Expenses": {
"account_number": "65050"
},
"Property Taxes": {
"account_number": "65060"
},
"Rates": {
"account_number": "65070"
},
"account_number": "650",
"is_group": 1
},
"Communication & Vehicle Expenses": {
"Internet Expenses": {
"account_number": "66010"
},
"Mobile Telephone": {
"account_number": "66020"
},
"Telephone Expenses": {
"account_number": "66030"
},
"Motor Vehicle - Fuel Expenses": {
"account_number": "66040"
},
"Motor Vehicle - Parking & Tolls": {
"account_number": "66050"
},
"Motor Vehicle - Registration & Insurance": {
"account_number": "66060"
},
"Motor Vehicle - Service & Repairs": {
"account_number": "66070"
},
"Taxi": {
"account_number": "66080"
},
"account_number": "660",
"is_group": 1
},
"account_number": "64",
"is_group": 1
},
"Non-Operating Expenses": {
"Finance Costs": {
"Interest - Bank Loans": {
"account_number": "67010"
},
"Interest - Finance Leases": {
"account_number": "67020"
},
"Interest - Other Loans": {
"account_number": "67025"
},
"Insurance": {
"account_number": "67030"
},
"Bank Charges": {
"account_number": "67050"
},
"Rounding off": {
"account_number": "67055",
"account_type": "Round Off"
},
"Audit Fees": {
"account_number": "67060"
},
"Accounting Fees": {
"account_number": "67070"
},
"Legal Fees": {
"account_number": "67080"
},
"Management Fees": {
"account_number": "67090"
},
"account_number": "670",
"is_group": 1
},
"Other Costs": {
"Doubtful Debts": {
"account_number": "67510"
},
"Fines": {
"account_number": "67520"
},
"Debt Collection": {
"account_number": "67530"
},
"Bad Debts": {
"account_number": "67540"
},
"account_number": "675",
"is_group": 1
},
"account_number": "67",
"is_group": 1
},
"Variable Expenses": {
"Variable Expenses": {
"Bonus & Commissions Paid": {
"account_number": "68010"
},
"Bonus & Commissions To be Paid": {
"account_number": "68020"
},
"Warranty Claims": {
"account_number": "68030"
},
"account_number": "680",
"is_group": 1
},
"account_number": "68",
"is_group": 1
},
"account_number": "6",
"root_type": "Expense"
},
"Other Income": {
"Other Income": {
"Interest Income": {
"Interest Income": {
"account_number": "71010"
},
"account_number": "710",
"is_group": 1
},
"Asset Disposal Income": {
"Gain on Asset Disposal": {
"account_number": "73010"
},
"account_number": "730",
"is_group": 1
},
"account_number": "71",
"is_group": 1
},
"account_number": "7",
"root_type": "Income"
},
"Other Expenses": {
"Other Expenses": {
"Income Tax Expenses": {
"Income Tax Expenses": {
"account_number": "81010"
},
"account_number": "810",
"is_group": 1
},
"Foreign Exchange Gain/Loss": {
"Exchange Loss/Gain - Realized": {
"account_number": "82010"
},
"account_number": "820",
"is_group": 1
},
"Asset Disposal Expenses": {
"Loss on Asset Disposal": {
"account_number": "83010"
},
"account_number": "830",
"is_group": 1
},
"account_number": "81",
"is_group": 1
},
"account_number": "8",
"root_type": "Expense"
}
}
}

View File

@@ -13,7 +13,7 @@ def get():
_("Bank Accounts"): {"account_type": "Bank", "is_group": 1},
_("Cash In Hand"): {_("Cash"): {"account_type": "Cash"}, "account_type": "Cash"},
_("Loans and Advances (Assets)"): {
_("Employee Advances"): {},
_("Employee Advances"): {"account_type": "Payable"},
},
_("Securities and Deposits"): {_("Earnest Money"): {}},
_("Stock Assets"): {

View File

@@ -20,7 +20,7 @@ def get():
"account_number": "1100",
},
_("Loans and Advances (Assets)"): {
_("Employee Advances"): {"account_number": "1610"},
_("Employee Advances"): {"account_number": "1610", "account_type": "Payable"},
"account_number": "1600",
},
_("Securities and Deposits"): {

View File

@@ -111,17 +111,15 @@ class AccountingDimension(Document):
def make_dimension_in_accounting_doctypes(doc, doclist=None):
if not doclist:
doclist = get_doctypes_with_dimensions()
doc_count = len(get_accounting_dimensions())
count = 0
repostable_doctypes = get_allowed_types_from_settings()
repostable_doctypes = get_allowed_types_from_settings(child_doc=True)
for doctype in doclist:
if (doc_count + 1) % 2 == 0:
insert_after_field = "dimension_col_break"
else:
insert_after_field = "accounting_dimensions_section"
df = {
"fieldname": doc.fieldname,
"label": doc.label,

View File

@@ -7,6 +7,7 @@
"engine": "InnoDB",
"field_order": [
"accounting_dimension",
"fieldname",
"disabled",
"column_break_2",
"company",
@@ -90,11 +91,17 @@
"fieldname": "apply_restriction_on_values",
"fieldtype": "Check",
"label": "Apply restriction on dimension values"
},
{
"fieldname": "fieldname",
"fieldtype": "Data",
"hidden": 1,
"label": "Fieldname"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2023-06-07 14:59:41.869117",
"modified": "2025-08-08 14:13:22.203011",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounting Dimension Filter",
@@ -139,8 +146,8 @@
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_field": "creation",
"sort_order": "DESC",
"states": [],
"track_changes": 1
}
}

View File

@@ -17,17 +17,16 @@ class AccountingDimensionFilter(Document):
from frappe.types import DF
from erpnext.accounts.doctype.allowed_dimension.allowed_dimension import AllowedDimension
from erpnext.accounts.doctype.applicable_on_account.applicable_on_account import (
ApplicableOnAccount,
)
from erpnext.accounts.doctype.applicable_on_account.applicable_on_account import ApplicableOnAccount
accounting_dimension: DF.Literal
accounting_dimension: DF.Literal[None]
accounts: DF.Table[ApplicableOnAccount]
allow_or_restrict: DF.Literal["Allow", "Restrict"]
apply_restriction_on_values: DF.Check
company: DF.Link
dimensions: DF.Table[AllowedDimension]
disabled: DF.Check
fieldname: DF.Data | None
# end: auto-generated types
def before_save(self):
@@ -37,6 +36,10 @@ class AccountingDimensionFilter(Document):
self.set("dimensions", [])
def validate(self):
self.fieldname = frappe.db.get_value(
"Accounting Dimension", {"document_type": self.accounting_dimension}, "fieldname"
) or frappe.scrub(self.accounting_dimension) # scrub to handle default accounting dimension
self.validate_applicable_accounts()
def validate_applicable_accounts(self):
@@ -72,7 +75,7 @@ def get_dimension_filter_map():
"""
SELECT
a.applicable_on_account, d.dimension_value, p.accounting_dimension,
p.allow_or_restrict, a.is_mandatory
p.allow_or_restrict, p.fieldname, a.is_mandatory
FROM
`tabApplicable On Account` a,
`tabAccounting Dimension Filter` p
@@ -87,8 +90,6 @@ def get_dimension_filter_map():
dimension_filter_map = {}
for f in filters:
f.fieldname = scrub(f.accounting_dimension)
build_map(
dimension_filter_map,
f.fieldname,

View File

@@ -22,4 +22,32 @@ frappe.ui.form.on("Accounts Settings", {
}
);
},
add_taxes_from_taxes_and_charges_template(frm) {
toggle_tax_settings(frm, "add_taxes_from_taxes_and_charges_template");
},
add_taxes_from_item_tax_template(frm) {
toggle_tax_settings(frm, "add_taxes_from_item_tax_template");
},
drop_ar_procedures: function (frm) {
frm.call({
doc: frm.doc,
method: "drop_ar_sql_procedures",
callback: function (r) {
frappe.show_alert(__("Procedures dropped"), 5);
},
});
},
});
function toggle_tax_settings(frm, field_name) {
if (frm.doc[field_name]) {
const other_field =
field_name === "add_taxes_from_item_tax_template"
? "add_taxes_from_taxes_and_charges_template"
: "add_taxes_from_item_tax_template";
frm.set_value(other_field, 0);
}
}

View File

@@ -31,6 +31,7 @@
"determine_address_tax_category_from",
"column_break_19",
"add_taxes_from_item_tax_template",
"add_taxes_from_taxes_and_charges_template",
"book_tax_discount_loss",
"round_row_wise_tax",
"print_settings",
@@ -38,8 +39,15 @@
"show_taxes_as_table_in_print",
"column_break_12",
"show_payment_schedule_in_print",
"item_price_settings_section",
"maintain_same_internal_transaction_rate",
"fetch_valuation_rate_for_internal_transaction",
"column_break_feyo",
"maintain_same_rate_action",
"role_to_override_stop_action",
"currency_exchange_section",
"allow_stale",
"allow_pegged_currencies_exchange_rates",
"column_break_yuug",
"stale_days",
"section_break_jpd0",
@@ -77,9 +85,14 @@
"reports_tab",
"remarks_section",
"general_ledger_remarks_length",
"ignore_is_opening_check_for_reporting",
"column_break_lvjk",
"receivable_payable_remarks_length",
"accounts_receivable_payable_tuning_section",
"receivable_payable_fetch_method",
"column_break_ntmi",
"drop_ar_procedures",
"legacy_section",
"ignore_is_opening_check_for_reporting",
"payment_request_settings",
"create_pr_in_draft_status"
],
@@ -532,6 +545,90 @@
"fieldtype": "Select",
"label": "Posting Date Inheritance for Exchange Gain / Loss",
"options": "Invoice\nPayment\nReconciliation Date"
},
{
"fieldname": "column_break_xrnd",
"fieldtype": "Column Break"
},
{
"default": "Buffered Cursor",
"fieldname": "receivable_payable_fetch_method",
"fieldtype": "Select",
"label": "Data Fetch Method",
"options": "Buffered Cursor\nUnBuffered Cursor\nRaw SQL"
},
{
"fieldname": "accounts_receivable_payable_tuning_section",
"fieldtype": "Section Break",
"label": "Accounts Receivable / Payable Tuning"
},
{
"fieldname": "legacy_section",
"fieldtype": "Section Break",
"label": "Legacy Fields"
},
{
"default": "0",
"fieldname": "maintain_same_internal_transaction_rate",
"fieldtype": "Check",
"label": "Maintain Same Rate Throughout Internal Transaction"
},
{
"default": "Stop",
"depends_on": "maintain_same_internal_transaction_rate",
"fieldname": "maintain_same_rate_action",
"fieldtype": "Select",
"label": "Action if Same Rate is Not Maintained Throughout Internal Transaction",
"mandatory_depends_on": "maintain_same_internal_transaction_rate",
"options": "Stop\nWarn"
},
{
"depends_on": "eval: doc.maintain_same_internal_transaction_rate && doc.maintain_same_rate_action == 'Stop'",
"fieldname": "role_to_override_stop_action",
"fieldtype": "Link",
"label": "Role Allowed to Override Stop Action",
"options": "Role"
},
{
"fieldname": "item_price_settings_section",
"fieldtype": "Section Break",
"label": "Item Price Settings"
},
{
"fieldname": "column_break_feyo",
"fieldtype": "Column Break"
},
{
"default": "0",
"description": "System will do an implicit conversion using the pegged currency. <br>\nEx: Instead of AED -&gt; INR, system will do AED -&gt; USD -&gt; INR using the pegged exchange rate of AED against USD.",
"documentation_url": "/app/pegged-currencies/Pegged Currencies",
"fieldname": "allow_pegged_currencies_exchange_rates",
"fieldtype": "Check",
"label": "Allow Implicit Pegged Currency Conversion"
},
{
"default": "0",
"description": "If no taxes are set, and Taxes and Charges Template is selected, the system will automatically apply the taxes from the chosen template.",
"fieldname": "add_taxes_from_taxes_and_charges_template",
"fieldtype": "Check",
"label": "Automatically Add Taxes from Taxes and Charges Template"
},
{
"fieldname": "column_break_ntmi",
"fieldtype": "Column Break"
},
{
"depends_on": "eval:doc.receivable_payable_fetch_method == \"Raw SQL\"",
"description": "Drops existing SQL Procedures and Function setup by Accounts Receivable report",
"fieldname": "drop_ar_procedures",
"fieldtype": "Button",
"label": "Drop Procedures"
},
{
"default": "0",
"fieldname": "fetch_valuation_rate_for_internal_transaction",
"fieldtype": "Check",
"label": "Fetch Valuation Rate for Internal Transaction"
}
],
"icon": "icon-cog",
@@ -539,7 +636,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2025-01-23 13:15:44.077853",
"modified": "2025-07-18 13:56:47.192437",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounts Settings",
@@ -568,4 +665,4 @@
"sort_order": "ASC",
"states": [],
"track_changes": 1
}
}

View File

@@ -25,7 +25,9 @@ class AccountsSettings(Document):
acc_frozen_upto: DF.Date | None
add_taxes_from_item_tax_template: DF.Check
add_taxes_from_taxes_and_charges_template: DF.Check
allow_multi_currency_invoices_against_single_party_account: DF.Check
allow_pegged_currencies_exchange_rates: DF.Check
allow_stale: DF.Check
auto_reconcile_payments: DF.Check
auto_reconciliation_job_trigger: DF.Int
@@ -46,17 +48,22 @@ class AccountsSettings(Document):
enable_immutable_ledger: DF.Check
enable_party_matching: DF.Check
exchange_gain_loss_posting_date: DF.Literal["Invoice", "Payment", "Reconciliation Date"]
fetch_valuation_rate_for_internal_transaction: DF.Check
frozen_accounts_modifier: DF.Link | None
general_ledger_remarks_length: DF.Int
ignore_account_closing_balance: DF.Check
ignore_is_opening_check_for_reporting: DF.Check
maintain_same_internal_transaction_rate: DF.Check
maintain_same_rate_action: DF.Literal["Stop", "Warn"]
make_payment_via_journal_entry: DF.Check
merge_similar_account_heads: DF.Check
over_billing_allowance: DF.Currency
post_change_gl_entries: DF.Check
receivable_payable_fetch_method: DF.Literal["Buffered Cursor", "UnBuffered Cursor", "Raw SQL"]
receivable_payable_remarks_length: DF.Int
reconciliation_queue_size: DF.Int
role_allowed_to_over_bill: DF.Link | None
role_to_override_stop_action: DF.Link | None
round_row_wise_tax: DF.Check
show_balance_in_coa: DF.Check
show_inclusive_tax_in_print: DF.Check
@@ -69,6 +76,7 @@ class AccountsSettings(Document):
# end: auto-generated types
def validate(self):
self.validate_auto_tax_settings()
old_doc = self.get_doc_before_save()
clear_cache = False
@@ -135,3 +143,21 @@ class AccountsSettings(Document):
if self.has_value_changed("reconciliation_queue_size"):
if cint(self.reconciliation_queue_size) < 5 or cint(self.reconciliation_queue_size) > 100:
frappe.throw(_("Queue Size should be between 5 and 100"))
def validate_auto_tax_settings(self):
if self.add_taxes_from_item_tax_template and self.add_taxes_from_taxes_and_charges_template:
frappe.throw(
_("You cannot enable both the settings '{0}' and '{1}'.").format(
frappe.bold(_(self.meta.get_label("add_taxes_from_item_tax_template"))),
frappe.bold(_(self.meta.get_label("add_taxes_from_taxes_and_charges_template"))),
),
title=_("Auto Tax Settings Error"),
)
@frappe.whitelist()
def drop_ar_sql_procedures(self):
from erpnext.accounts.report.accounts_receivable.accounts_receivable import InitSQLProceduresForAR
frappe.db.sql(f"drop function if exists {InitSQLProceduresForAR.genkey_function_name}")
frappe.db.sql(f"drop procedure if exists {InitSQLProceduresForAR.init_procedure_name}")
frappe.db.sql(f"drop procedure if exists {InitSQLProceduresForAR.allocate_procedure_name}")

View File

@@ -12,7 +12,8 @@
"against_voucher_no",
"amount",
"currency",
"event"
"event",
"delinked"
],
"fields": [
{
@@ -68,12 +69,20 @@
"label": "Company",
"options": "Company",
"read_only": 1
},
{
"default": "0",
"fieldname": "delinked",
"fieldtype": "Check",
"label": "DeLinked",
"read_only": 1
}
],
"grid_page_length": 50,
"in_create": 1,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2024-11-05 10:31:28.736671",
"modified": "2025-10-13 15:11:58.300836",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Advance Payment Ledger Entry",
@@ -107,7 +116,8 @@
"share": 1
}
],
"row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "DESC",
"states": []
}
}

View File

@@ -1,9 +1,11 @@
# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
# import frappe
import frappe
from frappe.model.document import Document
from erpnext.accounts.utils import get_advance_payment_doctypes, update_voucher_outstanding
class AdvancePaymentLedgerEntry(Document):
# begin: auto-generated types
@@ -19,9 +21,28 @@ class AdvancePaymentLedgerEntry(Document):
amount: DF.Currency
company: DF.Link | None
currency: DF.Link | None
delinked: DF.Check
event: DF.Data | None
voucher_no: DF.DynamicLink | None
voucher_type: DF.Link | None
# end: auto-generated types
pass
def on_update(self):
if (
self.against_voucher_type in get_advance_payment_doctypes()
and self.flags.update_outstanding == "Yes"
and not frappe.flags.is_reverse_depr_entry
):
update_voucher_outstanding(self.against_voucher_type, self.against_voucher_no, None, None, None)
def on_doctype_update():
frappe.db.add_index(
"Advance Payment Ledger Entry",
["against_voucher_type", "against_voucher_no"],
)
frappe.db.add_index(
"Advance Payment Ledger Entry",
["voucher_type", "voucher_no"],
)

View File

@@ -16,6 +16,7 @@
"accounting_dimensions_section",
"cost_center",
"dimension_col_break",
"project",
"section_break_8",
"rate",
"section_break_9",
@@ -92,6 +93,13 @@
"fieldname": "dimension_col_break",
"fieldtype": "Column Break"
},
{
"allow_on_submit": 1,
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
"options": "Project"
},
{
"fieldname": "section_break_8",
"fieldtype": "Section Break"

View File

@@ -109,6 +109,7 @@ class BankAccount(Document):
"party_type": self.party_type,
"party": self.party,
"is_company_account": self.is_company_account,
"company": self.company,
"is_default": 1,
"disabled": 0,
},

View File

@@ -118,8 +118,9 @@ class BankClearance(Document):
else:
# using db_set to trigger notification
payment_entry = frappe.get_doc(d.payment_document, d.payment_entry)
payment_entry.db_set("clearance_date", d.clearance_date)
frappe.db.set_value(
d.payment_document, d.payment_entry, "clearance_date", d.clearance_date
)
clearance_date_updated = True
@@ -136,8 +137,10 @@ def get_payment_entries_for_bank_clearance(
entries = []
condition = ""
pe_condition = ""
if not include_reconciled_entries:
condition = "and (clearance_date IS NULL or clearance_date='0000-00-00')"
pe_condition = "and (pe.clearance_date IS NULL or pe.clearance_date='0000-00-00')"
journal_entries = frappe.db.sql(
f"""
@@ -162,19 +165,20 @@ def get_payment_entries_for_bank_clearance(
payment_entries = frappe.db.sql(
f"""
select
"Payment Entry" as payment_document, name as payment_entry,
reference_no as cheque_number, reference_date as cheque_date,
if(paid_from=%(account)s, paid_amount + total_taxes_and_charges, 0) as credit,
if(paid_from=%(account)s, 0, received_amount + total_taxes_and_charges) as debit,
posting_date, ifnull(party,if(paid_from=%(account)s,paid_to,paid_from)) as against_account, clearance_date,
if(paid_to=%(account)s, paid_to_account_currency, paid_from_account_currency) as account_currency
from `tabPayment Entry`
"Payment Entry" as payment_document, pe.name as payment_entry,
pe.reference_no as cheque_number, pe.reference_date as cheque_date,
if(pe.paid_from=%(account)s, pe.paid_amount + if(pe.payment_type = 'Pay' and c.default_currency = pe.paid_from_account_currency, pe.base_total_taxes_and_charges, pe.total_taxes_and_charges) , 0) as credit,
if(pe.paid_from=%(account)s, 0, pe.received_amount + pe.total_taxes_and_charges) as debit,
pe.posting_date, ifnull(pe.party,if(pe.paid_from=%(account)s,pe.paid_to,pe.paid_from)) as against_account, pe.clearance_date,
if(pe.paid_to=%(account)s, pe.paid_to_account_currency, pe.paid_from_account_currency) as account_currency
from `tabPayment Entry` as pe
join `tabCompany` c on c.name = pe.company
where
(paid_from=%(account)s or paid_to=%(account)s) and docstatus=1
and posting_date >= %(from)s and posting_date <= %(to)s
{condition}
(pe.paid_from=%(account)s or pe.paid_to=%(account)s) and pe.docstatus=1
and pe.posting_date >= %(from)s and pe.posting_date <= %(to)s
{pe_condition}
order by
posting_date ASC, name DESC
pe.posting_date ASC, pe.name DESC
""",
{
"account": account,

View File

@@ -7,6 +7,9 @@ import frappe
from frappe.utils import add_months, getdate
from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center
from erpnext.accounts.doctype.mode_of_payment.test_mode_of_payment import (
set_default_account_for_mode_of_payment,
)
from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
@@ -191,11 +194,13 @@ def make_pos_sales_invoice():
customer = make_customer(customer="_Test Customer")
mode_of_payment = frappe.get_doc("Mode of Payment", "Wire Transfer")
set_default_account_for_mode_of_payment(mode_of_payment, "_Test Company", "_Test Bank Clearance - _TC")
si = create_sales_invoice(customer=customer, item="_Test Item", is_pos=1, qty=1, rate=1000, do_not_save=1)
si.set("payments", [])
si.append(
"payments", {"mode_of_payment": "Cash", "account": "_Test Bank Clearance - _TC", "amount": 1000}
)
si.append("payments", {"mode_of_payment": "Wire Transfer", "amount": 1000})
si.insert()
si.submit()

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,7 @@ from frappe import _
from frappe.model.document import Document
from frappe.query_builder.custom import ConstantColumn
from frappe.query_builder.functions import Sum
from frappe.utils import cint, flt
from frappe.utils import cint, create_batch, flt
from erpnext import get_default_cost_center
from erpnext.accounts.doctype.bank_transaction.bank_transaction import get_total_allocated_amount
@@ -377,16 +377,17 @@ def auto_reconcile_vouchers(
bank_transactions = get_bank_transactions(bank_account)
if len(bank_transactions) > 10:
frappe.enqueue(
method="erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.start_auto_reconcile",
queue="long",
bank_transactions=bank_transactions,
from_date=from_date,
to_date=to_date,
filter_by_reference_date=filter_by_reference_date,
from_reference_date=from_reference_date,
to_reference_date=to_reference_date,
)
for bank_transaction_batch in create_batch(bank_transactions, 1000):
frappe.enqueue(
method="erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.start_auto_reconcile",
queue="long",
bank_transactions=bank_transaction_batch,
from_date=from_date,
to_date=to_date,
filter_by_reference_date=filter_by_reference_date,
from_reference_date=from_reference_date,
to_reference_date=to_reference_date,
)
frappe.msgprint(_("Auto Reconciliation has started in the background"))
else:
start_auto_reconcile(

View File

@@ -277,7 +277,7 @@ def get_import_status(docname):
@frappe.whitelist()
def get_import_logs(docname: str):
frappe.has_permission("Bank Statement Import")
frappe.has_permission("Bank Statement Import", throw=True)
return frappe.get_all(
"Data Import Log",

View File

@@ -1,6 +1,7 @@
import frappe
from frappe.utils import flt
from rapidfuzz import fuzz, process
from rapidfuzz.utils import default_process
class AutoMatchParty:
@@ -132,6 +133,7 @@ class AutoMatchbyPartyNameDescription:
query=self.get(field),
choices={row.get("name"): row.get("party_name") for row in names},
scorer=fuzz.token_set_ratio,
processor=default_process,
)
party_name, skip = self.process_fuzzy_result(result)

View File

@@ -45,7 +45,6 @@
"default": "ACC-BTN-.YYYY.-",
"fieldname": "naming_series",
"fieldtype": "Select",
"hidden": 1,
"label": "Series",
"no_copy": 1,
"options": "ACC-BTN-.YYYY.-",
@@ -117,7 +116,7 @@
{
"allow_on_submit": 1,
"fieldname": "reference_number",
"fieldtype": "Data",
"fieldtype": "Small Text",
"label": "Reference Number"
},
{
@@ -236,9 +235,10 @@
"fieldtype": "Column Break"
}
],
"grid_page_length": 50,
"is_submittable": 1,
"links": [],
"modified": "2023-11-18 18:32:47.203694",
"modified": "2025-09-26 17:06:29.207673",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bank Transaction",
@@ -287,9 +287,10 @@
"write": 1
}
],
"row_format": "Dynamic",
"sort_field": "date",
"sort_order": "DESC",
"states": [],
"title_field": "bank_account",
"track_changes": 1
}
}

View File

@@ -36,7 +36,7 @@ class BankTransaction(Document):
party: DF.DynamicLink | None
party_type: DF.Link | None
payment_entries: DF.Table[BankTransactionPayments]
reference_number: DF.Data | None
reference_number: DF.SmallText | None
status: DF.Literal["", "Pending", "Settled", "Unreconciled", "Reconciled", "Cancelled"]
transaction_id: DF.Data | None
transaction_type: DF.Data | None

View File

@@ -7,6 +7,9 @@ from frappe.utils import nowdate
from erpnext.accounts.doctype.bank_transaction.test_bank_transaction import create_bank_account
IBAN_1 = "DE02000000003716541159"
IBAN_2 = "DE02500105170137075030"
class TestAutoMatchParty(FrappeTestCase):
@classmethod
@@ -22,24 +25,24 @@ class TestAutoMatchParty(FrappeTestCase):
frappe.db.set_single_value("Accounts Settings", "enable_fuzzy_matching", 0)
def test_match_by_account_number(self):
create_supplier_for_match(account_no="000000003716541159")
create_supplier_for_match(account_no=IBAN_1[11:])
doc = create_bank_transaction(
withdrawal=1200,
transaction_id="562213b0ca1bf838dab8f2c6a39bbc3b",
account_no="000000003716541159",
iban="DE02000000003716541159",
account_no=IBAN_1[11:],
iban=IBAN_1,
)
self.assertEqual(doc.party_type, "Supplier")
self.assertEqual(doc.party, "John Doe & Co.")
def test_match_by_iban(self):
create_supplier_for_match(iban="DE02000000003716541159")
create_supplier_for_match(iban=IBAN_1)
doc = create_bank_transaction(
withdrawal=1200,
transaction_id="c5455a224602afaa51592a9d9250600d",
account_no="000000003716541159",
iban="DE02000000003716541159",
account_no=IBAN_1[11:],
iban=IBAN_1,
)
self.assertEqual(doc.party_type, "Supplier")
@@ -51,7 +54,7 @@ class TestAutoMatchParty(FrappeTestCase):
withdrawal=1200,
transaction_id="1f6f661f347ff7b1ea588665f473adb1",
party_name="Ella Jackson",
iban="DE04000000003716545346",
iban=IBAN_2,
)
self.assertEqual(doc.party_type, "Supplier")
self.assertEqual(doc.party, "Jackson Ella W.")

View File

@@ -12,6 +12,9 @@ from erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool
get_linked_payments,
reconcile_vouchers,
)
from erpnext.accounts.doctype.mode_of_payment.test_mode_of_payment import (
set_default_account_for_mode_of_payment,
)
from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
@@ -434,15 +437,13 @@ def add_vouchers(gl_account="_Test Bank - _TC"):
except frappe.DuplicateEntryError:
pass
mode_of_payment = frappe.get_doc({"doctype": "Mode of Payment", "name": "Cash"})
mode_of_payment = frappe.get_doc({"doctype": "Mode of Payment", "name": "Wire Transfer"})
if not frappe.db.get_value("Mode of Payment Account", {"company": "_Test Company", "parent": "Cash"}):
mode_of_payment.append("accounts", {"company": "_Test Company", "default_account": gl_account})
mode_of_payment.save()
set_default_account_for_mode_of_payment(mode_of_payment, "_Test Company", gl_account)
si = create_sales_invoice(customer="Fayva", qty=1, rate=109080, do_not_save=1)
si.is_pos = 1
si.append("payments", {"mode_of_payment": "Cash", "account": gl_account, "amount": 109080})
si.append("payments", {"mode_of_payment": "Wire Transfer", "amount": 109080})
si.insert()
si.submit()

View File

@@ -7,10 +7,10 @@
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"naming_series",
"budget_against",
"company",
"cost_center",
"naming_series",
"project",
"fiscal_year",
"column_break_3",
@@ -195,19 +195,19 @@
},
{
"fieldname": "naming_series",
"fieldtype": "Data",
"hidden": 1,
"fieldtype": "Select",
"label": "Series",
"no_copy": 1,
"options": "BUDGET-.YYYY.-",
"print_hide": 1,
"read_only": 1,
"reqd": 1,
"set_only_once": 1
}
],
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [],
"modified": "2022-10-10 22:14:36.361509",
"modified": "2025-06-16 15:57:13.114981",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Budget",
@@ -235,4 +235,4 @@
"sort_order": "DESC",
"states": [],
"track_changes": 1
}
}

View File

@@ -48,7 +48,7 @@ class Budget(Document):
cost_center: DF.Link | None
fiscal_year: DF.Link
monthly_distribution: DF.Link | None
naming_series: DF.Data | None
naming_series: DF.Literal["BUDGET-.YYYY.-"]
project: DF.Link | None
# end: auto-generated types
@@ -136,17 +136,16 @@ class Budget(Document):
):
self.applicable_on_booking_actual_expenses = 1
def before_naming(self):
self.naming_series = f"{{{frappe.scrub(self.budget_against)}}}./.{self.fiscal_year}/.###"
def validate_expense_against_budget(args, expense_amount=0):
args = frappe._dict(args)
if not frappe.get_all("Budget", limit=1):
return
if args.get("company") and not args.fiscal_year:
if not args.fiscal_year:
args.fiscal_year = get_fiscal_year(args.get("posting_date"), company=args.get("company"))[0]
if args.get("company"):
frappe.flags.exception_approver_role = frappe.get_cached_value(
"Company", args.get("company"), "exception_budget_approver_role"
)

View File

@@ -6,7 +6,11 @@ import unittest
import frappe
from frappe.utils import now_datetime, nowdate
from erpnext.accounts.doctype.budget.budget import BudgetError, get_actual_expense
from erpnext.accounts.doctype.budget.budget import (
BudgetError,
get_accumulated_monthly_budget,
get_actual_expense,
)
from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry
from erpnext.accounts.utils import get_fiscal_year
from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order
@@ -96,6 +100,10 @@ class TestBudget(unittest.TestCase):
frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
frappe.db.set_value("Budget", budget.name, "fiscal_year", fiscal_year)
accumulated_limit = get_accumulated_monthly_budget(
budget.monthly_distribution, nowdate(), budget.fiscal_year, budget.accounts[0].budget_amount
)
mr = frappe.get_doc(
{
"doctype": "Material Request",
@@ -109,7 +117,7 @@ class TestBudget(unittest.TestCase):
"uom": "_Test UOM",
"warehouse": "_Test Warehouse - _TC",
"schedule_date": nowdate(),
"rate": 100000,
"rate": accumulated_limit + 1,
"expense_account": "_Test Account Cost for Goods Sold - _TC",
"cost_center": "_Test Cost Center - _TC",
}

View File

@@ -462,9 +462,8 @@ def unset_existing_data(company):
"Sales Taxes and Charges Template",
"Purchase Taxes and Charges Template",
]:
frappe.db.sql(
f'''delete from `tab{doctype}` where `company`="%s"''' % (company) # nosec
)
dt = frappe.qb.DocType(doctype)
frappe.qb.from_(dt).where(dt.company == company).delete().run()
def set_default_accounts(company):

View File

@@ -4,6 +4,8 @@
import unittest
import frappe
from frappe.query_builder.functions import Sum
from frappe.tests.utils import change_settings
from frappe.utils import add_days, today
from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center
@@ -190,6 +192,31 @@ class TestCostCenterAllocation(unittest.TestCase):
coa2.cancel()
jv.cancel()
@change_settings("System Settings", {"rounding_method": "Commercial Rounding"})
def test_debit_credit_on_cost_center_allocation_for_commercial_rounding(self):
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
cca = create_cost_center_allocation(
"_Test Company",
"Main Cost Center 1 - _TC",
{"Sub Cost Center 2 - _TC": 50, "Sub Cost Center 3 - _TC": 50},
)
si = create_sales_invoice(rate=145.65, cost_center="Main Cost Center 1 - _TC")
gl_entry = frappe.qb.DocType("GL Entry")
gl_entries = (
frappe.qb.from_(gl_entry)
.select(Sum(gl_entry.credit).as_("cr"), Sum(gl_entry.debit).as_("dr"))
.where(gl_entry.voucher_type == "Sales Invoice")
.where(gl_entry.voucher_no == si.name)
).run(as_dict=1)
self.assertEqual(gl_entries[0].cr, gl_entries[0].dr)
si.cancel()
cca.cancel()
def create_cost_center_allocation(
company,

View File

@@ -11,6 +11,7 @@
-> Resolves dunning automatically
"""
import json
import frappe
@@ -156,40 +157,66 @@ class Dunning(AccountsController):
]
def resolve_dunning(doc, state):
"""
Check if all payments have been made and resolve dunning, if yes. Called
when a Payment Entry is submitted.
"""
for reference in doc.references:
# Consider partial and full payments:
# Submitting full payment: outstanding_amount will be 0
# Submitting 1st partial payment: outstanding_amount will be the pending installment
# Cancelling full payment: outstanding_amount will revert to total amount
# Cancelling last partial payment: outstanding_amount will revert to pending amount
submit_condition = reference.outstanding_amount < reference.total_amount
cancel_condition = reference.outstanding_amount <= reference.total_amount
def update_linked_dunnings(doc, previous_outstanding_amount):
if (
doc.doctype != "Sales Invoice"
or doc.is_return
or previous_outstanding_amount == doc.outstanding_amount
):
return
if reference.reference_doctype == "Sales Invoice" and (
submit_condition if doc.docstatus == 1 else cancel_condition
):
state = "Resolved" if doc.docstatus == 2 else "Unresolved"
dunnings = get_linked_dunnings_as_per_state(reference.reference_name, state)
to_resolve = doc.outstanding_amount < previous_outstanding_amount
state = "Unresolved" if to_resolve else "Resolved"
dunnings = get_linked_dunnings_as_per_state(doc.name, state)
if not dunnings:
return
for dunning in dunnings:
resolve = True
dunning = frappe.get_doc("Dunning", dunning.get("name"))
for overdue_payment in dunning.overdue_payments:
outstanding_inv = frappe.get_value(
"Sales Invoice", overdue_payment.sales_invoice, "outstanding_amount"
)
outstanding_ps = frappe.get_value(
"Payment Schedule", overdue_payment.payment_schedule, "outstanding"
)
resolve = False if (outstanding_ps > 0 and outstanding_inv > 0) else True
dunnings = [frappe.get_doc("Dunning", dunning.name) for dunning in dunnings]
invoices = set()
payment_schedule_ids = set()
dunning.status = "Resolved" if resolve else "Unresolved"
dunning.save()
for dunning in dunnings:
for overdue_payment in dunning.overdue_payments:
invoices.add(overdue_payment.sales_invoice)
if overdue_payment.payment_schedule:
payment_schedule_ids.add(overdue_payment.payment_schedule)
invoice_outstanding_amounts = dict(
frappe.get_all(
"Sales Invoice",
filters={"name": ["in", list(invoices)]},
fields=["name", "outstanding_amount"],
as_list=True,
)
)
ps_outstanding_amounts = (
dict(
frappe.get_all(
"Payment Schedule",
filters={"name": ["in", list(payment_schedule_ids)]},
fields=["name", "outstanding"],
as_list=True,
)
)
if payment_schedule_ids
else {}
)
for dunning in dunnings:
has_outstanding = False
for overdue_payment in dunning.overdue_payments:
invoice_outstanding = invoice_outstanding_amounts[overdue_payment.sales_invoice]
ps_outstanding = ps_outstanding_amounts.get(overdue_payment.payment_schedule, 0)
has_outstanding = invoice_outstanding > 0 and ps_outstanding > 0
if has_outstanding:
break
new_status = "Resolved" if not has_outstanding else "Unresolved"
if dunning.status != new_status:
dunning.status = new_status
dunning.save()
def get_linked_dunnings_as_per_state(sales_invoice, state):

View File

@@ -1,6 +1,9 @@
# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
import json
import frappe
from frappe.model import mapper
from frappe.tests.utils import FrappeTestCase
from frappe.utils import add_days, nowdate, today
@@ -68,6 +71,36 @@ class TestDunning(FrappeTestCase):
dunning.reload()
self.assertEqual(dunning.status, "Resolved")
def test_fetch_overdue_payments(self):
"""
Create SI with overdue payment. Check if overdue payment is fetched in Dunning.
"""
si1 = create_sales_invoice_against_cost_center(
posting_date=add_days(today(), -1 * 6),
qty=1,
rate=100,
)
si2 = create_sales_invoice_against_cost_center(
posting_date=add_days(today(), -1 * 6),
qty=1,
rate=300,
)
dunning = create_dunning_from_sales_invoice(si1.name)
dunning.overdue_payments = []
method = "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_dunning"
updated_dunning = mapper.map_docs(method, json.dumps([si1.name, si2.name]), dunning)
self.assertEqual(len(updated_dunning.overdue_payments), 2)
self.assertEqual(updated_dunning.overdue_payments[0].sales_invoice, si1.name)
self.assertEqual(updated_dunning.overdue_payments[0].outstanding, si1.outstanding_amount)
self.assertEqual(updated_dunning.overdue_payments[1].sales_invoice, si2.name)
self.assertEqual(updated_dunning.overdue_payments[1].outstanding, si2.outstanding_amount)
def test_dunning_and_payment_against_partially_due_invoice(self):
"""
Create SI with first installment overdue. Check impact of Dunning and Payment Entry.
@@ -106,6 +139,64 @@ class TestDunning(FrappeTestCase):
self.assertEqual(sales_invoice.status, "Overdue")
self.assertEqual(dunning.status, "Unresolved")
def test_dunning_resolution_from_credit_note(self):
"""
Test that dunning is resolved when a credit note is issued against the original invoice.
"""
sales_invoice = create_sales_invoice_against_cost_center(
posting_date=add_days(today(), -10), qty=1, rate=100
)
dunning = create_dunning_from_sales_invoice(sales_invoice.name)
dunning.submit()
self.assertEqual(dunning.status, "Unresolved")
credit_note = frappe.copy_doc(sales_invoice)
credit_note.is_return = 1
credit_note.return_against = sales_invoice.name
credit_note.update_outstanding_for_self = 0
for item in credit_note.items:
item.qty = -item.qty
credit_note.save()
credit_note.submit()
dunning.reload()
self.assertEqual(dunning.status, "Resolved")
credit_note.cancel()
dunning.reload()
self.assertEqual(dunning.status, "Unresolved")
def test_dunning_not_affected_by_standalone_credit_note(self):
"""
Test that dunning is NOT resolved when a credit note has update_outstanding_for_self checked.
"""
sales_invoice = create_sales_invoice_against_cost_center(
posting_date=add_days(today(), -10), qty=1, rate=100
)
dunning = create_dunning_from_sales_invoice(sales_invoice.name)
dunning.submit()
self.assertEqual(dunning.status, "Unresolved")
credit_note = frappe.copy_doc(sales_invoice)
credit_note.is_return = 1
credit_note.return_against = sales_invoice.name
credit_note.update_outstanding_for_self = 1
for item in credit_note.items:
item.qty = -item.qty
credit_note.save()
credit_note = frappe.get_doc("Sales Invoice", credit_note.name)
credit_note.submit()
dunning.reload()
self.assertEqual(dunning.status, "Unresolved")
def create_dunning(overdue_days, dunning_type_name=None):
posting_date = add_days(today(), -1 * overdue_days)

View File

@@ -134,7 +134,8 @@ class ExchangeRateRevaluation(Document):
accounts = self.get_accounts_data()
if accounts:
for acc in accounts:
self.append("accounts", acc)
if acc.get("gain_loss"):
self.append("accounts", acc)
@frappe.whitelist()
def get_accounts_data(self):

View File

@@ -7,7 +7,7 @@ from frappe import _
from frappe.model.document import Document
from frappe.model.meta import get_field_precision
from frappe.model.naming import set_name_from_naming_options
from frappe.utils import flt, fmt_money
from frappe.utils import create_batch, flt, fmt_money, now
import erpnext
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
@@ -131,18 +131,20 @@ class GLEntry(Document):
if not self.is_cancelled and not (self.party_type and self.party):
account_type = frappe.get_cached_value("Account", self.account, "account_type")
if account_type == "Receivable":
frappe.throw(
_("{0} {1}: Customer is required against Receivable account {2}").format(
self.voucher_type, self.voucher_no, self.account
if not frappe.flags.party_not_required: # skipping validation if party is not required
if account_type == "Receivable":
frappe.throw(
_("{0} {1}: Customer is required against Receivable account {2}").format(
self.voucher_type, self.voucher_no, self.account
)
)
)
elif account_type == "Payable":
frappe.throw(
_("{0} {1}: Supplier is required against Payable account {2}").format(
self.voucher_type, self.voucher_no, self.account
elif account_type == "Payable":
frappe.throw(
_("{0} {1}: Supplier is required against Payable account {2}").format(
self.voucher_type, self.voucher_no, self.account
)
)
)
# Zero value transaction is not allowed
if not (
@@ -251,7 +253,7 @@ class GLEntry(Document):
)
def validate_cost_center(self):
if not self.cost_center:
if not self.cost_center or self.is_cancelled:
return
is_group, company = frappe.get_cached_value("Cost Center", self.cost_center, ["is_group", "company"])
@@ -311,7 +313,7 @@ def validate_balance_type(account, adv_adj=False):
if balance_must_be:
balance = frappe.db.sql(
"""select sum(debit) - sum(credit)
from `tabGL Entry` where account = %s""",
from `tabGL Entry` where is_cancelled = 0 and account = %s""",
account,
)[0][0]
@@ -451,12 +453,20 @@ def rename_gle_sle_docs():
def rename_temporarily_named_docs(doctype):
"""Rename temporarily named docs using autoname options"""
docs_to_rename = frappe.get_all(doctype, {"to_rename": "1"}, order_by="creation", limit=50000)
for doc in docs_to_rename:
oldname = doc.name
set_name_from_naming_options(frappe.get_meta(doctype).autoname, doc)
newname = doc.name
frappe.db.sql(
f"UPDATE `tab{doctype}` SET name = %s, to_rename = 0 where name = %s",
(newname, oldname),
auto_commit=True,
)
autoname = frappe.get_meta(doctype).autoname
for batch in create_batch(docs_to_rename, 100):
for doc in batch:
oldname = doc.name
set_name_from_naming_options(autoname, doc)
newname = doc.name
frappe.db.sql(
f"UPDATE `tab{doctype}` SET name = %s, to_rename = 0, modified = %s where name = %s",
(newname, now(), oldname),
)
for hook_type in ("on_gle_rename", "on_sle_rename"):
for hook in frappe.get_hooks(hook_type):
frappe.call(hook, newname=newname, oldname=oldname)
frappe.db.commit()

View File

@@ -197,7 +197,7 @@ frappe.ui.form.on("Invoice Discounting", {
from_date: frm.doc.posting_date,
to_date: moment(frm.doc.modified).format("YYYY-MM-DD"),
company: frm.doc.company,
group_by: "Group by Voucher (Consolidated)",
categorize_by: "Categorize by Voucher (Consolidated)",
show_cancelled_entries: frm.doc.docstatus === 2,
};
frappe.set_route("query-report", "General Ledger");

View File

@@ -35,7 +35,7 @@ frappe.ui.form.on("Journal Entry", {
to_date: moment(frm.doc.modified).format("YYYY-MM-DD"),
company: frm.doc.company,
finance_book: frm.doc.finance_book,
group_by: "",
categorize_by: "",
show_cancelled_entries: frm.doc.docstatus === 2,
};
frappe.set_route("query-report", "General Ledger");
@@ -163,6 +163,7 @@ frappe.ui.form.on("Journal Entry", {
});
erpnext.accounts.dimensions.update_dimension(frm, frm.doctype);
erpnext.utils.set_letter_head(frm);
},
voucher_type: function (frm) {

View File

@@ -59,6 +59,7 @@
"addtional_info",
"mode_of_payment",
"payment_order",
"party_not_required",
"column_break3",
"is_opening",
"stock_entry",
@@ -543,6 +544,14 @@
"label": "Is System Generated",
"no_copy": 1,
"read_only": 1
},
{
"default": "0",
"fieldname": "party_not_required",
"fieldtype": "Check",
"hidden": 1,
"label": "Party Not Required",
"no_copy": 1
}
],
"icon": "fa fa-file-text",
@@ -557,7 +566,7 @@
"table_fieldname": "payment_entries"
}
],
"modified": "2024-07-18 15:32:29.413598",
"modified": "2025-09-29 13:05:46.982277",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Journal Entry",

View File

@@ -24,6 +24,7 @@ from erpnext.accounts.party import get_party_account
from erpnext.accounts.utils import (
cancel_exchange_gain_loss_journal,
get_account_currency,
get_advance_payment_doctypes,
get_balance_on,
get_stock_accounts,
get_stock_and_account_balance,
@@ -71,6 +72,7 @@ class JournalEntry(AccountsController):
multi_currency: DF.Check
naming_series: DF.Literal["ACC-JV-.YYYY.-"]
paid_loan: DF.Data | None
party_not_required: DF.Check
pay_to_recd_from: DF.Data | None
payment_order: DF.Link | None
posting_date: DF.Date
@@ -146,8 +148,7 @@ class JournalEntry(AccountsController):
if self.docstatus == 0:
self.apply_tax_withholding()
if not self.title:
if self.is_new() or not self.title:
self.title = self.get_title()
def validate_advance_accounts(self):
@@ -189,10 +190,8 @@ class JournalEntry(AccountsController):
def on_submit(self):
self.validate_cheque_info()
self.check_credit_limit()
self.make_gl_entries()
self.make_advance_payment_ledger_entries()
self.update_advance_paid()
self.check_credit_limit()
self.update_asset_value()
self.update_inter_company_jv()
self.update_invoice_discounting()
@@ -225,8 +224,6 @@ class JournalEntry(AccountsController):
"Advance Payment Ledger Entry",
)
self.make_gl_entries(1)
self.make_advance_payment_ledger_entries()
self.update_advance_paid()
self.unlink_advance_entry_reference()
self.unlink_asset_reference()
self.unlink_inter_company_jv()
@@ -237,24 +234,22 @@ class JournalEntry(AccountsController):
def get_title(self):
return self.pay_to_recd_from or self.accounts[0].account
def update_advance_paid(self):
advance_paid = frappe._dict()
for d in self.get("accounts"):
if d.is_advance:
if d.reference_type in frappe.get_hooks("advance_payment_doctypes"):
advance_paid.setdefault(d.reference_type, []).append(d.reference_name)
for voucher_type, order_list in advance_paid.items():
for voucher_no in list(set(order_list)):
frappe.get_doc(voucher_type, voucher_no).set_total_advance_paid()
def validate_inter_company_accounts(self):
if self.voucher_type == "Inter Company Journal Entry" and self.inter_company_journal_entry_reference:
doc = frappe.get_doc("Journal Entry", self.inter_company_journal_entry_reference)
doc = frappe.db.get_value(
"Journal Entry",
self.inter_company_journal_entry_reference,
["company", "total_debit", "total_credit"],
as_dict=True,
)
account_currency = frappe.get_cached_value("Company", self.company, "default_currency")
previous_account_currency = frappe.get_cached_value("Company", doc.company, "default_currency")
if account_currency == previous_account_currency:
if self.total_credit != doc.total_debit or self.total_debit != doc.total_credit:
credit_precision = self.precision("total_credit")
debit_precision = self.precision("total_debit")
if (flt(self.total_credit, credit_precision) != flt(doc.total_debit, debit_precision)) or (
flt(self.total_debit, debit_precision) != flt(doc.total_credit, credit_precision)
):
frappe.throw(_("Total Credit/ Debit Amount should be same as linked Journal Entry"))
def validate_depr_entry_voucher_type(self):
@@ -548,8 +543,11 @@ class JournalEntry(AccountsController):
def validate_party(self):
for d in self.get("accounts"):
account_type = frappe.get_cached_value("Account", d.account, "account_type")
if account_type in ["Receivable", "Payable"]:
if not (d.party_type and d.party):
if (
not (d.party_type and d.party) and not self.party_not_required
): # skipping validation if party_not_required is passed via payroll entry
frappe.throw(
_(
"Row {0}: Party Type and Party is required for Receivable / Payable account {1}"
@@ -558,6 +556,8 @@ class JournalEntry(AccountsController):
elif (
d.party_type
and frappe.db.get_value("Party Type", d.party_type, "account_type") != account_type
and d.party_type
!= "Employee" # making an excpetion for employee since they can be both payable and receivable
):
frappe.throw(
_("Row {0}: Account {1} and Party Type {2} have different account types").format(
@@ -1084,49 +1084,70 @@ class JournalEntry(AccountsController):
self.transaction_exchange_rate = row.exchange_rate
break
advance_doctypes = get_advance_payment_doctypes()
for d in self.get("accounts"):
if d.debit or d.credit or (self.voucher_type == "Exchange Gain Or Loss"):
r = [d.user_remark, self.remark]
r = [x for x in r if x]
remarks = "\n".join(r)
row = {
"account": d.account,
"party_type": d.party_type,
"due_date": self.due_date,
"party": d.party,
"against": d.against_account,
"debit": flt(d.debit, d.precision("debit")),
"credit": flt(d.credit, d.precision("credit")),
"account_currency": d.account_currency,
"debit_in_account_currency": flt(
d.debit_in_account_currency, d.precision("debit_in_account_currency")
),
"credit_in_account_currency": flt(
d.credit_in_account_currency, d.precision("credit_in_account_currency")
),
"transaction_currency": self.transaction_currency,
"transaction_exchange_rate": self.transaction_exchange_rate,
"debit_in_transaction_currency": flt(
d.debit_in_account_currency, d.precision("debit_in_account_currency")
)
if self.transaction_currency == d.account_currency
else flt(d.debit, d.precision("debit")) / self.transaction_exchange_rate,
"credit_in_transaction_currency": flt(
d.credit_in_account_currency, d.precision("credit_in_account_currency")
)
if self.transaction_currency == d.account_currency
else flt(d.credit, d.precision("credit")) / self.transaction_exchange_rate,
"against_voucher_type": d.reference_type,
"against_voucher": d.reference_name,
"remarks": remarks,
"voucher_detail_no": d.reference_detail_no,
"cost_center": d.cost_center,
"project": d.project,
"finance_book": self.finance_book,
"advance_voucher_type": d.advance_voucher_type,
"advance_voucher_no": d.advance_voucher_no,
}
if d.reference_type in advance_doctypes:
row.update(
{
"against_voucher_type": self.doctype,
"against_voucher": self.name,
"advance_voucher_type": d.reference_type,
"advance_voucher_no": d.reference_name,
}
)
# set flag to skip party validation
account_type = frappe.get_cached_value("Account", d.account, "account_type")
if account_type in ["Receivable", "Payable"] and self.party_not_required:
frappe.flags.party_not_required = True
gl_map.append(
self.get_gl_dict(
{
"account": d.account,
"party_type": d.party_type,
"due_date": self.due_date,
"party": d.party,
"against": d.against_account,
"debit": flt(d.debit, d.precision("debit")),
"credit": flt(d.credit, d.precision("credit")),
"account_currency": d.account_currency,
"debit_in_account_currency": flt(
d.debit_in_account_currency, d.precision("debit_in_account_currency")
),
"credit_in_account_currency": flt(
d.credit_in_account_currency, d.precision("credit_in_account_currency")
),
"transaction_currency": self.transaction_currency,
"transaction_exchange_rate": self.transaction_exchange_rate,
"debit_in_transaction_currency": flt(
d.debit_in_account_currency, d.precision("debit_in_account_currency")
)
if self.transaction_currency == d.account_currency
else flt(d.debit, d.precision("debit")) / self.transaction_exchange_rate,
"credit_in_transaction_currency": flt(
d.credit_in_account_currency, d.precision("credit_in_account_currency")
)
if self.transaction_currency == d.account_currency
else flt(d.credit, d.precision("credit")) / self.transaction_exchange_rate,
"against_voucher_type": d.reference_type,
"against_voucher": d.reference_name,
"remarks": remarks,
"voucher_detail_no": d.reference_detail_no,
"cost_center": d.cost_center,
"project": d.project,
"finance_book": self.finance_book,
},
row,
item=d,
)
)
@@ -1151,6 +1172,7 @@ class JournalEntry(AccountsController):
merge_entries=merge_entries,
update_outstanding=update_outstanding,
)
frappe.flags.party_not_required = False
if cancel:
cancel_exchange_gain_loss_journal(frappe._dict(doctype=self.doctype, name=self.name))

View File

@@ -11,6 +11,7 @@ from frappe.utils import flt, nowdate
from erpnext.accounts.doctype.account.test_account import get_inventory_account
from erpnext.accounts.doctype.journal_entry.journal_entry import StockAccountInvalidTransaction
from erpnext.exceptions import InvalidAccountCurrency
from erpnext.selling.doctype.customer.test_customer import make_customer, set_credit_limit
class TestJournalEntry(unittest.TestCase):
@@ -580,6 +581,27 @@ class TestJournalEntry(unittest.TestCase):
]
self.assertEqual(expected, actual)
def test_pay_to_recd_from(self):
jv = make_journal_entry("_Test Cash - _TC", "_Test Bank - _TC", 100, save=False)
jv.pay_to_recd_from = "_Test Receiver"
jv.save()
self.assertEqual(jv.pay_to_recd_from, "_Test Receiver")
jv.pay_to_recd_from = "_Test Receiver 2"
jv.save()
jv.submit()
self.assertEqual(jv.pay_to_recd_from, "_Test Receiver 2")
def test_credit_limit_for_customer(self):
customer = make_customer("_Test New Customer")
set_credit_limit("_Test New Customer", "_Test Company", 50)
jv = make_journal_entry(account1="Debtors - _TC", account2="_Test Cash - _TC", amount=100, save=False)
jv.accounts[0].party_type = "Customer"
jv.accounts[0].party = customer
jv.save()
self.assertRaises(frappe.ValidationError, jv.submit)
def make_journal_entry(
account1,

View File

@@ -32,6 +32,8 @@
"reference_name",
"reference_due_date",
"reference_detail_no",
"advance_voucher_type",
"advance_voucher_no",
"col_break3",
"is_advance",
"user_remark",
@@ -263,12 +265,28 @@
"label": "Reference Detail No",
"no_copy": 1,
"search_index": 1
},
{
"fieldname": "advance_voucher_type",
"fieldtype": "Link",
"label": "Advance Voucher Type",
"no_copy": 1,
"options": "DocType",
"read_only": 1
},
{
"fieldname": "advance_voucher_no",
"fieldtype": "Dynamic Link",
"label": "Advance Voucher No",
"no_copy": 1,
"options": "advance_voucher_type",
"read_only": 1
}
],
"idx": 1,
"istable": 1,
"links": [],
"modified": "2024-02-05 01:10:50.224840",
"modified": "2025-09-29 13:01:48.916517",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Journal Entry Account",
@@ -279,4 +297,4 @@
"sort_order": "DESC",
"states": [],
"track_changes": 1
}
}

View File

@@ -17,8 +17,9 @@ class JournalEntryAccount(Document):
account: DF.Link
account_currency: DF.Link | None
account_type: DF.Data | None
advance_voucher_no: DF.DynamicLink | None
advance_voucher_type: DF.Link | None
against_account: DF.Text | None
balance: DF.Currency
bank_account: DF.Link | None
cost_center: DF.Link | None
credit: DF.Currency
@@ -31,7 +32,6 @@ class JournalEntryAccount(Document):
parentfield: DF.Data
parenttype: DF.Data
party: DF.DynamicLink | None
party_balance: DF.Currency
party_type: DF.Link | None
project: DF.Link | None
reference_detail_no: DF.Data | None

View File

@@ -24,6 +24,7 @@
"accounting_dimensions_section",
"cost_center",
"dimension_col_break",
"project",
"help_section",
"loyalty_program_help"
],
@@ -143,6 +144,12 @@
{
"fieldname": "dimension_col_break",
"fieldtype": "Column Break"
},
{
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
"options": "Project"
}
],
"modified": "2019-05-26 09:11:46.120251",

View File

@@ -5,6 +5,7 @@
import frappe
from frappe import _
from frappe.model.document import Document
from frappe.query_builder.functions import Sum
from frappe.utils import flt, today
@@ -45,22 +46,30 @@ def get_loyalty_details(
if not expiry_date:
expiry_date = today()
condition = ""
if company:
condition = " and company=%s " % frappe.db.escape(company)
if not include_expired_entry:
condition += " and expiry_date>='%s' " % expiry_date
LoyaltyPointEntry = frappe.qb.DocType("Loyalty Point Entry")
loyalty_point_details = frappe.db.sql(
f"""select sum(loyalty_points) as loyalty_points,
sum(purchase_amount) as total_spent from `tabLoyalty Point Entry`
where customer=%s and loyalty_program=%s and posting_date <= %s
{condition}
group by customer""",
(customer, loyalty_program, expiry_date),
as_dict=1,
query = (
frappe.qb.from_(LoyaltyPointEntry)
.select(
Sum(LoyaltyPointEntry.loyalty_points).as_("loyalty_points"),
Sum(LoyaltyPointEntry.purchase_amount).as_("total_spent"),
)
.where(
(LoyaltyPointEntry.customer == customer)
& (LoyaltyPointEntry.loyalty_program == loyalty_program)
& (LoyaltyPointEntry.posting_date <= expiry_date)
)
.groupby(LoyaltyPointEntry.customer)
)
if company:
query = query.where(LoyaltyPointEntry.company == company)
if not include_expired_entry:
query = query.where(LoyaltyPointEntry.expiry_date >= expiry_date)
loyalty_point_details = query.run(as_dict=True)
if loyalty_point_details:
return loyalty_point_details[0]
else:
@@ -168,8 +177,9 @@ def validate_loyalty_points(ref_doc, points_to_redeem):
loyalty_amount = flt(points_to_redeem * loyalty_program_details.conversion_factor)
if loyalty_amount > ref_doc.rounded_total:
frappe.throw(_("You can't redeem Loyalty Points having more value than the Rounded Total."))
total_amount = ref_doc.grand_total if ref_doc.is_rounded_total_disabled() else ref_doc.rounded_total
if loyalty_amount > total_amount:
frappe.throw(_("You can't redeem Loyalty Points having more value than the Total Amount."))
if not ref_doc.loyalty_amount and ref_doc.loyalty_amount != loyalty_amount:
ref_doc.loyalty_amount = loyalty_amount

View File

@@ -3,8 +3,25 @@
import unittest
# test_records = frappe.get_test_records('Mode of Payment')
import frappe
class TestModeofPayment(unittest.TestCase):
pass
def set_default_account_for_mode_of_payment(mode_of_payment, company, account):
mode_of_payment.reload()
if frappe.db.exists(
"Mode of Payment Account", {"parent": mode_of_payment.mode_of_payment, "company": company}
):
frappe.db.set_value(
"Mode of Payment Account",
{"parent": mode_of_payment.mode_of_payment, "company": company},
"default_account",
account,
)
return
mode_of_payment.append("accounts", {"company": company, "default_account": account})
mode_of_payment.save()

View File

@@ -13,6 +13,7 @@
"accounting_dimensions_section",
"cost_center",
"dimension_col_break",
"project",
"section_break_4",
"invoices"
],
@@ -62,6 +63,12 @@
"label": "Cost Center",
"options": "Cost Center"
},
{
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
"options": "Project"
},
{
"collapsible": 1,
"fieldname": "accounting_dimensions_section",

View File

@@ -74,6 +74,6 @@ def create_party_link(primary_role, primary_party, secondary_party):
party_link.secondary_role = "Customer" if primary_role == "Supplier" else "Supplier"
party_link.secondary_party = secondary_party
party_link.save(ignore_permissions=True)
party_link.save()
return party_link

View File

@@ -273,6 +273,7 @@ frappe.ui.form.on("Payment Entry", {
frm.events.hide_unhide_fields(frm);
frm.events.set_dynamic_labels(frm);
erpnext.accounts.dimensions.update_dimension(frm, frm.doctype);
erpnext.utils.set_letter_head(frm);
},
contact_person: function (frm) {
@@ -411,7 +412,7 @@ frappe.ui.form.on("Payment Entry", {
from_date: frm.doc.posting_date,
to_date: moment(frm.doc.modified).format("YYYY-MM-DD"),
company: frm.doc.company,
group_by: "",
categorize_by: "",
show_cancelled_entries: frm.doc.docstatus === 2,
};
frappe.set_route("query-report", "General Ledger");
@@ -600,6 +601,7 @@ frappe.ui.form.on("Payment Entry", {
if (frm.doc.payment_type == "Pay") {
frm.events.paid_amount(frm);
}
frm.events.paid_from_account_currency(frm);
}
);
},
@@ -623,6 +625,7 @@ frappe.ui.form.on("Payment Entry", {
frm.events.received_amount(frm);
}
}
frm.events.paid_to_account_currency(frm);
}
);
},

View File

@@ -21,7 +21,6 @@
"party_name",
"book_advance_payments_in_separate_party_account",
"reconcile_on_advance_payment_date",
"advance_reconciliation_takes_effect_on",
"column_break_11",
"bank_account",
"party_bank_account",
@@ -203,14 +202,14 @@
"fieldtype": "Column Break"
},
{
"depends_on": "party",
"depends_on": "eval: doc.party && doc.party_type !== \"Employee\"",
"fieldname": "contact_person",
"fieldtype": "Link",
"label": "Contact",
"options": "Contact"
},
{
"depends_on": "contact_person",
"depends_on": "eval: (doc.contact_person || doc.party_type === \"Employee\") && doc.contact_email",
"fieldname": "contact_email",
"fieldtype": "Data",
"label": "Email",
@@ -229,6 +228,7 @@
"fieldname": "party_balance",
"fieldtype": "Currency",
"label": "Party Balance",
"no_copy": 1,
"print_hide": 1,
"read_only": 1
},
@@ -786,18 +786,9 @@
"options": "No\nYes",
"print_hide": 1,
"search_index": 1
},
{
"default": "Oldest Of Invoice Or Advance",
"fetch_from": "company.reconciliation_takes_effect_on",
"fieldname": "advance_reconciliation_takes_effect_on",
"fieldtype": "Select",
"hidden": 1,
"label": "Advance Reconciliation Takes Effect On",
"no_copy": 1,
"options": "Advance Payment Date\nOldest Of Invoice Or Advance\nReconciliation Date"
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [
@@ -809,7 +800,7 @@
"table_fieldname": "payment_entries"
}
],
"modified": "2025-01-31 17:27:28.555246",
"modified": "2025-05-15 18:01:04.013025",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Entry",
@@ -849,6 +840,7 @@
"write": 1
}
],
"row_format": "Dynamic",
"show_name_in_global_search": 1,
"sort_field": "modified",
"sort_order": "DESC",

View File

@@ -38,12 +38,18 @@ from erpnext.accounts.general_ledger import (
make_reverse_gl_entries,
process_gl_map,
)
from erpnext.accounts.party import complete_contact_details, get_party_account, set_contact_details
from erpnext.accounts.party import (
complete_contact_details,
get_default_contact,
get_party_account,
)
from erpnext.accounts.utils import (
cancel_exchange_gain_loss_journal,
get_account_currency,
get_advance_payment_doctypes,
get_balance_on,
get_outstanding_invoices,
get_reconciliation_effect_date,
)
from erpnext.controllers.accounts_controller import (
AccountsController,
@@ -111,12 +117,10 @@ class PaymentEntry(AccountsController):
def on_submit(self):
if self.difference_amount:
frappe.throw(_("Difference Amount must be zero"))
self.update_payment_requests()
self.update_payment_schedule()
self.make_gl_entries()
self.update_outstanding_amounts()
self.update_payment_schedule()
self.update_payment_requests()
self.make_advance_payment_ledger_entries()
self.update_advance_paid() # advance_paid_status depends on the payment request amount
self.set_status()
def validate_for_repost(self):
@@ -216,13 +220,11 @@ class PaymentEntry(AccountsController):
"Advance Payment Ledger Entry",
)
super().on_cancel()
self.update_payment_requests(cancel=True)
self.update_payment_schedule(cancel=1)
self.make_gl_entries(cancel=1)
self.update_outstanding_amounts()
self.delink_advance_entry_references()
self.update_payment_schedule(cancel=1)
self.update_payment_requests(cancel=True)
self.make_advance_payment_ledger_entries()
self.update_advance_paid() # advance_paid_status depends on the payment request amount
self.set_status()
def update_payment_requests(self, cancel=False):
@@ -441,12 +443,12 @@ class PaymentEntry(AccountsController):
self.party_name = frappe.db.get_value(self.party_type, self.party, "name")
if self.party:
if not self.contact_person:
set_contact_details(
self, party=frappe._dict({"name": self.party}), party_type=self.party_type
)
else:
complete_contact_details(self)
if self.party_type == "Employee":
self.contact_person = None
elif not self.contact_person:
self.contact_person = get_default_contact(self.party_type, self.party)
complete_contact_details(self)
if not self.party_balance:
self.party_balance = get_balance_on(
party_type=self.party_type, party=self.party, date=self.posting_date, company=self.company
@@ -457,15 +459,25 @@ class PaymentEntry(AccountsController):
self.set(self.party_account_field, party_account)
self.party_account = party_account
if self.paid_from and not (self.paid_from_account_currency or self.paid_from_account_balance):
if self.paid_from and (
not self.paid_from_account_currency
or not self.paid_from_account_balance
or not self.paid_from_account_type
):
acc = get_account_details(self.paid_from, self.posting_date, self.cost_center)
self.paid_from_account_currency = acc.account_currency
self.paid_from_account_balance = acc.account_balance
self.paid_from_account_type = acc.account_type
if self.paid_to and not (self.paid_to_account_currency or self.paid_to_account_balance):
if self.paid_to and (
not self.paid_to_account_currency
or not self.paid_to_account_balance
or not self.paid_to_account_type
):
acc = get_account_details(self.paid_to, self.posting_date, self.cost_center)
self.paid_to_account_currency = acc.account_currency
self.paid_to_account_balance = acc.account_balance
self.paid_to_account_type = acc.account_type
self.party_account_currency = (
self.paid_from_account_currency
@@ -554,7 +566,7 @@ class PaymentEntry(AccountsController):
def validate_mandatory(self):
for field in ("paid_amount", "received_amount", "source_exchange_rate", "target_exchange_rate"):
if not self.get(field):
frappe.throw(_("{0} is mandatory").format(self.meta.get_label(field)))
frappe.throw(_("{0} is mandatory").format(_(self.meta.get_label(field))))
def validate_reference_documents(self):
valid_reference_doctypes = self.get_valid_reference_doctypes()
@@ -1014,7 +1026,7 @@ class PaymentEntry(AccountsController):
def calculate_base_allocated_amount_for_reference(self, d) -> float:
base_allocated_amount = 0
if d.reference_doctype in frappe.get_hooks("advance_payment_doctypes"):
if d.reference_doctype in get_advance_payment_doctypes():
# When referencing Sales/Purchase Order, use the source/target exchange rate depending on payment type.
# This is so there are no Exchange Gain/Loss generated for such doctypes
@@ -1294,8 +1306,7 @@ class PaymentEntry(AccountsController):
if not self.party_account:
return
advance_payment_doctypes = frappe.get_hooks("advance_payment_doctypes")
advance_payment_doctypes = get_advance_payment_doctypes()
if self.payment_type == "Receive":
against_account = self.paid_to
else:
@@ -1351,23 +1362,27 @@ class PaymentEntry(AccountsController):
dr_or_cr + "_in_transaction_currency": d.allocated_amount
if self.transaction_currency == self.party_account_currency
else allocated_amount_in_company_currency / self.transaction_exchange_rate,
"advance_voucher_type": d.advance_voucher_type,
"advance_voucher_no": d.advance_voucher_no,
},
item=self,
)
)
if self.book_advance_payments_in_separate_party_account:
if d.reference_doctype in advance_payment_doctypes:
# Upon reconciliation, whole ledger will be reposted. So, reference to SO/PO is fine
gle.update(
{
"against_voucher_type": d.reference_doctype,
"against_voucher": d.reference_name,
}
)
else:
# Do not reference Invoices while Advance is in separate party account
gle.update({"against_voucher_type": self.doctype, "against_voucher": self.name})
if d.reference_doctype in advance_payment_doctypes:
# advance reference
gle.update(
{
"against_voucher_type": self.doctype,
"against_voucher": self.name,
"advance_voucher_type": d.reference_doctype,
"advance_voucher_no": d.reference_name,
}
)
elif self.book_advance_payments_in_separate_party_account:
# Do not reference Invoices while Advance is in separate party account
gle.update({"against_voucher_type": self.doctype, "against_voucher": self.name})
else:
gle.update(
{
@@ -1472,26 +1487,14 @@ class PaymentEntry(AccountsController):
"voucher_no": self.name,
"voucher_detail_no": invoice.name,
}
if invoice.reconcile_effect_on:
posting_date = invoice.reconcile_effect_on
else:
# For backwards compatibility
# Supporting reposting on payment entries reconciled before select field introduction
if self.advance_reconciliation_takes_effect_on == "Advance Payment Date":
posting_date = self.posting_date
elif self.advance_reconciliation_takes_effect_on == "Oldest Of Invoice Or Advance":
date_field = "posting_date"
if invoice.reference_doctype in ["Sales Order", "Purchase Order"]:
date_field = "transaction_date"
posting_date = frappe.db.get_value(
invoice.reference_doctype, invoice.reference_name, date_field
)
if getdate(posting_date) < getdate(self.posting_date):
posting_date = self.posting_date
elif self.advance_reconciliation_takes_effect_on == "Reconciliation Date":
posting_date = nowdate()
posting_date = get_reconciliation_effect_date(
invoice.reference_doctype, invoice.reference_name, self.company, self.posting_date
)
frappe.db.set_value("Payment Entry Reference", invoice.name, "reconcile_effect_on", posting_date)
dr_or_cr, account = self.get_dr_and_account_for_advances(invoice)
@@ -1509,6 +1512,8 @@ class PaymentEntry(AccountsController):
{
"against_voucher_type": invoice.reference_doctype,
"against_voucher": invoice.reference_name,
"advance_voucher_type": invoice.advance_voucher_type,
"advance_voucher_no": invoice.advance_voucher_no,
"posting_date": posting_date,
}
)
@@ -1533,6 +1538,8 @@ class PaymentEntry(AccountsController):
{
"against_voucher_type": "Payment Entry",
"against_voucher": self.name,
"advance_voucher_type": invoice.advance_voucher_type,
"advance_voucher_no": invoice.advance_voucher_no,
}
)
gle = self.get_gl_dict(
@@ -1681,14 +1688,6 @@ class PaymentEntry(AccountsController):
return flt(gl_dict.get(field, 0) / (conversion_rate or 1))
def update_advance_paid(self):
if self.payment_type in ("Receive", "Pay") and self.party:
for d in self.get("references"):
if d.allocated_amount and d.reference_doctype in frappe.get_hooks("advance_payment_doctypes"):
frappe.get_doc(
d.reference_doctype, d.reference_name, for_update=True
).set_total_advance_paid()
def on_recurring(self, reference_doc, auto_repeat_doc):
self.reference_no = reference_doc.name
self.reference_date = nowdate()
@@ -1980,7 +1979,7 @@ class PaymentEntry(AccountsController):
# Re allocate amount to those references which have PR set (Higher priority)
for ref in self.references:
if not ref.payment_request:
if not (ref.reference_doctype and ref.reference_name and ref.payment_request):
continue
# fetch outstanding_amount of `Reference` (Payment Term) and `Payment Request` to allocate new amount
@@ -2031,7 +2030,7 @@ class PaymentEntry(AccountsController):
)
# Re allocate amount to those references which have no PR (Lower priority)
for ref in self.references:
if ref.payment_request:
if ref.payment_request or not (ref.reference_doctype and ref.reference_name):
continue
key = (ref.reference_doctype, ref.reference_name, ref.get("payment_term"))
@@ -2347,7 +2346,7 @@ def get_outstanding_reference_documents(args, validate=False):
accounts = get_party_account(
args.get("party_type"), args.get("party"), args.get("company"), include_advance=True
)
advance_account = accounts[1] if len(accounts) >= 1 else None
advance_account = accounts[1] if len(accounts) > 1 else None
if party_account == advance_account:
party_account = accounts[0]
@@ -2927,6 +2926,8 @@ def get_payment_entry(
party_account_currency if payment_type == "Receive" else bank.account_currency
)
pe.paid_to_account_currency = party_account_currency if payment_type == "Pay" else bank.account_currency
pe.paid_from_account_type = frappe.db.get_value("Account", pe.paid_from, "account_type")
pe.paid_to_account_type = frappe.db.get_value("Account", pe.paid_to, "account_type")
pe.paid_amount = paid_amount
pe.received_amount = received_amount
pe.letter_head = doc.get("letter_head")
@@ -3286,26 +3287,25 @@ def set_paid_amount_and_received_amount(
if party_account_currency == bank.account_currency:
paid_amount = received_amount = abs(outstanding_amount)
else:
company_currency = frappe.get_cached_value("Company", doc.get("company"), "default_currency")
if payment_type == "Receive":
paid_amount = abs(outstanding_amount)
if bank_amount:
received_amount = bank_amount
else:
if bank and company_currency != bank.account_currency:
received_amount = paid_amount / doc.get("conversion_rate", 1)
else:
received_amount = paid_amount * doc.get("conversion_rate", 1)
# settings if it is for receive
paid_amount = abs(outstanding_amount)
if bank_amount:
received_amount = bank_amount
else:
received_amount = abs(outstanding_amount)
if bank_amount:
paid_amount = bank_amount
company_currency = frappe.get_cached_value("Company", doc.get("company"), "default_currency")
if bank and company_currency != bank.account_currency:
# doc currency can be different from bank currency
posting_date = doc.get("posting_date") or doc.get("transaction_date")
conversion_rate = get_exchange_rate(
bank.account_currency, party_account_currency, posting_date
)
received_amount = paid_amount / conversion_rate
else:
if bank and company_currency != bank.account_currency:
paid_amount = received_amount / doc.get("conversion_rate", 1)
else:
# if party account currency and bank currency is different then populate paid amount as well
paid_amount = received_amount * doc.get("conversion_rate", 1)
received_amount = paid_amount * doc.get("conversion_rate", 1)
# if payment type is pay, then paid amount and received amount are swapped
if payment_type == "Pay":
paid_amount, received_amount = received_amount, paid_amount
return paid_amount, received_amount

View File

@@ -49,8 +49,10 @@ class TestPaymentEntry(FrappeTestCase):
pe.insert()
pe.submit()
self.assertEqual(pe.paid_to_account_type, "Cash")
expected_gle = dict(
(d[0], d) for d in [["Debtors - _TC", 0, 1000, so.name], ["_Test Cash - _TC", 1000.0, 0, None]]
(d[0], d) for d in [["Debtors - _TC", 0, 1000, pe.name], ["_Test Cash - _TC", 1000.0, 0, None]]
)
self.validate_gl_entries(pe.name, expected_gle)
@@ -82,7 +84,7 @@ class TestPaymentEntry(FrappeTestCase):
expected_gle = dict(
(d[0], d)
for d in [["_Test Receivable USD - _TC", 0, 5500, so.name], [pe.paid_to, 5500.0, 0, None]]
for d in [["_Test Receivable USD - _TC", 0, 5500, pe.name], [pe.paid_to, 5500.0, 0, None]]
)
self.validate_gl_entries(pe.name, expected_gle)
@@ -560,6 +562,8 @@ class TestPaymentEntry(FrappeTestCase):
pe.insert()
pe.submit()
self.assertEqual(pe.paid_from_account_type, "Bank")
outstanding_amount, status = frappe.db.get_value(
"Purchase Invoice", pi.name, ["outstanding_amount", "status"]
)

View File

@@ -22,7 +22,9 @@
"exchange_gain_loss",
"account",
"payment_request",
"payment_request_outstanding"
"payment_request_outstanding",
"advance_voucher_type",
"advance_voucher_no"
],
"fields": [
{
@@ -151,12 +153,28 @@
"fieldtype": "Date",
"label": "Reconcile Effect On",
"read_only": 1
},
{
"columns": 2,
"fieldname": "advance_voucher_type",
"fieldtype": "Link",
"label": "Advance Voucher Type",
"options": "DocType",
"read_only": 1
},
{
"columns": 2,
"fieldname": "advance_voucher_no",
"fieldtype": "Dynamic Link",
"label": "Advance Voucher No",
"options": "advance_voucher_type",
"read_only": 1
}
],
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2025-01-13 15:56:18.895082",
"modified": "2025-07-25 04:32:11.040025",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Entry Reference",
@@ -167,4 +185,4 @@
"sort_order": "DESC",
"states": [],
"track_changes": 1
}
}

View File

@@ -16,6 +16,8 @@ class PaymentEntryReference(Document):
account: DF.Link | None
account_type: DF.Data | None
advance_voucher_no: DF.DynamicLink | None
advance_voucher_type: DF.Link | None
allocated_amount: DF.Float
bill_no: DF.Data | None
due_date: DF.Date | None
@@ -26,7 +28,6 @@ class PaymentEntryReference(Document):
parentfield: DF.Data
parenttype: DF.Data
payment_request: DF.Link | None
payment_request_outstanding: DF.Float
payment_term: DF.Link | None
payment_term_outstanding: DF.Float
payment_type: DF.Data | None

View File

@@ -8,4 +8,14 @@ frappe.ui.form.on("Payment Gateway Account", {
frm.set_df_property("payment_gateway", "read_only", 1);
}
},
setup(frm) {
frm.set_query("payment_account", function () {
return {
filters: {
company: frm.doc.company,
},
};
});
},
});

View File

@@ -6,6 +6,7 @@
"field_order": [
"payment_gateway",
"payment_channel",
"company",
"is_default",
"column_break_4",
"payment_account",
@@ -70,11 +71,21 @@
"fieldtype": "Select",
"label": "Payment Channel",
"options": "\nEmail\nPhone"
},
{
"fieldname": "company",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Company",
"options": "Company",
"print_hide": 1,
"remember_last_selected_value": 1,
"reqd": 1
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2020-09-20 13:30:27.722852",
"modified": "2025-07-14 16:49:55.210352",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Gateway Account",
@@ -95,4 +106,4 @@
],
"sort_field": "modified",
"sort_order": "DESC"
}
}

View File

@@ -15,6 +15,7 @@ class PaymentGatewayAccount(Document):
if TYPE_CHECKING:
from frappe.types import DF
company: DF.Link
currency: DF.ReadOnly | None
is_default: DF.Check
message: DF.SmallText | None
@@ -24,7 +25,8 @@ class PaymentGatewayAccount(Document):
# end: auto-generated types
def autoname(self):
self.name = self.payment_gateway + " - " + self.currency
abbr = frappe.db.get_value("Company", self.company, "abbr")
self.name = self.payment_gateway + " - " + self.currency + " - " + abbr
def validate(self):
self.currency = frappe.get_cached_value("Account", self.payment_account, "account_currency")
@@ -34,13 +36,15 @@ class PaymentGatewayAccount(Document):
def update_default_payment_gateway(self):
if self.is_default:
frappe.db.sql(
"""update `tabPayment Gateway Account` set is_default = 0
where is_default = 1 """
frappe.db.set_value(
"Payment Gateway Account",
{"is_default": 1, "name": ["!=", self.name], "company": self.company},
"is_default",
0,
)
def set_as_default_if_not_set(self):
if not frappe.db.get_value(
"Payment Gateway Account", {"is_default": 1, "name": ("!=", self.name)}, "name"
if not frappe.db.exists(
"Payment Gateway Account", {"is_default": 1, "name": ("!=", self.name), "company": self.company}
):
self.is_default = 1

View File

@@ -197,4 +197,4 @@
"sort_field": "modified",
"sort_order": "DESC",
"states": []
}
}

View File

@@ -28,6 +28,7 @@
"accounting_dimensions_section",
"cost_center",
"dimension_col_break",
"project",
"sec_break1",
"invoice_name",
"invoices",
@@ -193,6 +194,12 @@
"label": "Cost Center",
"options": "Cost Center"
},
{
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
"options": "Project"
},
{
"depends_on": "eval:doc.party",
"description": "Only 'Payment Entries' made against this advance account are supported.",

View File

@@ -5,6 +5,7 @@
import frappe
from frappe import _, msgprint, qb
from frappe.model.document import Document
from frappe.model.meta import get_field_precision
from frappe.query_builder import Criterion
from frappe.query_builder.custom import ConstantColumn
from frappe.utils import flt, fmt_money, get_link_to_form, getdate, nowdate, today
@@ -392,6 +393,12 @@ class PaymentReconciliation(Document):
inv.outstanding_amount = flt(entry.get("outstanding_amount"))
def get_difference_amount(self, payment_entry, invoice, allocated_amount):
allocated_amount_precision = get_field_precision(
frappe.get_meta("Payment Reconciliation Allocation").get_field("allocated_amount")
)
difference_amount_precision = get_field_precision(
frappe.get_meta("Payment Reconciliation Allocation").get_field("difference_amount")
)
difference_amount = 0
if frappe.get_cached_value(
"Account", self.receivable_payable_account, "account_currency"
@@ -399,8 +406,14 @@ class PaymentReconciliation(Document):
if invoice.get("exchange_rate") and payment_entry.get("exchange_rate", 1) != invoice.get(
"exchange_rate", 1
):
allocated_amount_in_ref_rate = payment_entry.get("exchange_rate", 1) * allocated_amount
allocated_amount_in_inv_rate = invoice.get("exchange_rate", 1) * allocated_amount
allocated_amount_in_ref_rate = flt(
payment_entry.get("exchange_rate", 1) * flt(allocated_amount, allocated_amount_precision),
difference_amount_precision,
)
allocated_amount_in_inv_rate = flt(
invoice.get("exchange_rate", 1) * flt(allocated_amount, allocated_amount_precision),
difference_amount_precision,
)
difference_amount = allocated_amount_in_ref_rate - allocated_amount_in_inv_rate
return difference_amount
@@ -576,6 +589,7 @@ class PaymentReconciliation(Document):
"difference_amount": flt(row.get("difference_amount")),
"difference_account": row.get("difference_account"),
"difference_posting_date": row.get("gain_loss_posting_date"),
"debit_or_credit_note_posting_date": row.get("debit_or_credit_note_posting_date"),
"cost_center": row.get("cost_center"),
}
)
@@ -589,7 +603,7 @@ class PaymentReconciliation(Document):
def check_mandatory_to_fetch(self):
for fieldname in ["company", "party_type", "party", "receivable_payable_account"]:
if not self.get(fieldname):
frappe.throw(_("Please select {0} first").format(self.meta.get_label(fieldname)))
frappe.throw(_("Please select {0} first").format(_(self.meta.get_label(fieldname))))
def validate_entries(self):
if not self.get("invoices"):
@@ -765,7 +779,7 @@ def reconcile_dr_cr_note(dr_cr_notes, company, active_dimensions=None):
{
"doctype": "Journal Entry",
"voucher_type": voucher_type,
"posting_date": today(),
"posting_date": inv.get("debit_or_credit_note_posting_date") or today(),
"company": company,
"multi_currency": 1 if inv.currency != company_currency else 0,
"accounts": [
@@ -826,7 +840,7 @@ def reconcile_dr_cr_note(dr_cr_notes, company, active_dimensions=None):
create_gain_loss_journal(
company,
today(),
inv.difference_posting_date,
inv.party_type,
inv.party,
inv.account,

View File

@@ -1714,6 +1714,67 @@ class TestPaymentReconciliation(FrappeTestCase):
)
self.assertEqual(len(pl_entries), 3)
def test_advance_payment_reconciliation_date_for_older_date(self):
old_settings = frappe.db.get_value(
"Company",
self.company,
[
"reconciliation_takes_effect_on",
"default_advance_paid_account",
"book_advance_payments_in_separate_party_account",
],
as_dict=True,
)
frappe.db.set_value(
"Company",
self.company,
{
"book_advance_payments_in_separate_party_account": 1,
"default_advance_paid_account": self.advance_payable_account,
"reconciliation_takes_effect_on": "Oldest Of Invoice Or Advance",
},
)
self.supplier = "_Test Supplier"
pi1 = self.create_purchase_invoice(qty=10, rate=100)
po = self.create_purchase_order(qty=10, rate=100)
pay = get_payment_entry(po.doctype, po.name)
pay.paid_amount = 1000
pay.save().submit()
pr = frappe.new_doc("Payment Reconciliation")
pr.company = self.company
pr.party_type = "Supplier"
pr.party = self.supplier
pr.receivable_payable_account = get_party_account(pr.party_type, pr.party, pr.company)
pr.default_advance_account = self.advance_payable_account
pr.get_unreconciled_entries()
invoices = [x.as_dict() for x in pr.invoices]
payments = [x.as_dict() for x in pr.payments]
pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments}))
pr.allocation[0].allocated_amount = 100
pr.reconcile()
pay.reload()
self.assertEqual(getdate(pay.references[0].reconcile_effect_on), getdate(pi1.posting_date))
# test setting of date if not available
frappe.db.set_value("Payment Entry Reference", pay.references[1].name, "reconcile_effect_on", None)
pay.reload()
pay.cancel()
pay.reload()
pi1.reload()
po.reload()
self.assertEqual(getdate(pay.references[0].reconcile_effect_on), getdate(pi1.posting_date))
pi1.cancel()
po.cancel()
frappe.db.set_value("Company", self.company, old_settings)
def test_advance_payment_reconciliation_against_journal_for_customer(self):
frappe.db.set_value(
"Company",
@@ -2145,6 +2206,136 @@ class TestPaymentReconciliation(FrappeTestCase):
self.assertEqual(len(pr.get("payments")), 0)
self.assertEqual(pr.get("invoices")[0].get("outstanding_amount"), 200)
def test_partial_advance_payment_with_closed_fiscal_year(self):
"""
Test Advance Payment partial reconciliation before period closing and partial after period closing
"""
default_settings = frappe.db.get_value(
"Company",
self.company,
[
"book_advance_payments_in_separate_party_account",
"default_advance_paid_account",
"reconciliation_takes_effect_on",
],
as_dict=True,
)
first_fy_start_date = frappe.db.get_value("Fiscal Year", {"disabled": 0}, "min(year_start_date)")
prev_fy_start_date = add_years(first_fy_start_date, -1)
prev_fy_end_date = add_days(first_fy_start_date, -1)
create_fiscal_year(
company=self.company, year_start_date=prev_fy_start_date, year_end_date=prev_fy_end_date
)
frappe.db.set_value(
"Company",
self.company,
{
"book_advance_payments_in_separate_party_account": 1,
"default_advance_paid_account": self.advance_payable_account,
"reconciliation_takes_effect_on": "Oldest Of Invoice Or Advance",
},
)
self.supplier = "_Test Supplier"
# Create advance payment of 1000 (previous FY)
pe = self.create_payment_entry(amount=1000, posting_date=prev_fy_start_date)
pe.party_type = "Supplier"
pe.party = self.supplier
pe.payment_type = "Pay"
pe.paid_from = self.cash
pe.paid_to = self.advance_payable_account
pe.save().submit()
# Create purchase invoice of 600 (previous FY)
pi1 = self.create_purchase_invoice(qty=1, rate=600, do_not_submit=True)
pi1.posting_date = prev_fy_start_date
pi1.set_posting_time = 1
pi1.supplier = self.supplier
pi1.credit_to = self.creditors
pi1.save().submit()
# Reconcile advance payment
pr = self.create_payment_reconciliation(party_is_customer=False)
pr.party = self.supplier
pr.receivable_payable_account = self.creditors
pr.default_advance_account = self.advance_payable_account
pr.from_invoice_date = pr.to_invoice_date = pi1.posting_date
pr.from_payment_date = pr.to_payment_date = pe.posting_date
pr.get_unreconciled_entries()
invoices = [x.as_dict() for x in pr.invoices if x.invoice_number == pi1.name]
payments = [x.as_dict() for x in pr.payments if x.reference_name == pe.name]
pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments}))
pr.reconcile()
# Verify partial reconciliation
pe.reload()
pi1.reload()
self.assertEqual(len(pe.references), 1)
self.assertEqual(pe.references[0].allocated_amount, 600)
self.assertEqual(flt(pe.unallocated_amount), 400)
self.assertEqual(pi1.outstanding_amount, 0)
self.assertEqual(pi1.status, "Paid")
# Close accounting period for March (previous FY)
pcv = make_period_closing_voucher(
company=self.company, cost_center=self.cost_center, posting_date=prev_fy_end_date
)
pcv.reload()
self.assertEqual(pcv.gle_processing_status, "Completed")
# Change reconciliation setting to "Reconciliation Date"
frappe.db.set_value(
"Company",
self.company,
"reconciliation_takes_effect_on",
"Reconciliation Date",
)
# Create new purchase invoice for 400 in new fiscal year
pi2 = self.create_purchase_invoice(qty=1, rate=400, do_not_submit=True)
pi2.posting_date = today()
pi2.set_posting_time = 1
pi2.supplier = self.supplier
pi2.currency = "INR"
pi2.credit_to = self.creditors
pi2.save()
pi2.submit()
# Allocate 600 from advance payment to purchase invoice
pr = self.create_payment_reconciliation(party_is_customer=False)
pr.party = self.supplier
pr.receivable_payable_account = self.creditors
pr.default_advance_account = self.advance_payable_account
pr.from_invoice_date = pr.to_invoice_date = pi2.posting_date
pr.from_payment_date = pr.to_payment_date = pe.posting_date
pr.get_unreconciled_entries()
invoices = [x.as_dict() for x in pr.invoices if x.invoice_number == pi2.name]
payments = [x.as_dict() for x in pr.payments if x.reference_name == pe.name]
pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments}))
pr.reconcile()
pe.reload()
pi2.reload()
# Assert advance payment is fully allocated
self.assertEqual(len(pe.references), 2)
self.assertEqual(flt(pe.unallocated_amount), 0)
# Assert new invoice is fully paid
self.assertEqual(pi2.outstanding_amount, 0)
self.assertEqual(pi2.status, "Paid")
# Verify reconciliation dates are correct based on company setting
self.assertEqual(getdate(pe.references[0].reconcile_effect_on), getdate(pi1.posting_date))
self.assertEqual(getdate(pe.references[1].reconcile_effect_on), getdate(pi2.posting_date))
frappe.db.set_value("Company", self.company, default_settings)
def make_customer(customer_name, currency=None):
if not frappe.db.exists("Customer", customer_name):

View File

@@ -20,6 +20,7 @@
"section_break_5",
"difference_amount",
"gain_loss_posting_date",
"debit_or_credit_note_posting_date",
"column_break_7",
"difference_account",
"exchange_rate",
@@ -168,12 +169,17 @@
{
"fieldname": "dimension_col_break",
"fieldtype": "Column Break"
},
{
"fieldname": "debit_or_credit_note_posting_date",
"fieldtype": "Date",
"label": "Debit / Credit Note Posting Date"
}
],
"is_virtual": 1,
"istable": 1,
"links": [],
"modified": "2023-12-14 13:38:26.104150",
"modified": "2025-08-20 19:12:50.406769",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Reconciliation Allocation",
@@ -183,4 +189,4 @@
"sort_order": "DESC",
"states": [],
"track_changes": 1
}
}

View File

@@ -18,6 +18,7 @@ class PaymentReconciliationAllocation(Document):
amount: DF.Currency
cost_center: DF.Link | None
currency: DF.Link | None
debit_or_credit_note_posting_date: DF.Date | None
difference_account: DF.Link | None
difference_amount: DF.Currency
exchange_rate: DF.Float

View File

@@ -9,6 +9,14 @@ frappe.ui.form.on("Payment Request", {
query: "erpnext.setup.doctype.party_type.party_type.get_party_type",
};
});
frm.set_query("payment_gateway_account", function () {
return {
filters: {
company: frm.doc.company,
},
};
});
},
});

View File

@@ -127,7 +127,13 @@ class PaymentRequest(Document):
existing_payment_request_amount = flt(get_existing_payment_request_amount(ref_doc))
if existing_payment_request_amount + flt(self.grand_total) > ref_amount:
if (
flt(
existing_payment_request_amount + flt(self.grand_total, self.precision("grand_total")),
get_currency_precision(),
)
> ref_amount
):
frappe.throw(
_("Total Payment Request amount cannot be greater than {0} amount").format(
self.reference_doctype
@@ -539,7 +545,9 @@ def make_payment_request(**args):
if args.dt not in ALLOWED_DOCTYPES_FOR_PAYMENT_REQUEST:
frappe.throw(_("Payment Requests cannot be created against: {0}").format(frappe.bold(args.dt)))
ref_doc = frappe.get_doc(args.dt, args.dn)
ref_doc = args.ref_doc or frappe.get_doc(args.dt, args.dn)
if not args.get("company"):
args.company = ref_doc.company
gateway_account = get_gateway_details(args) or frappe._dict()
grand_total = get_amount(ref_doc, gateway_account.get("payment_account"))
@@ -670,7 +678,12 @@ def get_amount(ref_doc, payment_account=None):
dt = ref_doc.doctype
if dt in ["Sales Order", "Purchase Order"]:
grand_total = (flt(ref_doc.rounded_total) or flt(ref_doc.grand_total)) - ref_doc.advance_paid
advance_amount = flt(ref_doc.advance_paid)
if ref_doc.party_account_currency != ref_doc.currency:
advance_amount = flt(flt(ref_doc.advance_paid) / ref_doc.conversion_rate)
grand_total = (flt(ref_doc.rounded_total) or flt(ref_doc.grand_total)) - advance_amount
elif dt in ["Sales Invoice", "Purchase Invoice"]:
if (
dt == "Sales Invoice"
@@ -777,7 +790,7 @@ def get_gateway_details(args): # nosemgrep
"""
Return gateway and payment account of default payment gateway
"""
gateway_account = args.get("payment_gateway_account", {"is_default": 1})
gateway_account = args.get("payment_gateway_account", {"is_default": 1, "company": args.company})
if gateway_account:
return get_payment_gateway_account(gateway_account)
@@ -824,8 +837,7 @@ def update_payment_requests_as_per_pe_references(references=None, cancel=False):
if not references:
return
precision = references[0].precision("allocated_amount")
precision = frappe.get_precision("Payment Entry Reference", "allocated_amount")
referenced_payment_requests = frappe.get_all(
"Payment Request",
filters={"name": ["in", {row.payment_request for row in references if row.payment_request}]},

View File

@@ -28,12 +28,14 @@ payment_method = [
"payment_gateway": "_Test Gateway",
"payment_account": "_Test Bank - _TC",
"currency": "INR",
"company": "_Test Company",
},
{
"doctype": "Payment Gateway Account",
"payment_gateway": "_Test Gateway",
"payment_account": "_Test Bank USD - _TC",
"currency": "USD",
"company": "_Test Company",
},
]
@@ -46,7 +48,11 @@ class TestPaymentRequest(FrappeTestCase):
for method in payment_method:
if not frappe.db.get_value(
"Payment Gateway Account",
{"payment_gateway": method["payment_gateway"], "currency": method["currency"]},
{
"payment_gateway": method["payment_gateway"],
"currency": method["currency"],
"company": method["company"],
},
"name",
):
frappe.get_doc(method).insert(ignore_permissions=True)
@@ -60,7 +66,7 @@ class TestPaymentRequest(FrappeTestCase):
dt="Sales Order",
dn=so_inr.name,
recipient_id="saurabh@erpnext.com",
payment_gateway_account="_Test Gateway - INR",
payment_gateway_account="_Test Gateway - INR - _TC",
)
self.assertEqual(pr.reference_doctype, "Sales Order")
@@ -74,7 +80,7 @@ class TestPaymentRequest(FrappeTestCase):
dt="Sales Invoice",
dn=si_usd.name,
recipient_id="saurabh@erpnext.com",
payment_gateway_account="_Test Gateway - USD",
payment_gateway_account="_Test Gateway - USD - _TC",
)
self.assertEqual(pr.reference_doctype, "Sales Invoice")
@@ -95,7 +101,7 @@ class TestPaymentRequest(FrappeTestCase):
party="_Test Supplier USD",
recipient_id="user@example.com",
mute_email=1,
payment_gateway_account="_Test Gateway - USD",
payment_gateway_account="_Test Gateway - USD - _TC",
submit_doc=1,
return_doc=1,
)
@@ -119,7 +125,7 @@ class TestPaymentRequest(FrappeTestCase):
dn=purchase_invoice.name,
recipient_id="user@example.com",
mute_email=1,
payment_gateway_account="_Test Gateway - USD",
payment_gateway_account="_Test Gateway - USD - _TC",
return_doc=1,
)
@@ -138,7 +144,7 @@ class TestPaymentRequest(FrappeTestCase):
dn=purchase_invoice.name,
recipient_id="user@example.com",
mute_email=1,
payment_gateway_account="_Test Gateway - USD",
payment_gateway_account="_Test Gateway - USD - _TC",
return_doc=1,
)
@@ -162,7 +168,7 @@ class TestPaymentRequest(FrappeTestCase):
dn=so_inr.name,
recipient_id="saurabh@erpnext.com",
mute_email=1,
payment_gateway_account="_Test Gateway - INR",
payment_gateway_account="_Test Gateway - INR - _TC",
submit_doc=1,
return_doc=1,
)
@@ -184,7 +190,7 @@ class TestPaymentRequest(FrappeTestCase):
dn=si_usd.name,
recipient_id="saurabh@erpnext.com",
mute_email=1,
payment_gateway_account="_Test Gateway - USD",
payment_gateway_account="_Test Gateway - USD - _TC",
submit_doc=1,
return_doc=1,
)
@@ -228,7 +234,7 @@ class TestPaymentRequest(FrappeTestCase):
dn=si_usd.name,
recipient_id="saurabh@erpnext.com",
mute_email=1,
payment_gateway_account="_Test Gateway - USD",
payment_gateway_account="_Test Gateway - USD - _TC",
submit_doc=1,
return_doc=1,
)
@@ -328,7 +334,7 @@ class TestPaymentRequest(FrappeTestCase):
self.assertEqual(pe.paid_amount, 800) # paid amount set from pr's outstanding amount
self.assertEqual(pe.references[0].allocated_amount, 800)
self.assertEqual(pe.references[0].outstanding_amount, 800) # for Orders it is not zero
self.assertEqual(pe.references[0].outstanding_amount, 0) # Also for orders it will zero
self.assertEqual(pe.references[0].payment_request, pr.name)
so.load_from_db()
@@ -630,29 +636,58 @@ class TestPaymentRequest(FrappeTestCase):
pr = make_payment_request(dt="Sales Invoice", dn=si.name, mute_email=1)
self.assertEqual(pr.grand_total, si.outstanding_amount)
def test_partial_paid_invoice_with_submitted_payment_entry(self):
pi = make_purchase_invoice(currency="INR", qty=1, rate=5000)
pi.save()
pi.submit()
def test_partial_paid_invoice_with_submitted_payment_entry(self):
pi = make_purchase_invoice(currency="INR", qty=1, rate=5000)
pi.save()
pi.submit()
pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC")
pe.reference_no = "PURINV0001"
pe.reference_date = frappe.utils.nowdate()
pe.paid_amount = 2500
pe.references[0].allocated_amount = 2500
pe.save()
pe.submit()
pe.cancel()
pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC")
pe.reference_no = "PURINV0001"
pe.reference_date = frappe.utils.nowdate()
pe.paid_amount = 2500
pe.references[0].allocated_amount = 2500
pe.save()
pe.submit()
pe.cancel()
pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC")
pe.reference_no = "PURINV0002"
pe.reference_date = frappe.utils.nowdate()
pe.paid_amount = 2500
pe.references[0].allocated_amount = 2500
pe.save()
pe.submit()
pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC")
pe.reference_no = "PURINV0002"
pe.reference_date = frappe.utils.nowdate()
pe.paid_amount = 2500
pe.references[0].allocated_amount = 2500
pe.save()
pe.submit()
pi.load_from_db()
pr = make_payment_request(dt="Purchase Invoice", dn=pi.name, mute_email=1)
self.assertEqual(pr.grand_total, pi.outstanding_amount)
pi.load_from_db()
pr = make_payment_request(dt="Purchase Invoice", dn=pi.name, mute_email=1)
self.assertEqual(pr.grand_total, pi.outstanding_amount)
def test_payment_request_on_unreconcile(self):
pi = make_purchase_invoice(currency="INR", qty=1, rate=500)
pi.submit()
pr = make_payment_request(
dt=pi.doctype,
dn=pi.name,
mute_email=1,
submit_doc=True,
return_doc=True,
)
self.assertEqual(pr.grand_total, pi.outstanding_amount)
pe = pr.create_payment_entry()
unreconcile = frappe.get_doc(
{
"doctype": "Unreconcile Payment",
"company": pe.company,
"voucher_type": pe.doctype,
"voucher_no": pe.name,
}
)
unreconcile.add_references()
unreconcile.submit()
pi.load_from_db()
pr.load_from_db()
self.assertEqual(pr.grand_total, pi.outstanding_amount)

View File

@@ -10,14 +10,19 @@
"description",
"section_break_4",
"due_date",
"invoice_portion",
"mode_of_payment",
"column_break_5",
"invoice_portion",
"due_date_based_on",
"credit_days",
"credit_months",
"section_break_6",
"discount_type",
"discount_date",
"column_break_9",
"discount",
"discount_type",
"column_break_9",
"discount_validity_based_on",
"discount_validity",
"section_break_9",
"payment_amount",
"outstanding",
@@ -172,12 +177,50 @@
"label": "Paid Amount (Company Currency)",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"fieldname": "due_date_based_on",
"fieldtype": "Select",
"label": "Due Date Based On",
"options": "\nDay(s) after invoice date\nDay(s) after the end of the invoice month\nMonth(s) after the end of the invoice month",
"read_only": 1
},
{
"depends_on": "eval:in_list(['Day(s) after invoice date', 'Day(s) after the end of the invoice month'], doc.due_date_based_on)",
"fieldname": "credit_days",
"fieldtype": "Int",
"label": "Credit Days",
"non_negative": 1,
"read_only": 1
},
{
"depends_on": "eval:doc.due_date_based_on=='Month(s) after the end of the invoice month'",
"fieldname": "credit_months",
"fieldtype": "Int",
"label": "Credit Months",
"non_negative": 1,
"read_only": 1
},
{
"depends_on": "discount",
"fieldname": "discount_validity_based_on",
"fieldtype": "Select",
"label": "Discount Validity Based On",
"options": "\nDay(s) after invoice date\nDay(s) after the end of the invoice month\nMonth(s) after the end of the invoice month",
"read_only": 1
},
{
"depends_on": "discount_validity_based_on",
"fieldname": "discount_validity",
"fieldtype": "Int",
"label": "Discount Validity",
"read_only": 1
}
],
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2025-03-11 11:06:51.792982",
"modified": "2025-07-31 08:38:25.820701",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Schedule",
@@ -189,4 +232,4 @@
"sort_order": "DESC",
"states": [],
"track_changes": 1
}
}

View File

@@ -17,12 +17,27 @@ class PaymentSchedule(Document):
base_outstanding: DF.Currency
base_paid_amount: DF.Currency
base_payment_amount: DF.Currency
credit_days: DF.Int
credit_months: DF.Int
description: DF.SmallText | None
discount: DF.Float
discount_date: DF.Date | None
discount_type: DF.Literal["Percentage", "Amount"]
discount_validity: DF.Int
discount_validity_based_on: DF.Literal[
"",
"Day(s) after invoice date",
"Day(s) after the end of the invoice month",
"Month(s) after the end of the invoice month",
]
discounted_amount: DF.Currency
due_date: DF.Date
due_date_based_on: DF.Literal[
"",
"Day(s) after invoice date",
"Day(s) after the end of the invoice month",
"Month(s) after the end of the invoice month",
]
invoice_portion: DF.Percent
mode_of_payment: DF.Link | None
outstanding: DF.Currency

View File

@@ -161,4 +161,4 @@
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}
}

View File

@@ -0,0 +1,8 @@
// Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
// frappe.ui.form.on("Pegged Currencies", {
// refresh(frm) {
// },
// });

View File

@@ -0,0 +1,47 @@
{
"actions": [],
"allow_rename": 1,
"creation": "2025-05-30 11:47:03.670913",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
"pegged_currencies_item_section",
"pegged_currency_item"
],
"fields": [
{
"fieldname": "pegged_currencies_item_section",
"fieldtype": "Section Break"
},
{
"fieldname": "pegged_currency_item",
"fieldtype": "Table",
"options": "Pegged Currency Details"
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2025-06-02 11:46:31.936714",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Pegged Currencies",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "DESC",
"states": []
}

View File

@@ -0,0 +1,22 @@
# Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class PeggedCurrencies(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.pegged_currencies.pegged_currencies import PeggedCurrencies
pegged_currency_item: DF.Table[PeggedCurrencies]
# end: auto-generated types
pass

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
# import frappe
from frappe.tests.utils import FrappeTestCase
class TestPeggedCurrencies(FrappeTestCase):
pass

View File

@@ -0,0 +1,49 @@
{
"actions": [],
"allow_rename": 1,
"creation": "2025-05-30 11:59:28.219277",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"source_currency",
"pegged_against",
"pegged_exchange_rate"
],
"fields": [
{
"fieldname": "source_currency",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Currency",
"options": "Currency"
},
{
"fieldname": "pegged_exchange_rate",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Exchange Rate"
},
{
"fieldname": "pegged_against",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Pegged Against",
"options": "Currency"
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2025-06-17 14:11:16.521193",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Pegged Currency Details",
"owner": "Administrator",
"permissions": [],
"row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "DESC",
"states": []
}

View File

@@ -0,0 +1,25 @@
# Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class PeggedCurrencyDetails(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
pegged_against: DF.Link | None
pegged_exchange_rate: DF.Data | None
source_currency: DF.Link | None
# end: auto-generated types
pass

View File

@@ -47,7 +47,7 @@ frappe.ui.form.on("Period Closing Voucher", {
from_date: frm.doc.posting_date,
to_date: moment(frm.doc.modified).format("YYYY-MM-DD"),
company: frm.doc.company,
group_by: "",
categorize_by: "",
show_cancelled_entries: frm.doc.docstatus === 2,
};
frappe.set_route("query-report", "General Ledger");

View File

@@ -75,6 +75,17 @@ class PeriodClosingVoucher(AccountsController):
return
previous_fiscal_year_start_date = previous_fiscal_year[0][1]
previous_fiscal_year_closed = frappe.db.exists(
"Period Closing Voucher",
{
"period_end_date": ("between", [previous_fiscal_year_start_date, last_year_closing]),
"docstatus": 1,
"company": self.company,
},
)
if previous_fiscal_year_closed:
return
gle_exists_in_previous_year = frappe.db.exists(
"GL Entry",
{
@@ -86,16 +97,7 @@ class PeriodClosingVoucher(AccountsController):
if not gle_exists_in_previous_year:
return
previous_fiscal_year_closed = frappe.db.exists(
"Period Closing Voucher",
{
"period_end_date": ("between", [previous_fiscal_year_start_date, last_year_closing]),
"docstatus": 1,
"company": self.company,
},
)
if not previous_fiscal_year_closed:
frappe.throw(_("Previous Year is not closed, please close it first"))
frappe.throw(_("Previous Year is not closed, please close it first"))
def block_if_future_closing_voucher_exists(self):
future_closing_voucher = self.get_future_closing_voucher()
@@ -133,7 +135,12 @@ class PeriodClosingVoucher(AccountsController):
self.make_gl_entries()
def on_cancel(self):
self.ignore_linked_doctypes = ("GL Entry", "Stock Ledger Entry", "Payment Ledger Entry")
self.ignore_linked_doctypes = (
"GL Entry",
"Stock Ledger Entry",
"Payment Ledger Entry",
"Account Closing Balance",
)
self.block_if_future_closing_voucher_exists()
self.db_set("gle_processing_status", "In Progress")
self.cancel_gl_entries()
@@ -205,8 +212,10 @@ class PeriodClosingVoucher(AccountsController):
return gl_entry
def get_gle_for_closing_account(self, dimension_balance, dimensions):
balance_in_account_currency = flt(dimension_balance.balance_in_account_currency)
balance_in_company_currency = flt(dimension_balance.balance_in_company_currency)
debit = balance_in_company_currency if balance_in_company_currency > 0 else 0
credit = abs(balance_in_company_currency) if balance_in_company_currency < 0 else 0
gl_entry = frappe._dict(
{
"company": self.company,
@@ -215,14 +224,10 @@ class PeriodClosingVoucher(AccountsController):
"account_currency": frappe.db.get_value(
"Account", self.closing_account_head, "account_currency"
),
"debit_in_account_currency": balance_in_account_currency
if balance_in_account_currency > 0
else 0,
"debit": balance_in_company_currency if balance_in_company_currency > 0 else 0,
"credit_in_account_currency": abs(balance_in_account_currency)
if balance_in_account_currency < 0
else 0,
"credit": abs(balance_in_company_currency) if balance_in_company_currency < 0 else 0,
"debit_in_account_currency": debit,
"debit": debit,
"credit_in_account_currency": credit,
"credit": credit,
"is_period_closing_voucher_entry": 1,
"voucher_type": "Period Closing Voucher",
"voucher_no": self.name,

View File

@@ -14,6 +14,7 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex
}
company() {
erpnext.utils.set_letter_head(this.frm);
erpnext.accounts.dimensions.update_dimension(this.frm, this.frm.doctype);
this.frm.set_value("set_warehouse", "");
this.frm.set_value("taxes_and_charges", "");
@@ -54,6 +55,16 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex
});
erpnext.accounts.dimensions.setup_dimension_filters(this.frm, this.frm.doctype);
if (this.frm.doc.pos_profile) {
frappe.db
.get_value("POS Profile", this.frm.doc.pos_profile, "disable_grand_total_to_default_mop")
.then((r) => {
if (!r.exc) {
this.frm.skip_default_payment = r.message.disable_grand_total_to_default_mop;
}
});
}
}
onload_post_render(frm) {
@@ -112,6 +123,7 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex
this.frm.meta.default_print_format = r.message.print_format || "";
this.frm.doc.campaign = r.message.campaign;
this.frm.allow_print_before_pay = r.message.allow_print_before_pay;
this.frm.skip_default_payment = r.message.skip_default_payment;
}
this.frm.script_manager.trigger("update_stock");
this.calculate_taxes_and_totals();
@@ -323,3 +335,15 @@ frappe.ui.form.on("POS Invoice", {
});
},
});
frappe.ui.form.on("Sales Invoice Payment", {
mode_of_payment: function (frm) {
frappe.call({
doc: frm.doc,
method: "set_account_for_mode_of_payment",
callback: function (r) {
refresh_field("payments");
},
});
},
});

View File

@@ -62,6 +62,7 @@
"items_section",
"update_stock",
"scan_barcode",
"last_scanned_warehouse",
"items",
"pricing_rule_details",
"pricing_rules",
@@ -301,6 +302,7 @@
"search_index": 1
},
{
"default": "Now",
"fieldname": "posting_time",
"fieldtype": "Time",
"label": "Posting Time",
@@ -1443,6 +1445,8 @@
"width": "50%"
},
{
"fetch_from": "sales_partner.commission_rate",
"fetch_if_empty": 1,
"fieldname": "commission_rate",
"fieldtype": "Float",
"label": "Commission Rate (%)",
@@ -1566,12 +1570,19 @@
"label": "Company Contact Person",
"options": "Contact",
"print_hide": 1
},
{
"depends_on": "eval: doc.last_scanned_warehouse",
"fieldname": "last_scanned_warehouse",
"fieldtype": "Data",
"is_virtual": 1,
"label": "Last Scanned Warehouse"
}
],
"icon": "fa fa-file-text",
"is_submittable": 1,
"links": [],
"modified": "2024-11-26 13:10:50.309570",
"modified": "2025-08-04 22:22:31.471752",
"modified_by": "Administrator",
"module": "Accounts",
"name": "POS Invoice",

View File

@@ -216,6 +216,7 @@ class POSInvoice(SalesInvoice):
self.validate_loyalty_transaction()
self.validate_company_with_pos_company()
self.validate_full_payment()
self.update_packing_list()
if self.coupon_code:
from erpnext.accounts.doctype.pricing_rule.utils import validate_coupon_code
@@ -273,6 +274,8 @@ class POSInvoice(SalesInvoice):
against_psi_doc.delete_loyalty_point_entry()
against_psi_doc.make_loyalty_point_entry()
self.db_set("status", "Cancelled")
if self.coupon_code:
from erpnext.accounts.doctype.pricing_rule.utils import update_coupon_code_count
@@ -365,9 +368,9 @@ class POSInvoice(SalesInvoice):
)
elif is_stock_item and flt(available_stock) < flt(d.stock_qty):
frappe.throw(
_(
"Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}. Available quantity {}."
).format(d.idx, item_code, warehouse, available_stock),
_("Row #{}: Stock quantity not enough for Item Code: {} under warehouse {}.").format(
d.idx, item_code, warehouse
),
title=_("Item Unavailable"),
)
@@ -497,8 +500,11 @@ class POSInvoice(SalesInvoice):
def validate_full_payment(self):
invoice_total = flt(self.rounded_total) or flt(self.grand_total)
is_partial_payment_allowed = frappe.db.get_value(
"POS Profile", self.pos_profile, "allow_partial_payment"
)
if self.docstatus == 1:
if self.docstatus == 1 and not is_partial_payment_allowed:
if self.is_return and self.paid_amount != invoice_total:
frappe.throw(
msg=_("Partial Payment in POS Invoice is not allowed."), exc=PartialPaymentValidationError
@@ -662,7 +668,13 @@ class POSInvoice(SalesInvoice):
"Account", self.debit_to, "account_currency"
)
if not self.due_date and self.customer:
self.due_date = get_due_date(self.posting_date, "Customer", self.customer, self.company)
self.due_date = get_due_date(
self.posting_date,
"Customer",
self.customer,
self.company,
template_name=self.payment_terms_template,
)
super(SalesInvoice, self).set_missing_values(for_validate)
@@ -675,6 +687,7 @@ class POSInvoice(SalesInvoice):
"print_format": print_format,
"campaign": profile.get("campaign"),
"allow_print_before_pay": profile.get("allow_print_before_pay"),
"skip_default_payment": profile.get("disable_grand_total_to_default_mop"),
}
@frappe.whitelist()
@@ -769,10 +782,8 @@ def get_bundle_availability(bundle_item_code, warehouse):
bundle_bin_qty = 1000000
for item in product_bundle.items:
item_bin_qty = get_bin_qty(item.item_code, warehouse)
item_pos_reserved_qty = get_pos_reserved_qty(item.item_code, warehouse)
available_qty = item_bin_qty - item_pos_reserved_qty
max_available_bundles = available_qty / item.qty
max_available_bundles = item_bin_qty / item.qty
if bundle_bin_qty > max_available_bundles and frappe.get_value(
"Item", item.item_code, "is_stock_item"
):
@@ -795,13 +806,49 @@ def get_bin_qty(item_code, warehouse):
def get_pos_reserved_qty(item_code, warehouse):
"""
Calculate total quantity reserved for the given item and warehouse.
Includes:
- Direct sales of the item in submitted POS Invoices
- Sales of the item as a component of a Product Bundle
Excludes consolidated invoices (already merged into Sales Invoices via
POS Closing Entry). Used to reflect near real-time availability in the
POS UI and to prevent overselling while multiple sessions may be active.
"""
pinv_item_reserved_qty = get_pos_reserved_qty_from_table("POS Invoice Item", item_code, warehouse)
packed_item_reserved_qty = get_pos_reserved_qty_from_table("Packed Item", item_code, warehouse)
reserved_qty = pinv_item_reserved_qty + packed_item_reserved_qty
return reserved_qty
def get_pos_reserved_qty_from_table(child_table, item_code, warehouse):
"""
Get the total reserved quantity for a given item in POS Invoices
from a specific child table.
Args:
child_table (str): Name of the child table to query
(e.g., "POS Invoice Item", "Packed Item").
item_code (str): The Item Code to filter by.
warehouse (str): The Warehouse to filter by.
Returns:
float: The total reserved quantity for the item in the given
warehouse from submitted, unconsolidated POS Invoices.
"""
p_inv = frappe.qb.DocType("POS Invoice")
p_item = frappe.qb.DocType("POS Invoice Item")
p_item = frappe.qb.DocType(child_table)
qty_column = "qty" if child_table == "Packed Item" else "stock_qty"
reserved_qty = (
frappe.qb.from_(p_inv)
.from_(p_item)
.select(Sum(p_item.stock_qty).as_("stock_qty"))
.select(Sum(p_item[qty_column]).as_("stock_qty"))
.where(
(p_inv.name == p_item.parent)
& (IfNull(p_inv.consolidated_invoice, "") == "")

View File

@@ -7,6 +7,9 @@ import unittest
import frappe
from frappe import _
from erpnext.accounts.doctype.mode_of_payment.test_mode_of_payment import (
set_default_account_for_mode_of_payment,
)
from erpnext.accounts.doctype.pos_invoice.pos_invoice import PartialPaymentValidationError, make_sales_return
from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
@@ -31,6 +34,8 @@ class TestPOSInvoice(unittest.TestCase):
cls.test_user, cls.pos_profile = init_user_and_profile()
create_opening_entry(cls.pos_profile, cls.test_user)
mode_of_payment = frappe.get_doc("Mode of Payment", "Bank Draft")
set_default_account_for_mode_of_payment(mode_of_payment, "_Test Company", "_Test Bank - _TC")
def tearDown(self):
if frappe.session.user != "Administrator":
@@ -233,12 +238,8 @@ class TestPOSInvoice(unittest.TestCase):
pos = create_pos_invoice(qty=10, do_not_save=True)
pos.set("payments", [])
pos.append(
"payments", {"mode_of_payment": "Bank Draft", "account": "_Test Bank - _TC", "amount": 500}
)
pos.append(
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 500, "default": 1}
)
pos.append("payments", {"mode_of_payment": "Bank Draft", "amount": 500})
pos.append("payments", {"mode_of_payment": "Cash", "amount": 500, "default": 1})
pos.insert()
pos.submit()
@@ -276,9 +277,7 @@ class TestPOSInvoice(unittest.TestCase):
do_not_save=1,
)
pos.append(
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 1000, "default": 1}
)
pos.append("payments", {"mode_of_payment": "Cash", "amount": 1000, "default": 1})
pos.insert()
pos.submit()
@@ -318,9 +317,7 @@ class TestPOSInvoice(unittest.TestCase):
do_not_save=1,
)
pos.append(
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2000, "default": 1}
)
pos.append("payments", {"mode_of_payment": "Cash", "amount": 2000, "default": 1})
pos.insert()
pos.submit()
@@ -331,9 +328,7 @@ class TestPOSInvoice(unittest.TestCase):
# partial return 1
pos_return1.get("items")[0].qty = -1
pos_return1.set("payments", [])
pos_return1.append(
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": -1000, "default": 1}
)
pos_return1.append("payments", {"mode_of_payment": "Cash", "amount": -1000, "default": 1})
pos_return1.paid_amount = -1000
pos_return1.submit()
pos_return1.reload()
@@ -350,9 +345,7 @@ class TestPOSInvoice(unittest.TestCase):
# partial return 2
pos_return2 = make_sales_return(pos.name)
pos_return2.set("payments", [])
pos_return2.append(
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": -1000, "default": 1}
)
pos_return2.append("payments", {"mode_of_payment": "Cash", "amount": -1000, "default": 1})
pos_return2.paid_amount = -1000
pos_return2.submit()
@@ -372,10 +365,8 @@ class TestPOSInvoice(unittest.TestCase):
)
pos.set("payments", [])
pos.append("payments", {"mode_of_payment": "Bank Draft", "account": "_Test Bank - _TC", "amount": 50})
pos.append(
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 60, "default": 1}
)
pos.append("payments", {"mode_of_payment": "Bank Draft", "amount": 50})
pos.append("payments", {"mode_of_payment": "Cash", "amount": 60, "default": 1})
pos.insert()
pos.submit()
@@ -393,7 +384,7 @@ class TestPOSInvoice(unittest.TestCase):
pos_inv = create_pos_invoice(rate=10000, do_not_save=1)
pos_inv.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 9000},
{"mode_of_payment": "Cash", "amount": 9000},
)
pos_inv.insert()
self.assertRaises(PartialPaymentValidationError, pos_inv.submit)
@@ -424,9 +415,7 @@ class TestPOSInvoice(unittest.TestCase):
do_not_save=1,
)
pos.append(
"payments", {"mode_of_payment": "Bank Draft", "account": "_Test Bank - _TC", "amount": 1000}
)
pos.append("payments", {"mode_of_payment": "Bank Draft", "amount": 1000})
pos.insert()
pos.submit()
@@ -445,9 +434,7 @@ class TestPOSInvoice(unittest.TestCase):
do_not_save=1,
)
pos2.append(
"payments", {"mode_of_payment": "Bank Draft", "account": "_Test Bank - _TC", "amount": 1000}
)
pos2.append("payments", {"mode_of_payment": "Bank Draft", "amount": 1000})
pos2.insert()
self.assertRaises(frappe.ValidationError, pos2.submit)
@@ -496,9 +483,7 @@ class TestPOSInvoice(unittest.TestCase):
do_not_save=1,
)
pos2.append(
"payments", {"mode_of_payment": "Bank Draft", "account": "_Test Bank - _TC", "amount": 1000}
)
pos2.append("payments", {"mode_of_payment": "Bank Draft", "amount": 1000})
pos2.insert()
self.assertRaises(frappe.ValidationError, pos2.submit)
@@ -561,9 +546,7 @@ class TestPOSInvoice(unittest.TestCase):
)
pos.get("items")[0].has_serial_no = 1
pos.set("payments", [])
pos.append(
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 1000, "default": 1}
)
pos.append("payments", {"mode_of_payment": "Cash", "amount": 1000, "default": 1})
pos = pos.save().submit()
# make a return
@@ -609,7 +592,7 @@ class TestPOSInvoice(unittest.TestCase):
inv = create_pos_invoice(customer="Test Loyalty Customer", rate=10000, do_not_save=1)
inv.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 10000},
{"mode_of_payment": "Cash", "amount": 10000},
)
inv.insert()
inv.submit()
@@ -641,7 +624,7 @@ class TestPOSInvoice(unittest.TestCase):
pos_inv = create_pos_invoice(customer="Test Loyalty Customer", rate=10000, do_not_save=1)
pos_inv.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 10000},
{"mode_of_payment": "Cash", "amount": 10000},
)
pos_inv.paid_amount = 10000
pos_inv.submit()
@@ -656,7 +639,7 @@ class TestPOSInvoice(unittest.TestCase):
inv.loyalty_amount = inv.loyalty_points * before_lp_details.conversion_factor
inv.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 10000 - inv.loyalty_amount},
{"mode_of_payment": "Cash", "amount": 10000 - inv.loyalty_amount},
)
inv.paid_amount = 10000
inv.submit()
@@ -677,12 +660,12 @@ class TestPOSInvoice(unittest.TestCase):
frappe.db.sql("delete from `tabPOS Invoice`")
test_user, pos_profile = init_user_and_profile()
pos_inv = create_pos_invoice(rate=300, additional_discount_percentage=10, do_not_submit=1)
pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 270})
pos_inv.append("payments", {"mode_of_payment": "Cash", "amount": 270})
pos_inv.save()
pos_inv.submit()
pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1)
pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200})
pos_inv2.append("payments", {"mode_of_payment": "Cash", "amount": 3200})
pos_inv2.save()
pos_inv2.submit()
@@ -703,7 +686,7 @@ class TestPOSInvoice(unittest.TestCase):
frappe.db.sql("delete from `tabPOS Invoice`")
test_user, pos_profile = init_user_and_profile()
pos_inv = create_pos_invoice(rate=300, do_not_submit=1)
pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 300})
pos_inv.append("payments", {"mode_of_payment": "Cash", "amount": 300})
pos_inv.append(
"taxes",
{
@@ -720,7 +703,7 @@ class TestPOSInvoice(unittest.TestCase):
pos_inv2 = create_pos_invoice(rate=300, qty=2, do_not_submit=1)
pos_inv2.additional_discount_percentage = 10
pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 540})
pos_inv2.append("payments", {"mode_of_payment": "Cash", "amount": 540})
pos_inv2.append(
"taxes",
{
@@ -758,7 +741,7 @@ class TestPOSInvoice(unittest.TestCase):
frappe.db.sql("delete from `tabPOS Invoice`")
test_user, pos_profile = init_user_and_profile()
pos_inv = create_pos_invoice(item=item, rate=300, do_not_submit=1)
pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 300})
pos_inv.append("payments", {"mode_of_payment": "Cash", "amount": 300})
pos_inv.append(
"taxes",
{
@@ -773,7 +756,7 @@ class TestPOSInvoice(unittest.TestCase):
self.assertRaises(frappe.ValidationError, pos_inv.submit)
pos_inv2 = create_pos_invoice(item=item, rate=400, do_not_submit=1)
pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 400})
pos_inv2.append("payments", {"mode_of_payment": "Cash", "amount": 400})
pos_inv2.append(
"taxes",
{
@@ -818,7 +801,7 @@ class TestPOSInvoice(unittest.TestCase):
pos_inv1 = create_pos_invoice(item="_BATCH ITEM Test For Reserve", rate=300, qty=15, do_not_save=1)
pos_inv1.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 4500},
{"mode_of_payment": "Cash", "amount": 4500},
)
pos_inv1.items[0].batch_no = batch_no
pos_inv1.save()
@@ -839,7 +822,7 @@ class TestPOSInvoice(unittest.TestCase):
)
pos_inv2.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3000},
{"mode_of_payment": "Cash", "amount": 3000},
)
pos_inv2.save()
pos_inv2.submit()
@@ -879,7 +862,7 @@ class TestPOSInvoice(unittest.TestCase):
)
pos_inv1.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 300},
{"mode_of_payment": "Cash", "amount": 300},
)
pos_inv1.save()
pos_inv1.submit()
@@ -1088,10 +1071,3 @@ def create_pos_invoice(**args):
pos_inv.payment_schedule = []
return pos_inv
def make_batch_item(item_name):
from erpnext.stock.doctype.item.test_item import make_item
if not frappe.db.exists(item_name):
return make_item(item_name, dict(has_batch_no=1, create_new_batch=1, is_stock_item=1))

View File

@@ -37,6 +37,7 @@
"column_break_19",
"discount_percentage",
"discount_amount",
"distributed_discount_amount",
"base_rate_with_margin",
"section_break1",
"rate",
@@ -847,11 +848,17 @@
{
"fieldname": "column_break_ciit",
"fieldtype": "Column Break"
},
{
"fieldname": "distributed_discount_amount",
"fieldtype": "Currency",
"label": "Distributed Discount Amount",
"options": "currency"
}
],
"istable": 1,
"links": [],
"modified": "2024-05-07 15:56:53.343317",
"modified": "2024-05-07 15:56:54.343317",
"modified_by": "Administrator",
"module": "Accounts",
"name": "POS Invoice Item",

View File

@@ -39,6 +39,7 @@ class POSInvoiceItem(Document):
description: DF.TextEditor
discount_amount: DF.Currency
discount_percentage: DF.Percent
distributed_discount_amount: DF.Currency
dn_detail: DF.Data | None
enable_deferred_revenue: DF.Check
expense_account: DF.Link | None

View File

@@ -5,6 +5,7 @@
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"company",
"posting_date",
"posting_time",
"merge_invoices_based_on",
@@ -113,12 +114,22 @@
"label": "Posting Time",
"no_copy": 1,
"reqd": 1
},
{
"fieldname": "company",
"fieldtype": "Link",
"in_standard_filter": 1,
"label": "Company",
"options": "Company",
"print_hide": 1,
"remember_last_selected_value": 1,
"reqd": 1
}
],
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [],
"modified": "2022-08-01 11:36:42.456429",
"modified": "2025-07-02 17:08:04.747202",
"modified_by": "Administrator",
"module": "Accounts",
"name": "POS Invoice Merge Log",
@@ -179,8 +190,9 @@
"write": 1
}
],
"sort_field": "modified",
"row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "DESC",
"states": [],
"track_changes": 1
}
}

View File

@@ -2,6 +2,7 @@
# For license information, please see license.txt
import hashlib
import json
import frappe
@@ -27,11 +28,10 @@ class POSInvoiceMergeLog(Document):
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.pos_invoice_reference.pos_invoice_reference import (
POSInvoiceReference,
)
from erpnext.accounts.doctype.pos_invoice_reference.pos_invoice_reference import POSInvoiceReference
amended_from: DF.Link | None
company: DF.Link
consolidated_credit_note: DF.Link | None
consolidated_invoice: DF.Link | None
customer: DF.Link
@@ -257,6 +257,7 @@ class POSInvoiceMergeLog(Document):
if not found:
tax.charge_type = "Actual"
tax.idx = idx
tax.row_id = None
idx += 1
tax.included_in_print_rate = 0
tax.tax_amount = tax.tax_amount_after_discount_amount
@@ -302,10 +303,17 @@ class POSInvoiceMergeLog(Document):
accounting_dimensions = get_checks_for_pl_and_bs_accounts()
accounting_dimensions_fields = [d.fieldname for d in accounting_dimensions]
dimension_values = frappe.db.get_value(
"POS Profile", {"name": invoice.pos_profile}, accounting_dimensions_fields, as_dict=1
"POS Profile",
{"name": invoice.pos_profile},
[*accounting_dimensions_fields, "cost_center", "project"],
as_dict=1,
)
for dimension in accounting_dimensions:
dimension_value = dimension_values.get(dimension.fieldname)
dimension_value = (
data[0].get(dimension.fieldname)
if data[0].get(dimension.fieldname)
else dimension_values.get(dimension.fieldname)
)
if not dimension_value and (dimension.mandatory_for_pl or dimension.mandatory_for_bs):
frappe.throw(
@@ -317,10 +325,23 @@ class POSInvoiceMergeLog(Document):
invoice.set(dimension.fieldname, dimension_value)
invoice.set(
"cost_center",
data[0].get("cost_center") if data[0].get("cost_center") else dimension_values.get("cost_center"),
)
invoice.set(
"project", data[0].get("project") if data[0].get("project") else dimension_values.get("project")
)
if self.merge_invoices_based_on == "Customer Group":
invoice.flags.ignore_pos_profile = True
invoice.pos_profile = ""
# Unset Commission Section
invoice.set("sales_partner", None)
invoice.set("commission_rate", 0)
invoice.set("total_commission", 0)
return invoice
def get_new_sales_invoice(self):
@@ -336,7 +357,7 @@ class POSInvoiceMergeLog(Document):
for doc in invoice_docs:
doc.load_from_db()
inv = sales_invoice
if doc.is_return:
if doc.is_return and credit_notes:
for key, value in credit_notes.items():
if doc.name in value:
inv = key
@@ -446,9 +467,34 @@ def get_invoice_customer_map(pos_invoices):
pos_invoice_customer_map.setdefault(customer, [])
pos_invoice_customer_map[customer].append(invoice)
for customer, invoices in pos_invoice_customer_map.items():
pos_invoice_customer_map[customer] = split_invoices_by_accounting_dimension(invoices)
return pos_invoice_customer_map
def split_invoices_by_accounting_dimension(pos_invoices):
# pos_invoices = {
# {'dim_field1': 'dim_field1_value1', 'dim_field2': 'dim_field2_value1'}: [],
# {'dim_field1': 'dim_field1_value2', 'dim_field2': 'dim_field2_value1'}: []
# }
pos_invoice_accounting_dimensions_map = {}
for invoice in pos_invoices:
dimension_fields = [d.fieldname for d in get_checks_for_pl_and_bs_accounts()]
accounting_dimensions = frappe.db.get_value(
"POS Invoice", invoice.pos_invoice, [*dimension_fields, "cost_center", "project"], as_dict=1
)
accounting_dimensions_dic_hash = hashlib.sha256(
json.dumps(accounting_dimensions).encode()
).hexdigest()
pos_invoice_accounting_dimensions_map.setdefault(accounting_dimensions_dic_hash, [])
pos_invoice_accounting_dimensions_map[accounting_dimensions_dic_hash].append(invoice)
return pos_invoice_accounting_dimensions_map
def consolidate_pos_invoices(pos_invoices=None, closing_entry=None):
invoices = pos_invoices or (closing_entry and closing_entry.get("pos_transactions"))
if frappe.flags.in_test and not invoices:
@@ -532,20 +578,22 @@ def split_invoices(invoices):
def create_merge_logs(invoice_by_customer, closing_entry=None):
try:
for customer, invoices in invoice_by_customer.items():
for _invoices in split_invoices(invoices):
merge_log = frappe.new_doc("POS Invoice Merge Log")
merge_log.posting_date = (
getdate(closing_entry.get("posting_date")) if closing_entry else nowdate()
)
merge_log.posting_time = (
get_time(closing_entry.get("posting_time")) if closing_entry else nowtime()
)
merge_log.customer = customer
merge_log.pos_closing_entry = closing_entry.get("name") if closing_entry else None
merge_log.set("pos_invoices", _invoices)
merge_log.save(ignore_permissions=True)
merge_log.submit()
for customer, invoices_acc_dim in invoice_by_customer.items():
for invoices in invoices_acc_dim.values():
for _invoices in split_invoices(invoices):
merge_log = frappe.new_doc("POS Invoice Merge Log")
merge_log.posting_date = (
getdate(closing_entry.get("posting_date")) if closing_entry else nowdate()
)
merge_log.posting_time = (
get_time(closing_entry.get("posting_time")) if closing_entry else nowtime()
)
merge_log.company = closing_entry.get("company") if closing_entry else None
merge_log.customer = customer
merge_log.pos_closing_entry = closing_entry.get("name") if closing_entry else None
merge_log.set("pos_invoices", _invoices)
merge_log.save(ignore_permissions=True)
merge_log.submit()
if closing_entry:
closing_entry.set_status(update=True, status="Submitted")
closing_entry.db_set("error_message", "")

View File

@@ -455,3 +455,58 @@ class TestPOSInvoiceMergeLog(unittest.TestCase):
frappe.set_user("Administrator")
frappe.db.sql("delete from `tabPOS Profile`")
frappe.db.sql("delete from `tabPOS Invoice`")
def test_separate_consolidated_invoice_for_different_accounting_dimensions(self):
"""
Creating 3 POS Invoices where first POS Invoice has different Cost Center than the other two.
Consolidate the Invoices.
Check whether the first POS Invoice is consolidated with a separate Sales Invoice than the other two.
Check whether the second and third POS Invoice are consolidated with the same Sales Invoice.
"""
from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center
frappe.db.sql("delete from `tabPOS Invoice`")
create_cost_center(cost_center_name="_Test POS Cost Center 1", is_group=0)
create_cost_center(cost_center_name="_Test POS Cost Center 2", is_group=0)
try:
test_user, pos_profile = init_user_and_profile()
pos_inv = create_pos_invoice(rate=300, do_not_submit=1)
pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 300})
pos_inv.cost_center = "_Test POS Cost Center 1 - _TC"
pos_inv.save()
pos_inv.submit()
pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1)
pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200})
pos_inv.cost_center = "_Test POS Cost Center 2 - _TC"
pos_inv2.save()
pos_inv2.submit()
pos_inv3 = create_pos_invoice(rate=2300, do_not_submit=1)
pos_inv3.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2300})
pos_inv.cost_center = "_Test POS Cost Center 2 - _TC"
pos_inv3.save()
pos_inv3.submit()
consolidate_pos_invoices()
pos_inv.load_from_db()
self.assertTrue(frappe.db.exists("Sales Invoice", pos_inv.consolidated_invoice))
pos_inv2.load_from_db()
self.assertTrue(frappe.db.exists("Sales Invoice", pos_inv2.consolidated_invoice))
self.assertFalse(pos_inv.consolidated_invoice == pos_inv3.consolidated_invoice)
pos_inv3.load_from_db()
self.assertTrue(frappe.db.exists("Sales Invoice", pos_inv3.consolidated_invoice))
self.assertTrue(pos_inv2.consolidated_invoice == pos_inv3.consolidated_invoice)
finally:
frappe.set_user("Administrator")
frappe.db.sql("delete from `tabPOS Profile`")
frappe.db.sql("delete from `tabPOS Invoice`")

View File

@@ -135,6 +135,7 @@ frappe.ui.form.on("POS Profile", {
company: function (frm) {
frm.trigger("toggle_display_account_head");
erpnext.accounts.dimensions.update_dimension(frm, frm.doctype);
erpnext.utils.set_letter_head(frm);
},
toggle_display_account_head: function (frm) {

View File

@@ -30,6 +30,7 @@
"allow_rate_change",
"allow_discount_change",
"disable_grand_total_to_default_mop",
"allow_partial_payment",
"section_break_23",
"item_groups",
"column_break_25",
@@ -56,7 +57,8 @@
"apply_discount_on",
"accounting_dimensions_section",
"cost_center",
"dimension_col_break"
"dimension_col_break",
"project"
],
"fields": [
{
@@ -389,6 +391,20 @@
"fieldname": "disable_grand_total_to_default_mop",
"fieldtype": "Check",
"label": "Disable auto setting Grand Total to default Payment Mode"
},
{
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
"oldfieldname": "cost_center",
"oldfieldtype": "Link",
"options": "Project"
},
{
"default": "0",
"fieldname": "allow_partial_payment",
"fieldtype": "Check",
"label": "Allow Partial Payment"
}
],
"icon": "icon-cog",
@@ -416,7 +432,7 @@
"link_fieldname": "pos_profile"
}
],
"modified": "2025-01-29 13:12:30.796630",
"modified": "2025-04-14 15:58:20.497426",
"modified_by": "Administrator",
"module": "Accounts",
"name": "POS Profile",
@@ -442,7 +458,8 @@
"role": "Accounts User"
}
],
"sort_field": "modified",
"row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "DESC",
"states": []
}

View File

@@ -29,6 +29,7 @@ class POSProfile(Document):
account_for_change_amount: DF.Link | None
allow_discount_change: DF.Check
allow_partial_payment: DF.Check
allow_rate_change: DF.Check
applicable_for_users: DF.Table[POSProfileUser]
apply_discount_on: DF.Literal["Grand Total", "Net Total"]
@@ -54,6 +55,7 @@ class POSProfile(Document):
payments: DF.Table[POSPaymentMethod]
print_format: DF.Link | None
print_receipt_on_order_complete: DF.Check
project: DF.Link | None
select_print_heading: DF.Link | None
selling_price_list: DF.Link | None
tax_category: DF.Link | None

Some files were not shown because too many files have changed in this diff Show More